0

Drupalのフィールドのデータに基づいて設定しているCookieがあります。PHPを使用してCookieを作成すると、拡張ASCII文字は16進コード(例:%7E)として表示されますが、JavaScriptを使用して同様のCookieを作成すると、拡張ASCII文字は単一文字(例:〜)としてCookieに表示されます。

これは私がクッキーに入れたい文字列です。

Section1~email,email.calendar,calendar.wordpresssml,wordpress.moodlesml,moodle.maharasml,mahara.gdrive,gdrive.eportfolio,eportfolioblogs.wiki,wiki.youtube,email.feature,feature|Section2~reader,reader|

使用する場合

setcookie("p", "Section1~email,email.calendar,calendar.wordpresssml,wordpress.moodlesml,moodle.maharasml,mahara.gdrive,gdrive.eportfolio,eportfolioblogs.wiki,wiki.youtube,email.feature,feature|Section2~reader,reader|", $expire);

私は得る Section1%7Eemail%2Cemail.calendar%2Ccalendar.wordpresssml%2Cwordpress.moodlesml%2Cmoodle.maharasml%2Cmahara.gdrive%2Cgdrive.eportfolio%2Ceportfolioblogs.wiki%2Cwiki.youtube%2Cemail.feature%2Cfeature%7CSection2%7Ereader%2Creader%7C

私が欲しい文字列ではなく。JavaScriptを使用してCookieを作成すると、正常に機能します。これがエンコーディングの問題であることは知っていますが、PHPに拡張ASCII文字のフルセットを使用してCookieを書き込んでもらいたいと思います。

4

1 に答える 1

0

なぜこれが問題なのですか?これはSet-CookieHTTPヘッダーに表示されることを覚えておく必要があります。エンコードしないことで、特殊文字が何であるかを常に覚えて、使用しないようにする必要があります。エンコーディングを使用すると、それについて心配する必要はありません。

PHPを使用$_COOKIE['p']すると、当初の意図どおりに表示されます。を使用してJavascriptで抽出する場合はdocument.cookie、を使用できますdecodeURIComponent(cookieValue)

于 2013-01-07T13:57:08.373 に答える