2012-04-24 84 views
4

我使用HtmlCleaner庫來解析/轉換java中的HTML文件。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 2012-04-24 14:29:10

+0

我在寫入文件時使用的是UTF-8。 '新PrettyHtmlSerializer(道具).writeToFile(tagNode,filePath,「utf-8」);' – choop 2012-04-24 14:35:32

+0

但是HTML文件實際編碼爲UTF-8? – 2012-04-24 18:19:30

回答

2

除非指定,否則HtmlCleaner將使用從JVM讀取的默認字符集。在Windows上,這將是Cp1512而不是UTF-8,這可能是出錯的地方。

您可以

  • 你的JVM啓動行指定-Dfile.encoding=UTF-8
  • 使用HtmlCleaner.clean()重載接受一個字符集

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

    (如果你已經有了谷歌番石榴在項目你可以使用Charsets.UTF_8爲常數)

  • 使用HtmlCleaner.clean()重載,該重載接受已使用正確字符集構建的InputStreamReader。
+0

解決了,非常感謝! – choop 2012-04-25 15:09:00

0

您可以更改UTF-8UTF-16

它將支持最大數量的字符。

+0

但它們只是編碼 - 不會改變支持的字符數。如果HtmlCleaner使用錯誤的編碼讀取文件,而UTF-16使用正確檢測到的BOM生成,這可能會有所幫助,但我懷疑它會。 – Rup 2012-04-25 11:58:18

+0

@Azhar你能用你自己的話解釋爲什麼你認爲UTF-16比UTF-8具有更多的字符,你從哪裏得到了這個想法? – 2012-04-25 15:00:24

+0

@MrLister ..當我開始編寫我的第一個HTML ..我有一個支持人物的問題...所以我有我的資深幫助我:) ..他告訴我,UTF-16將支持更多的字符..糾正我,如果我或我的老人是錯的.. – Azhar 2015-09-15 13:32:46