Строка, полученная в формате utf8, не отображается правильно - PullRequest
1 голос
/ 10 мая 2010

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

Я использовал UTF-8 формат. Это может правильно принимать некоторые языковые буквы, но латинские буквы не могут отображаться правильно.

Итак, как я могу получить все языковые письма?

Кроме того, есть ли другой формат, который позволит мне получать все языковые письма.

Вот мой код:

URL url = new URL("http://google.cm");

URLConnection urlc = url.openConnection();
BufferedReader buffer = new BufferedReader(new InputStreamReader(urlc.getInputStream(), "UTF-8")); 
StringBuilder builder = new StringBuilder(); 
int byteRead; 
while ((byteRead = buffer.read()) != -1)
{ 
    builder.append((char) byteRead);
} 

buffer.close();

text=builder.toString();

Если я отображаю «текст», буквы не могут отображаться правильно.

1 Ответ

2 голосов
/ 10 мая 2010

Чтение файла UTF-8 довольно просто в Java:

Reader r = new InputStreamReader(new FileInputStream(filename), "UTF-8"); 

Если это не сработает, проблема кроется в другом месте.

РЕДАКТИРОВАТЬ: Согласно iconv, Google Камерун обслуживает недействительный UTF-8. Кажется, на самом деле это iso-8859-1.

EDIT2: На самом деле я был не прав. Он служит (и объявляет) действительный UTF-8, если пользовательский агент содержит «Mozilla / 5.0» (или выше), но действительный iso-8859-1 в (некоторых) других случаях. Очевидно, что лучше всего использовать getContentType для проверки перед декодированием.

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