dojo.io.bindで送信した日本語文字列が化ける
同じ罠にはまったのでメモ。
dojo.io.bindに日本語文字列をコンテンツとして渡し、サーブレット側でgetParameterで取った時にXXXX; 形式で表示されて困りますというお話。
ちゃんとGETで来てることを確認。
でも日本語を入力すると
につじ
とかになる。えっと、、なんでだっけ?
(from id:nitsuji:20060712:1152699982)
どうもdojo.io.bindは送信する文字列のエンコードをISO-8859-1に仮定しているらしく、UTF-8で文字列を送ろうとすると1byteずつ区切って実体参照に置き換えてしまうようです。
(ソースを読んでも何やってるかよくわからなかったので適当ですが。デバッガで追いづらい環境は面倒だなぁ【言い訳】)
結論として明示的にエンコードを指定してやればOKのようです。
var bindArgs = { "url" : url, "encoding" : "UTF-8", "mimetype" : "application/xml", "load" : function(type,data,xhr){instance.XXX(type,data,xhr)} }; var canBind = dojo.io.bind(bindArgs);