将UTF-8 XML转换为Latin-1时数据丢失?

时间:2010-01-21 17:40:35

标签: xml unicode character-encoding

如果我使用xmllint将UTF-8编码的XML文档(其中XML序列声明编码为UTF-8)转换为Latin-1,是否会丢失数据?

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

(数据最终将显示为ISO-8859-1编码的HTML)

3 个答案:

答案 0 :(得分:2)

如果原始xml文件中的Latin1之外有任何unicode字符,则会出现问题。但我怀疑xmllint会检测到并拒绝进行翻译。

我能想到的唯一一个可以获得有趣转换的地方是文件是否包含重音字符 - unicode有多种表示方式,可能全部映射到Latin1中的单个表示。

答案 1 :(得分:1)

如果有dataloss则取决于文件的内容。如果其中的所有字符都属于iso-8859-1子集,那就没问题了。如果它包含其他字符,例如从西里尔字母或古意大利语中,你将失去它们。 xmllint表示(带有错误代码)。

答案 2 :(得分:0)

我再次将它转换回UTF-8,文件似乎与原始文件相同,所以它看起来没问题。

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