2010-11-13 38 views
2

剛開始使用Apache Commons StringEscapeUtilsApache Commons中的Bug StringEscapeUtil?

根據http://www.w3schools.com/tags/ref_entities.asp,Ö應該對應於Ö。然而,

System.out.println(StringEscapeUtils.unescapeHtml4("Ö")); 

打印

× 

這是一個錯誤?或者我錯過了什麼?

+0

它在哪裏打印?在控制檯上? – cherouvim 2010-11-13 13:42:43

+0

不,在打印機上... jk,是的,在控制檯中。 – aioobe 2010-11-13 13:46:12

+0

你的控制檯能顯示'Ö'嗎? – cherouvim 2010-11-13 13:56:14

回答

2

版本2.5 StringEscapeUtils.unescapeHtml打印Ö

3.0-βStringEscapeUtils.unescapeHtml3StringEscapeUtils.unescapeHtml4打印×

一般來說,我會使用最新的穩定版本(目前爲2.5)。看起來像一個錯誤,但在https://issues.apache.org/jira/browse/LANG

+0

啊哈,很高興知道。我會嘗試2.5! – aioobe 2010-11-13 14:07:51

+0

確認。 2.5作品。我猜測測試版中存在錯誤。謝謝cherouvim! – aioobe 2010-11-13 14:10:37

0

也許你的控制檯不能顯示Ö字符。檢查系統屬性file.encoding以查看默認控制檯編碼是什麼。

如果你的控制檯支持UTF-8,你可以嘗試用-Dfile.encoding=utf-8啓動JVM,或者你可以從你的應用程序做到這一點:

System.setOut(new PrintStream(System.out, true, "utf-8")); 

如果控制檯不支持UTF-8,我建議嘗試使用UTF-8編碼將其寫入文件,然後使用可處理UTF-8的文本編輯器打開該文件。

如果所有這些都不起作用,那麼它可能是StringEscapeUtils中的一個錯誤。

+0

控制檯爲'ö'打印'ö''所以這可能不是問題。 – aioobe 2010-11-13 14:16:05

+0

爲什麼downvote? – Grodriguez 2011-09-12 15:07:42

6

我猜EntityArrays.java從lang3庫我無法找到任何有用的越野車:

{"\u00D6", "Õ"}, // � - uppercase O, tilde 
{"\u00D7", "Ö"}, // � - uppercase O, umlaut 
{"\u00D8", "×"}, // multiplication sign 

看來,有些值由一排移動。它必須是:

{"\u00D6", "Ö"}, // � - uppercase O, umlaut 
{"\u00D7", "×"}, // multiplication sign 

因爲Ö根據LATIN CAPITAL LETTER O WITH DIAERESIS

x00D6"\u00D7"

+0

打開JIRA:https://issues.apache.org/jira/browse/LANG-658 – 2010-11-13 14:41:09

+2

+1精確度和主動性。 – 2011-08-22 23:48:06

相關問題