2013-04-13 6 views
3

Я читаю текстовый файл в моей программе, который содержит некоторые символы спецификации Юникода \ufeff/65279 в местах. Это приводит к ряду вопросов при дальнейшем анализе.Правильный способ работы с спецификацией Unicode в текстовом файле

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

+1

В _places_? Спецификация должна быть первым байтом файла; в противном случае это не спецификация. –

+2

Предполагая, что спецификация находится в начале файла, тогда [это] (http://code.google.com/p/guava-libraries/issues/detail?id=345&colspec=ID%20Type%20Status%20Milestone%20Summary) отчет об ошибке на веб-сайте Guava объясняет, что Guava не обрабатывает спецификацию и [это] (http://stackoverflow.com/questions/9736999/how-to-remove-bom-from-an-xml-file-in- java) дает представление о том, как пропустить его в простой Java. –

+0

@ bmorris591, да, в начале. Благодарю. Если вы опубликуете свой второй комментарий в качестве ответа, я отмечу его принятым. – missingfaktor

ответ

10

Нет встроенного способа работы с (UTF-8) спецификацией на Java или, действительно, в Guava.

В настоящий момент имеется сообщение об ошибке Guava website о работе с спецификацией в Guava IO.

Существует несколько сообщений SO (here и here) о том, как обнаружить/пропустить спецификацию при чтении файла на простой Java.

Ваш BOM (\ufeff) кажется UTF-16, который, согласно тому же отчету Гуаве должен решаться автоматически Java. This SO сообщение похоже на то же самое.

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