2012-01-24 31 views
0

我想解析下面的XML到punycode但它不工作(我試圖設置不同的編碼)。Xml解析不能與瑞典Chrs

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<domain index="1" domainname="teståbel.nu"> 

<?xml version="1.0" encoding="UTF-8" ?> 
<domain index="1" domainname="teståbel.nu"> 


public void setDomainName(String domainName) { 
     this.domainName = java.net.IDN.toUnicode(domainName); 

當我運行setDomain()時,一切都設置正確。

我已經在我的機器上運行了Windows 7,本地設置爲瑞典語,並且失敗。然後我在另一臺機器上測試了它,並將本地設置爲英語(美國)的Windows XP設置爲並且它工作。

所以我的結論是,編碼正在工作,但我的環境是錯誤的,任何人都知道如何解決這個問題?我可以用一些參數或其他東西運行我的JVM嗎?

+0

您的XML文件*是否真的* ISO-8859-1編碼?在二進制編輯器中查看它並使用文件中的字節更新您的問題。 –

+0

當您使用十六進制編輯器打開XML文件時,您在'å'看到的字節序列是什麼? – Tomalak

+0

很有可能你正在查看'Windows-1252',它與ISO-8859-1相似,並且通過所有方式都是首選,但它不完全一樣。 – Tomalak

回答

0

Okej所以我找到了答案,我需要跟他跑我的JVM以下選項:

JAVA_TOOL_OPTIONS : -Dfile.encoding=UTF8 
+0

通常(也就是說,如果您使用適當的DOM API構建和使用XML),則不必擔心這些事情。事實上,你必須將文件編碼設置爲Java選項意味着你做錯了。 – Tomalak

0

,其結果取決於你的機器的語言環境建議您使用的是默認讀取XML文件jvm的字符集。正確的方法是讓xml解析器找出編碼。這通常意味着在解析文檔時使用InputStream而不是Reader

你沒有表現出在這裏你真正分析該文件的一部分,但我猜你正在創建一個FileReaderInputStreamReader沒有指定字符集,只需使用一個FileInputStream代替。