[PHP-users 19721]Re: 変数の受け渡しで一部文字化けするものがある。

Osamu Shigematsu shige @ ravi.ne.jp
2004年 1月 6日 (火) 15:40:07 JST


重松です。こんにちは。

値を URL エンコードする必要があると思います。
また、短すぎる値は文字のエンコードの判定に失敗する可能性があります。

以下のようにしてみてはいかがでしょうか?

test2.php
	printf("<A href=\"test1.php?jname=%s\">戻る</A>",$iname);

の部分を、

printf("<A href=\"test1.php?jname=%s\">戻る</A>",urlencode($iname));

のように URL エンコードしてみる、それでもだめならば、
漢字コードの判定が可能になるように、ヒントとなる文字を埋め込むとか。

print '<a href="test1.php?hint=%fd%fe&jname='
	.urlencode($iname).'">戻る</a>';

ヒントとなる文字列としては、

	http://www.mikeneko.ne.jp/~lab/kcode/web.html

あたりをご覧ください。

それから、

mbstring.http_input = auto
mbstring.http_output = SJIS

の部分ですが、これだと、PHP は送られてくるデータのエンコードを auto,
すなわち、"ASCII, JIS, UTF-8, EUC-JP, SJIS" と認識しますが、
実際には、http_output = SJIS なのだから、EUC-JP か SJIS か
わからないときには、SJIS と判定されないとまずくないですか?

携帯向けなどで SJIS でやらなければならない場合は別ですが、
そうでないなら、出力も EUC のほうが楽でよいと思います。

-- 
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/



PHP-users メーリングリストの案内