2013-09-25 2 views
0

Я использую java для чтения текстового файла и который имеет некоторые специальные символы, такие как Yen(¥). Я не указывал кодировку/кодировку при чтении файла и отлично работаю в окнах. Но если я разворачиваю то же самое в unix-машине, то ¥ заменяется на «?». Теперь я хочу указать charset windows-1252, чтобы избежать проблемы. будет windows-1252 работы на unix/linux коробки? В моей кодировке unix box установлен «utf-8». Я использую ниже код:Чтение специальных символов из файла с помощью java?

LineIterator iterator =FileUtils.lineIterator(*filename*,"Windows-1252"); 
+0

Возможный дубликат - http://stackoverflow.com/questions/8912313/reading-special-characters-from-file-java –

ответ

2

Класс StandardCharsets дает список кодировок/кодировок, которые «гарантированно будут доступны на каждой реализации платформы Java.»

Этот список не содержит кодировки Windows, но для большинства распространенных версий Java в Windows, Mac и Linux доступен Cp1251.

Обратите внимание, что вы получите UnsupportedCharsetException или UnsupportedEncodingException, когда он недоступен, поэтому приведенный выше код является безопасным (в том смысле, что он не будет производить мусор).

Если вы хотите быть действительно безопасным, общий подход заключается в использовании только кодированных данных UTF-8 в ваших проектах.

0

Если я правильно понимаю вашу проблему, я обычно решаю это, сохраняя текстовый файл в кодировке UTF-8 с помощью текстового редактора, а затем снова указывая UTF-8 при открытии этого файла из вашей java-программы.

Смежные вопросы