0

以下のようにJS関数でCookieを保存するとわかります:(w3c学校の例)

    function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()+"; path=/project/");
document.cookie = c_name + "=" + c_value;
}

そして、setCookie( "hello"、 "你好"、30)を使用してCookieを保存し、phpコードを使用してそれをエコーし​​ます。

<?php
echo $_COOKIE['hello'];
?>

「%u4F60%u597D」を出力します。「你好」ではありません。</p>

だから私は以下のようにsetCookie関数でエンコード方法を交換します:

function encode_setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
//use encodeURIComponent encode string and decodeURIComponent decode it.
var c_value=encodeURIComponent(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()+"; path=/project/");
document.cookie = c_name + "=" + c_value;
}

そして、phpを使用してもう一度エコーします。クッキーから読みたいので「你好」と出力します。

この保存CookieをPHPコードで試し、JSで読み取ります。それもうまくいきます。

または、encodeURIComponent / decodeURIComponentは、PHPおよびJSでCookieを保存および読み取るのに十分です。

それは、クッキーに保存された文字列が英語の問題ではないということです。

それについてもっと良い解決策がありましたか?

私はそれについての解決策を見つけます。

jQuery cookie

4

1 に答える 1

1

エンコードの問題です。Unicode の概要については、このページをお読みください: http://www.joelonsoftware.com/articles/Unicode.html

于 2012-07-26T10:54:07.487 に答える