2

AJAX リクエストで特殊文字/外国語を処理する方法を理解しようとしています。

私のテストコードは次のようになります。

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","test.json",true);
xmlhttp.setRequestHeader("Content-type","application/json; charset=UTF-8");
xmlhttp.send('{"test1":"æøå"}');

サーバー (IBM Domino) で、このコンテンツ REQUEST_CONTENT="{"test1":"├ª├©├Ñ"}" を受け取ります。しかし、奇妙な文字を解読するにはどうすればよいでしょうか?

1 つの解決策は、リクエストを送信する前に値を encodeURIComponent() することです。これは正しい方法ですか?それとももっと良い方法がありますか?

4

2 に答える 2

1

エージェントは何語で書かれていますか? Java では、getBytes を使用して REQUEST_CONTENT データをバイト配列に変換し、それを新しい UTF-8 文字列にインスタンス化するだけです。これらの行に沿ったもの:

byte[] requestContentBytes = requestContentString.getBytes();
String reqeustContentUTF8 = new new new String(requestContentBytes,"UTF-8");

実際、 getBytes() 呼び出しについてはよくわかりません。それに charset 引数を指定する必要がある場合があります。引数がない場合、プラットフォームのデフォルトの文字セットを使用して文字列値をバイトに変換する必要があります。エージェントが実行されている OS のデフォルトの文字セットが、文字列を表示している OS と同じであれば、それが正しい方法だと思います。ただし、charset 引数が必要な場合、要点はそれが UTF-8 ではないということです。それ以外の場合、UTF-8 引数を使用して新しい String にフィードするときの正味の効果は何もしません。

于 2013-07-12T18:23:46.553 に答える