KENT-WEB サポートコーナー 過去ログ [ 0301 ]


記事No: 8064
投稿日: 2010/10/26(Tue) 09:05:59
タイトルPasswordManagerのユーザー登録をUTF-8で…
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

PasswordManagerのユーザー登録を
UTF-8のページから行わせたいと考えております。

現在、文字コードがUTF-8のHTMLページから登録しますと
名前部分が文字化けを起こしてしまいます。

解決策、対応策はありませんでしょうか?

よろしくお願いいたします。


記事No: 8065
投稿日: 2010/10/26(Tue) 13:12:34
タイトルRe: PasswordManagerのユーザー登録をUTF-8で…
ID情報: hirayama
投稿者: 平山

PasswordManagerで使用されているjcode.plはutf-8に対応していないので、
Jcode.pmを使用するように変更した上で、
UTF-8のページから受け取ったデータをutf-8から
PasswordManagerで使用されているsjisに変換すればいいと思います。


記事No: 8066
投稿日: 2010/10/26(Tue) 14:44:40
タイトルRe^2: PasswordManagerのユーザー登録をUTF-8で…
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

平山様、上野です。
ご回答誠にありがとうございます。

> PasswordManagerで使用されているjcode.plはutf-8に対応していないので、
> Jcode.pmを使用するように変更した上で、
> UTF-8のページから受け取ったデータをutf-8から
> PasswordManagerで使用されているsjisに変換すればいいと思います。

申し訳ございません、
せっかくご回答いただいたのですが、
プログラムに関しましてまだ勉強不足でございまして、
どのように、「Jcode.pmを使用するように変更」すればいいのか、
まったくピンときておりません。

大変恐れ入りますが、
より詳細な方法をお教えいただくことはできませんでしょうか?

お手数をおかけいたしますが、
お知恵をお貸しいただけますと幸いです。

なにとぞよろしくお願いいたします。


記事No: 8067
投稿日: 2010/10/26(Tue) 16:58:05
タイトルRe^3: PasswordManagerのユーザー登録をUTF-8で…
ID情報: kent
投稿者: KENT

> どのように、「Jcode.pmを使用するように変更」すればいいのか、
> まったくピンときておりません。
>
> 大変恐れ入りますが、
> より詳細な方法をお教えいただくことはできませんでしょうか?

UTFに変更するには、いくつか作業が必要ですね。

(1)全てのプログラムの文字コードを、エディタ等でUTF-8に変更する。
(2)Jcode.pmへの変更は、当該サーバにて使用できることをプロバイダへ確認する。

require './jcode.pl';

という箇所を、

use Jcode;

に変更。さらに、

&jcode'convert(*val, 'sjis');

という箇所があれば、

Jcode::convert(\$val, 'utf8');

に変更。

(3)metaタグの変更
プログラム中、

<meta http-equiv="content-type" content="text/html; charset=shift_jis">

という箇所を

<meta http-equiv="content-type" content="text/html; charset=utf-8">

に変更する。


記事No: 8068
投稿日: 2010/10/26(Tue) 21:29:26
タイトルRe^4: PasswordManagerのユーザー登録をUTF-8で…
ID情報: hirayama
投稿者: 平山

kentさんの方法は、PasswordManagerそのものをutf-8に変更するというものですが、
私のは、登録ページのみutf-8の場合ということで、プログラム側の文字コードはそのままです。
上野さんの場合は、どちらの方法が向いているのかよくわかりませんが、
登録ページのみutf-8でいいということなら、
init.cgiの117ページあたりに
use Jcode;
Jcode::convert(\$in{'name'}, 'sjis');
を追加するだけで、済みそうです。


記事No: 8069
投稿日: 2010/10/27(Wed) 01:11:44
タイトルRe^5: PasswordManagerのユーザー登録をUTF-8で…
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

平山様、ご回答誠にありがとうございます。

> kentさんの方法は、PasswordManagerそのものをutf-8に変更するというものですが、
> 私のは、登録ページのみutf-8の場合ということで、プログラム側の文字コードはそのままです。
> 上野さんの場合は、どちらの方法が向いているのかよくわかりませんが、
> 登録ページのみutf-8でいいということなら、
> init.cgiの117ページあたりに
> use Jcode;
> Jcode::convert(\$in{'name'}, 'sjis');
> を追加するだけで、済みそうです。

登録ページのみUTF-8で問題ないので、
お教えいただいた方法でやってみようかと思ったのですが、

init.cgiの117行目付近に追加といいますと、
以下のような形でよいのでしょうか?

−−−−−−−−−−−−−−−−−−−−−−−
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
}
$page = $in{'page'};
$mode = $in{'mode'};

use Jcode;
Jcode::convert(\$in{'name'}, 'sjis');

$lockflag = 0;
$headflag = 0;
}
−−−−−−−−−−−−−−−−−−−−−−−

しかし、上記のように設定しましても、
文字化けは解消されませんでした。

何か根本的に間違っておりますでしょうか?

引き続きとなりますが、
お知恵をお貸しいただけると幸いです。

どうぞよろしくお願い致します。


記事No: 8071
投稿日: 2010/10/27(Wed) 12:04:04
タイトルRe^6: PasswordManagerのユーザー登録をUTF-8で…
ID情報: hirayama
投稿者: 平山

