2

json 応答でスペイン語のテキストを使用する必要があります。考えられるすべての方法を試しましたが、UI に奇妙な文字が表示されます。私が伝えたいメッセージは、

   Número de Seguro Social

しかし、次のように表示されます。

    N�mero de Seguro Social 

Java側では、

 //response.setContentType("application/json");
 //response.setCharacterEncoding("UTF-8");
 response.setContentType("application/json;charset=utf-8");
 OutputStream out = null;
 out = response.getOutputStream();
 out.write(jsonResponse.toString().getBytes());
 out.close();

head セクションに meta タグを追加しました。

  <meta http-equiv="content-type" content="text/html;charset=utf-8">

また、ajax呼び出しでコンテンツタイプを設定しました

 $.ajax({
      async: false,
      cache: false,
      type: get,
      contentType: "application/json; charset=utf-8",
      url: //url,
      data: //data,
      dataType: //dataType,
      success: //callbackfn,
      error: //errorfn
  });

何も機能していないようです。特殊文字を意図したとおりに機能させるために他にできることはありますか?

4

2 に答える 2

3

文字列を送信して、エラーが最初に発生している場所をテストします。

 "N\u00famero de Seguro Social"

UTF文字列を表示しているブラウザに対して、表示しようとしているUTF文字列を理解して表示できることを確認してください。

しかし、実際の問題はおそらく次のとおりです。

out.write(jsonResponse.toString().getBytes());

getBytesは、システムのデフォルトの文字セットのバイトを取得するため、UTF-8ではない可能性があります。これを確認するには、Charset.defaultCharset();

jsonResponse応答データを保存し、最後にそれをJSONに変換するための独自のクラスだと思います。このような小さな落とし穴がたくさんあるので、JSON変換を行うためにGoogle JSONライブラリのようなhttp://www.json.org/のライブラリを使用することをお勧めします。これを使用する限り、問題は解決されます。エンコード/デコードを行うためのまともなライブラリ。

于 2013-03-16T02:36:24.433 に答える
0
$.ajax({
type: "Get",
url: your url,
data: { inputParam : JSON.stringify(inputParam)},
    dataType: "json",
    success: //callbackfn,
    error: //error
});
于 2013-03-16T07:28:28.373 に答える