2010-01-21 67 views
0

如果我使用xmllint將UTF-8編碼的XML文檔(其XML解釋器聲明編碼爲UTF-8)轉換爲Latin-1,是否會有任何數據丟失?將UTF-8 XML轉換爲Latin-1時數據丟失?

xmllint --encode iso-8859-1 --output test-latin1.xml test-utf8.xml 

(數據最終將被顯示爲ISO-8859-1編碼HTML)

回答

0

我轉換回UTF-8再次和文件似乎是等同於原始的,所以它看起來沒問題。

xmllint --encode utf-8 --output test-utf8-post.xml test-latin1.xml 
1

如果有dataloss取決於文件的內容。如果它中的所有字符都屬於iso-8859-1子集,那就沒問題。如果它包含其他字符,例如從西裏爾字母或舊意大利語,你會失去它們。 xmllint表示(帶有錯誤代碼)。

+0

這些非iso-8859-1字符實際上是否會丟失,還是會被數字字符實體替換? – 2010-01-22 10:37:32

2

如果在原始xml文件中存在任何Latin1以外的任意unicode字符,將會出現問題。但我懷疑xmllint會檢測到並拒絕進行翻譯。

我能想到的唯一情況是你可能會獲得有趣的轉換,如果文件包含重音字符 - unicode有多種表示方式,可能全部映射到Latin1中的單個表示。