2012-04-24 2 views
4

Я использую библиотеку HtmlCleaner для анализа или преобразования HTML-файлов в java.HTMLCLEANER обрабатывает испанские символы

кажется, что не в состоянии обрабатывать испанские символы, такие как «ÁáÉéÍíÑñÓóÚúÜü»

Есть ли какое-то свойство, которое я могу установить в HtmlCleaner для обработки этого или любого другого решения? Вот код, я использую, чтобы вызвать его:

CleanerProperties props = new CleanerProperties(); 
props.setRecognizeUnicodeChars(true); 
java.io.File file = new java.io.File("C:\\example.html"); 
TagNode tagNode = new HtmlCleaner(props).clean(file); 
+0

Есть ли способ установить кодировку для использования UTF-8? – Makoto

+0

Я использую UTF-8 при записи в файл. 'new PrettyHtmlSerializer (реквизит) .writeToFile (tagNode, filePath," utf-8 ");' – choop

+0

Но является ли файл HTML фактически закодирован как UTF-8? –

ответ

2

HtmlCleaner использует набор символов по умолчанию, считанный из JVM, если не указано иное. В Windows это будет Cp1512, а не UTF-8, что, вероятно, происходит там, где это происходит неправильно.

Вы можете

  • указать -Dfile.encoding=UTF-8 на вашей виртуальной машины Java линии старта
  • использовать HtmlCleaner.clean() перегрузку, которая принимает набор символов

    TagNode tagNode = new HtmlCleaner(props).clean(file, "UTF-8"); 
    

    (если вы получили Google Guava в проекта вы можете использовать Charsets.UTF_8 для постоянной)

  • используйте перегрузку HtmlCleaner.clean(), которая принимает InputStreamReader, который вы уже создали с правильным набором символов.
+0

Решенный, спасибо большое! – choop

0

Вы можете изменить UTF-8 к UTF-16.

Он будет поддерживать максимальное количество символов.

+0

Но это всего лишь кодировки, которые не изменят количество поддерживаемых символов. Это может помочь, если HtmlCleaner считывает файл с неправильной кодировкой, а UTF-16 генерируется с помощью спецификации, которую он обнаруживает правильно, но я сомневаюсь, что это произойдет. – Rup

+0

@ Ажар, вы можете объяснить своими словами, почему вы думаете, что UTF-16 имеет больше символов, чем UTF-8, и откуда вы взяли эту идею? –

+0

@MrLister .. Когда я начал кодировать свой первый HTML-код .. У меня была проблема с поддерживающими символами ... Так что я был старше меня, чтобы помочь мне :) .. Он сказал, что UTF-16 будет поддерживать больше персонажей. Исправьте меня, если я или мой старший ошибаются. – Azhar

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