WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:文字化け

0:[投稿] 佐藤 [MAIL] [2004/11/26 23:12 ][環境:IE6 WindowsXP]

PHPでクッキーに日本語をセットして、JavaScriptでescapeしてそれを取得すると文字化けしてしまいます。例えば「ƒ„ƒt[」この様になってしまいます。何かいい方法はないでしょうか?
どなたか教えて下さい。
よろしくお願いします。


1:[回答] AC1号 [2004/11/27 11:36 ]

PHPのsetcookie関数を使っているものと仮定します。

このsetcookie関数は、value引数にurlencodeを施してからクライアントにCookieを送出します。内部エンコーディングがSJISであれば、SJISでurlencodeをして送出します。

対して、JavaScriptは、歴史的な事情によりややこしくなっています。詳細は避けますが、IE6の場合、escape/unescapeはUTF-16でurlencode/decodeを行います。

送信側がSJIS、受信側がUTF-16として解釈しようとするので、話は噛み合うはずがありません。

解決策は、
a: (推奨)
Cookieについては送信も受信もPHP側で行う。JavaScript側でCookieを解釈しないようにする。

b: (推奨しない)
PHP側でCookieの値をUTF-8に変換して送出。JavaScript側ではdecodeURIComponent関数を用いてurldecodeする。
古いブラウザはdecodeURIComponent関数を知らないので、必要であればdecodeURIComponent関数の有無をJavaScriptで調べて対応を振り分ける必要がある。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World