クッキーに配列の漢字文字列を書き込むと文字化けします

[新着] TAG indexオフライン版 3.0 を準備中です



0   名前: KEN : 2007/04/06(金) 04:32  ID:r9htg6xY sub-Cl
クッキーに配列の漢字文字列を書き込むと%25%25,・・・と記号に化けてしまいます。
コードは以下のような関数です。

分かってることは、書き込み時点ですでに化けてるようなのです。
配列はtoString()で文字列化してるのですがうまく書き込みできません。

配列の漢字文字列をクッキーに書き込み/取り出しする方法を教えてください。
よろしくお願いします。

aryText = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
aryText = new Array("日曜","月曜","火曜","水曜","木曜","金曜","土曜");


//----------------------------------------------
//クッキー書き込み
function setCookie(Keyname,val){
tmp=Keyname+"="+escape(val)+";";
document.cookie=tmp;
}

//----------------------------------------------
//Arrayデータを書き込む
//(複数データ(配列)を書き込む)
function writeAryCookie(aryData){
setCookie(cki_aryNAME,aryData.toString());

alert(aryData.toString());
}


1   名前: ラブーフ : 2007/04/06(金) 04:32  ID:Z2Vl5EuX sub-9G
自分は、以前、UTF-8のもとで、encodeURIComponent/decodeURIComponentを
用いて日本語の書き込み・読み出しをしていました。

文字コードがEUC-JPだったり、Shift_JISでどうなるかは失念。

2   名前: 匿名 : 2007/04/06(金) 04:32  ID:wqq6p95j sub-Cz
>>1
> 文字コードがEUC-JPだったり、Shift_JISでどうなるか

で結果が異なる escape()/unescape() が ECMA-262 rev.3 で廃止され、代わりに必ず UTF-8 でパーセント符号化する encodeURI()/decodeURI() が導入された。

3   名前: miz : 2007/04/06(金) 04:32  ID:soQ6XG4s sub-Ds
>>0
書き込む時に、escapeしているのなら、読み出し時にはunescapeしなくちゃ。

>> 1,2 で御指摘されているように
encodeURIComponent/decodeURIComponent
を使った方がよいと思うけど。

4   名前: KEN : 2007/04/06(金) 04:32  ID:AmlXrV73 sub-Cl
>>>0
>書き込む時に、escapeしているのなら、読み出し時にはunescapeしなくちゃ。
詳しく調べてみたらmizさんのおっしゃるとおりでした。(^^)ゞ 笑

読み込みが問題だったようです。(nescape)
どうもありがとうございました。m(__)m

5   名前: 匿名 : 2007/04/06(金) 04:32  ID:sYk5ShGX sub-Cz
だから、escape/unescape は過去との互換性のために残されているもの。

これから作る人は、escape/unescape を使っては駄目だ。

一覧へ戻る