2010-08-24 2 views
2

У меня есть две выпадающие списки «A» & «B». Компонента «B» заполняется с помощью jQuery Ajax (dataType: json), когда выбрано значение в Combo «A» (событие onchange).jQuery-Ajax JSON charset конфликт

Бывают случаи, когда часть данных в «В» может быть китайской/международной, и в этом случае данные отображаются как «????» в браузере.

Обычно все настройки, как так:

< ERP ---> Servlet < ---> JSP < ---> Браузер

ERP является UTF-8 включен. Я могу отчетливо видеть данные на китайском языке в консоли ERP. Я сбросил результирующие данные, которые передаются в сервлет в файле, чтобы проверить, действительно ли это. Он отлично закодирован. Я установил contentType для JSP в UTF-8. Все на месте.

Я добавил необходимый тип contentType в Ajax в «application/json; charset = utf-8». Еще нет кубиков.

Это оставляет браузер. Я использовал каждый браузер, и возникает такая же проблема. Я заметил, что браузер просто не может понять кодировку китайских данных при заселении на лету.

Что может быть неправильным? Из-за соображений безопасности я не могу опубликовать код. Я был бы признателен за любой совет.

Спасибо, куча! ~ Sabier

+0

Вы видите эту неправильную кодировку во всех браузерах? – Piskvor

+0

Да, во всех браузерах, включая Firefox. – user429573

+0

Если это во всех браузерах, может ли ваша операционная система отображать китайские символы? –

ответ

0

Если вы установили JSP, как UTF-8 и ваш полученный CONTENTTYPE установлен в UTF-8 также, вы можете попробовать это

1) Что об использовании CONTENTTYPE Params при вызове сервлета как показано в https://stackoverflow.com/a/6283111/1078487

$.ajax({ 
     type: "POST", 
     url: "yourservlet", 
     dataType: "text", 
     data: {yourparams},// here we def wich variabe is assiciated 
     contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
     success: function(data) { 
     //population 
     } 
}); 

2) Даже если ваш ПОР выставиться в UTF-8, просто перепроверить возвращающуюся строку с использованием UTF-8 преобразования байт и посмотреть, что происходит.

byte[] utf8Bytes = stringToParse.getBytes("UTF8"); 
String stringToReturn = new String(utf8Bytes, "UTF8"); 
Смежные вопросы