Преобразование кодировки символов HTML в Java - PullRequest
4 голосов
/ 26 января 2010

Мы пытаемся загрузить исходные веб-страницы, однако мы не можем видеть некоторые конкретные символы, такие как ü, ö, ş, ç, в связи с кодировкой символов. Мы попробовали следующий код для преобразования кодировки строки (переменная "text"):

byte[] xyz = text.getBytes();
text = new String(xyz,"windows-1254"); 

Мы заметили, что если кодировка utf-8, мы все равно не можем правильно видеть страницы. Что нам делать?

Ответы [ 2 ]

2 голосов
/ 26 января 2010

Скажите конструктору String использовать кодировку UTF-8 для интерпретации байтов, если вы знаете, что страница кодирует свое содержимое как UTF-8.

Однако я не уверен, что это степень вашей проблемы. У вас уже есть «текст», прежде чем пытаться «конвертировать» его. Это означает, что что-то уже пыталось интерпретировать байты страницы как строку, согласно некоторой кодировке. Если это было неправильное кодирование, то, что вы сделаете позже, не обязательно исправит это.

Вместо этого вам нужно исправить это вверх по течению.

byte[] bytesOfThePage = ...;
String text = new String(bytesOfThePage, "UTF-8");
0 голосов
/ 26 января 2010

Вероятно, проблема именно в там , где вы читаете, пишете и / или отображаете эти символы.

Если вы читаете эти символы, используя Reader, тогда вам нужно сначала создать InputStreamReader, используя конструктор с двумя аргументами, в котором вы можете передать правильную кодировку (таким образом, UTF-8) как второй аргумент. Э.Г.

reader = new InputStreamReader(url.openStream(), "UTF-8");

Если вы, например, записываете эти символы в файл, вам нужно создать OutputStreamWriter, используя конструктор с двумя аргументами, в котором вы можете передать правильную кодировку (таким образом, UTF-8 ) как второй аргумент. Э.Г.

writer = new OutputStreamWriter(new FileOutputStream("/page.html"), "UTF-8");

Если вы, например, записываете все это как обычный ваниль на стандартный вывод (например, System.out.println(line) и т. Д.), Вам необходимо убедиться, что сам стандартный вывод использует правильную кодировку (таким образом, UTF-8). В среде IDE, например Eclipse, ее можно настроить с помощью Window > Предпочтения > General > Рабочая область > Кодировка .

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