Обрабатывать многоязычную кодировку - PullRequest
0 голосов
/ 12 августа 2011

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

response.setContentType("text/html;charset=UTF-8");

перед отправкой ответа.

Как мы можем обрабатывать несколько языков?

я могу видеть отправленное сообщение

{"lastPost": {"lastUpdate": "毋 成 金口","pubDate": "Пт, 12 августа 00:39:09 UTC 2011", "message_id": 101814948329562112}

это строка json и добавлена ​​в ответ ..

на моем клиенте т.е. на iphone последняя запись "????"

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Сказать браузеру, что страница имеет формат UTF-8, - это хорошо, но бесполезно, если только вы не уверены, что пишете только UTF-8 на странице.

Чтобы убедиться, что это происходит:

  1. Всякий раз, когда вы читаете из твиттера или чего-либо еще, всегда требуйте данные UTF-8, убедитесь, что вы получаете байты UTF-8.
  2. Когда вы создаете строку из необработанных байтов, Javaпо умолчанию используется «кодировка платформы по умолчанию», которая может быть любой.Преобразование байтов в строки происходит при создании новой строки из байтового массива или при использовании Reader.Оба эти метода позволяют вам явно определить, какую оболочку вы ожидаете.После проверки точки 1 и получения байтов UTF-8 убедитесь, что везде в приложении вы указываете использовать UTF-8 при преобразовании байтов в строки.
  3. при использовании Writer для преобразования строк в байтыНапример, при отправке в браузер (создатель сервлета) применяются те же правила: старайтесь быть явными и всегда указывайте UTF-8
  4. Если вы храните вещи в базах данных, у вас есть две проблемы с кодированием.Первый - это то, какая кодировка базы данных используется при разговоре с вашим приложением (кодировка соединения), вторая - какая кодировка базы данных фактически хранит строки (кодировка хранилища).Обычно вы можете указать только кодировку соединения из Java, в то время как кодировка хранилища указывается в базе данных при ее создании (поиск «сопоставление», если вы используете mysql).

Определение, где находитсяСтрока, которая должна быть UTF-8, плохо перекодируется, это трудная задача.В 99% случаев он конвертируется в какую-либо ISO-латиницу или аналогичную кодировку, что приводит к тому, что специальные символы, такие как à или ì, отображаются в виде двух символов мусора.Часто отладка - единственный способ выяснить, где это происходит.

0 голосов
/ 12 августа 2011

проблема была с кодировкой клиента .. это было установлено в ISO-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...