символы, кроме 0x00-0x7F, не отображаются при преобразовании в «UTF-8» из «ISO-8859-1» - PullRequest
0 голосов
/ 13 марта 2010

Мне нужно получить строку из URL-запроса браузера, а затем создать текстовое изображение по запрошенному тексту. Я знаю, что кодировкой по умолчанию для передачи по сети Java является «ISO-8859-1», она может нормально работать со всеми символами, определенными в «ISO-8859-1». Но когда я запрашиваю многобайтовый символ Unicode (например, китайский или что-то вроде ¤ж), тогда мне нужно декодировать его как "UTF-8" из "ISO-8859-1".

Мои коды вроде:

String reslut = new String(requestString.getBytes("ISO-8859-1"), "UTF-8");

Все хорошо, но я обнаружил, что некоторые символы в ISO-8859-1 теперь не отображаются, это символы 0x80 - 0xFF (определенные в "ISO-8859-1"), т.е. символы, кроме 0x00-0x7F, не отображается при преобразовании в «UTF-8» из «ISO-8859-1»

Любой другой метод может решить этот запрос?

Ответы [ 2 ]

3 голосов
/ 14 марта 2010

Я знаю, что кодировкой по умолчанию для сетевой передачи Java является "ISO-8859-1"

Я не уверен, что вы имеете в виду здесь, но это не так в сети. Все идет в байт по линии. Возможно, вы путаете это с кодировкой по умолчанию InputStreamReader, с которой вы пытаетесь прочитать поток байтов как символы. При создании InputStreamReader для байтового потока вы должны использовать конструктор, который принимает кодировку в качестве 2-го аргумента . Э.Г.

Reader reader = new InputStreamReader(connection.getInputStream(), "UTF-8");

Если вы на самом деле используете java.net.URLConnection, то сначала необходимо отфильтровать кодировку из заголовка Content-Type и применить его в качестве кодировки.

1 голос
/ 13 марта 2010

То, что вы пытаетесь сделать, на самом деле не имеет смысла. Большинство строк ISO-8859-1 нельзя интерпретировать как строки UTF-8.

Кроме того, китайские иероглифы не кодируются в ISO-8859-1 (ISO-8859-1 предназначен для языков Западной Европы).

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