JQuery-Ajax JSON конфликт символов - PullRequest
2 голосов
/ 24 августа 2010

У меня есть два комбинированных списка "A" и "B". Комбо "B" заполняется с помощью jQuery Ajax (dataType: json), когда выбрано значение в комбо "A" (событие onchange).

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

Обычно вся установка выглядит так:

ERP <---> Браузер сервлетов <---> JSP <--->

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

Я добавил необходимый contentType в Ajax для "application / json; charset = utf-8". Все еще не играли в кости.

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

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

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

1 Ответ

0 голосов
/ 10 апреля 2012

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

1) Как насчет использования параметров contentType при вызове сервлета, как показанов 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) Даже если ваш ERP установлен как UTF-8, просто дважды проверьте возвращаемую строку, используя преобразование байтов UTF-8, и посмотрите, что произойдет.

byte[] utf8Bytes = stringToParse.getBytes("UTF8");
String stringToReturn = new String(utf8Bytes, "UTF8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...