JSONを出力するサーブレットがあります。サーブレットの出力エンコーディングはISO-8859-1です。WebアプリのページもISO-8859-1に設定されています。私はUTF-8を使用しますが、これは私の制御の範囲外です。ISO-8859-1を使用する必要があります。
サーブレットを単独でヒットすると、出力されたJSONデータを見ることができます。文字エンコードは正しく、どの文字も奇妙に見えません。
ただし、AJAXを介してサーブレットを呼び出し、取得したデータを使用して選択ボックスにデータを入力すると、アクセントのあるすべての文字の代わりに(たとえば、重度またはアキュートアクセント、分音記号、曲折アクセント記号付きの)文字が表示されます。 )。Firebugの下の[ネット]タブで応答を見ると、テキストが正常に表示されていることがわかります。ただし、そのデータを使用して選択ボックスにデータを入力すると、疑問のあるひし形が表示されます。
これらの文字はすべて有効なISO-8859-1文字であるため、正しく表示されない理由がわかりません。
編集
いくつかの詳細情報。で使用GET
しjQuery.ajax
、に設定scriptCharset
しましたISO-8859-1
。サーバー側では、を使用してエンコーディングをISO-8859-1に明示的に設定しましたrequest.setCharacterEncoding("ISO-8859-1");
編集
コードサンプル:
これは私が現在持っているものです。効果を追加scriptCharset: "ISO-8859-1"
しませんでした。
jQuery.ajax({
url: "/countryAndProvinceCodeServlet",
data: data,
dataType: "json",
type: "GET",
success: function(data) {
...
},
});
私のサーブレットはorg.json.JSONObject
、文字列を使用して出力します。response.getWriter().print(jsonObject.toString());
アップデート
dataType
JSONとUTF-8についてのコメントによると、データをテキストとして取得して( text
inに設定)、自分でJSONとして評価できるかどうかjQuery.ajax
(Javascriptで)を確認しようとしました。それもうまくいかないようです!私がそうするときconsole.log
、私はまだファンキーなダイヤモンドを手に入れます。ただし、Firebugの[ネット]タブで確認すると、すべてが正常に表示されます。
ネットタブ:
{"error":false,
"provinces":{"DZ-01":"Adrar",
"DZ-16":"Alger",
"DZ-23":"Annaba",
"DZ-44":"Aïn Defla",
"DZ-46":"Aïn Témouchent",
"DZ-05":"Batna",
"DZ-07":"Biskra",
"DZ-09":"Blida",
"DZ-34":"Bordj Bou Arréridj",
"DZ-10":"Bouira",
"DZ-35":"Boumerdès",
"DZ-08":"Béchar",
"DZ-06":"Béjaïa",
"DZ-02":"Chlef",
"DZ-25":"Constantine",
"DZ-17":"Djelfa",
"DZ-32":"El Bayadh",
"DZ-39":"El Oued",
"DZ-36":"El Tarf",
"DZ-47":"Ghardaïa",
"DZ-24":"Guelma",
"DZ-33":"Illizi",
"DZ-18":"Jijel",
"DZ-40":"Khenchela",
"DZ-03":"Laghouat",
"DZ-29":"Mascara",
"DZ-43":"Mila",
"DZ-27":"Mostaganem",
"DZ-28":"Msila",
"DZ-26":"Médéa",
"DZ-45":"Naama",
"DZ-31":"Oran",
"DZ-30":"Ouargla",
"DZ-04":"Oum el Bouaghi",
"DZ-48":"Relizane",
"DZ-20":"Saïda",
"DZ-22":"Sidi Bel Abbès",
"DZ-21":"Skikda",
"DZ-41":"Souk Ahras",
"DZ-19":"Sétif",
"DZ-11":"Tamanghasset",
"DZ-14":"Tiaret",
"DZ-37":"Tindouf",
"DZ-42":"Tipaza",
"DZ-38":"Tissemsilt",
"DZ-15":"Tizi Ouzou",
"DZ-13":"Tlemcen",
"DZ-12":"Tébessa"}}
しかし、私がconsole.log(text)
得たものを使うとjQuery.ajax
、次のようになります。
{"error":false,
"provinces":{"DZ-01":"Adrar",
"DZ-16":"Alger",
"DZ-23":"Annaba",
"DZ-44":"A�n Defla",
"DZ-46":"A�n T�mouchent",
"DZ-05":"Batna",
"DZ-07":"Biskra",
"DZ-09":"Blida",
"DZ-34":"Bordj Bou Arr�ridj",
"DZ-10":"Bouira",
"DZ-35":"Boumerd�s",
"DZ-08":"B�char",
"DZ-06":"B�ja�a",
"DZ-02":"Chlef",
"DZ-25":"Constantine",
"DZ-17":"Djelfa",
"DZ-32":"El Bayadh",
"DZ-39":"El Oued",
"DZ-36":"El Tarf",
"DZ-47":"Gharda�a",
"DZ-24":"Guelma",
"DZ-33":"Illizi",
"DZ-18":"Jijel",
"DZ-40":"Khenchela",
"DZ-03":"Laghouat",
"DZ-29":"Mascara",
"DZ-43":"Mila",
"DZ-27":"Mostaganem",
"DZ-28":"Msila",
"DZ-26":"M�d�a",
"DZ-45":"Naama",
"DZ-31":"Oran",
"DZ-30":"Ouargla",
"DZ-04":"Oum el Bouaghi",
"DZ-48":"Relizane",
"DZ-20":"Sa�da",
"DZ-22":"Sidi Bel Abb�s",
"DZ-21":"Skikda",
"DZ-41":"Souk Ahras",
"DZ-19":"S�tif",
"DZ-11":"Tamanghasset",
"DZ-14":"Tiaret",
"DZ-37":"Tindouf",
"DZ-42":"Tipaza",
"DZ-38":"Tissemsilt",
"DZ-15":"Tizi Ouzou",
"DZ-13":"Tlemcen",
"DZ-12":"T�bessa"}}
jQueryがデータに対して何か奇妙なことをしているように私には思えます。