> init.cgiの117行目付近に追加といいますと、
> 以下のような形でよいのでしょうか?
>
> −−−−−−−−−−−−−−−−−−−−−−−
> $in{$key} .= "\0" if (defined($in{$key}));
> $in{$key} .= $val;
> }
> $page = $in{'page'};
> $mode = $in{'mode'};
>
> use Jcode;
> Jcode::convert(\$in{'name'}, 'sjis');
>
> $lockflag = 0;
> $headflag = 0;
> }
> −−−−−−−−−−−−−−−−−−−−−−−
>
> しかし、上記のように設定しましても、
> 文字化けは解消されませんでした。

変更箇所はそれで大丈夫です。

文字化けが解消されないなら
Jcode::convert(\$in{'name'}, 'sjis'); の行を

Jcode::convert(\$in{'name'}, 'sjis','utf8');

と変更してみてください。


記事No: 8073
投稿日: 2010/10/27(Wed) 17:46:15
タイトル【解決しました】ありがとうございます
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

平山様、ご回答誠にありがとうございます。

お教えいただいた通りに修正を加えましたところ、
無事にテスト登録で文字化けが起こらなくなりました!

誠にありがとうございます。

このままテスト稼働をさせて
様子を見てみます。

お忙しい中、ご協力いただき、誠にありがとうございました。

今後ともよろしくお願いいたします。


記事No: 8075
投稿日: 2010/10/27(Wed) 19:51:44
タイトルRe: 【解決しました】ありがとうございます
ID情報: hirayama
投稿者: 平山

すみません。一点見落としていたところがあるので、今回の変更箇所をさらに
以下のように修正してください。

if ($in{'mode'} eq 'newUser' || $in{'mode'} eq 'chgUser' || $in{'mode'} eq 'delUser') {
eval 'use Jcode;';
Jcode::convert(\$in{'name'}, 'sjis','utf8');
}

前回の修正のままだと、管理者ページでユーザーデータを修正したときに名前が文字化けしてしまうので、
ユーザーからの登録、修正時のみ、utf-8変換を行うためです。


記事No: 8076
投稿日: 2010/10/28(Thu) 08:42:42
タイトルRe^2: 【解決しました】ありがとうございます
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

平山様、書き込みありがとうございます。

> すみません。一点見落としていたところがあるので、今回の変更箇所をさらに
> 以下のように修正してください。

承知いたしました。
早速修正させていただきました。

再チェックと修正コード、本当に感謝致します。
誠にありがとうございました。

今後ともよろしくお願いいたします。

上野


記事No: 8077
投稿日: 2010/10/28(Thu) 11:45:33
タイトル再度質問をさせてください
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

平山様

いつも大変お世話になっております。

再度、質問をさせていただいてもよろしいでしょうか?


・文字コードがUTF-8のページ
・文字コードがEUCのページ

このそれぞれ異なる文字コードの別ページから、
文字化けさせずに1つPasswordManagerへ登録をさせたいのですが、
不可能でしょうか?


どうぞよろしくお願いいたします。


【追記】

もしくは、上記のようなことが不可能であれば、
別ディレクトリにPasswordManagerの本体ファイルをそれぞれアップして、
共通の.htpasswdを利用すれば可能でしょうか?


記事No: 8079
投稿日: 2010/10/28(Thu) 16:40:25
タイトルRe: 再度質問をさせてください
ID情報: hirayama
投稿者: 平山

どうも文字コードの判別がうまくいかないようなので、
フォームから文字コード情報を送るのが間違いないようです。

具体的には、utf-8の送信フォーム内に
<input type=hidden name=code value="utf8">
というようなタグを追加します。新規メンバー登録のフォームだけでいいです。
場所は<form>タグの下あたりがいいでしょう。
そして initi.cgi sub decode内の

if ($in{'mode'} eq 'newUser' || $in{'mode'} eq 'chgUser' || $in{'mode'} eq 'delUser') {

の部分を

if ($in{'code'} eq 'utf8') {

に変更します。

EUCの場合は、オリジナルのままでも変換できるはずなので、utf-8の場合だけ
Jcode.pmを使ってutf-8からsjisへ変換するという処理になります。


記事No: 8087
投稿日: 2010/10/29(Fri) 18:39:07
タイトルRe^2: 再度質問をさせてください
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

平山様
連日にわたるご回答、誠にありがとうございます。


> どうも文字コードの判別がうまくいかないようなので、
> フォームから文字コード情報を送るのが間違いないようです。

早速お教えいただいた通りにファイルを変更し、
それぞれの文字コードのページから登録テストを行いましたところ、
無事に文字化けせずに登録させることができました!


平山様、このたびはお忙しい中、
誠にありがとうございました。

本当に助かりました。


気温が下がって冷えてきておりますのでご自愛ください。

今後ともよろしくお願いいたします。

上野


記事No: 8070
投稿日: 2010/10/27(Wed) 09:33:30
タイトル【解決しました】ありがとうございます
ID情報: index
投稿者: 上野
URLhttp://www.kent-web.com/pwd/pwmgr.html

KENT様、ご回答誠にありがとうございます。


> UTFに変更するには、いくつか作業が必要ですね。

早速、お教えいただいた通りにやってみたつもりですが、
フォーム送信後の画面が白紙となってしまいました。

(サーバに問い合わせたところ、Jcode.pmは標準で利用できるそうです)

また、登録後のメールも送られてきません。

ただ、管理画面→会員管理から確認しますと、
文字化けせずに登録がされている状態です。

どのような要因が原因だと思われるでしょうか?

お忙しいところ大変申し訳ございませんが、
お知恵をお貸しいただけると幸いです。

どうぞよろしくお願いいたします。


[検索ページ]