xml - 如何在 Perl 中将 XML 文档从 Latin-1 转换为 UTF-8?

标签 xml perl encoding utf-8 latin1

我们公司希望将我们托管的所有站点从 Latin-1 转换为 UTF-8。经过一番谷歌搜索后,我们的 Perl 脚本几乎完成了。现在唯一缺少的是 XML 文件。

将 XML 从 Latin-1 转换为 UTF-8 的最佳方法是什么?它是否有用?

我问是因为我们对此不确定,因为 Google 上的大多数条目都解释了如何做完全相反的事情。甚至有人说 utf8 可能会导致 XML 出现问题。您能就整个 XML 编码问题给我们讲讲吗?

最佳答案

您要转换什么?数据或 XML 标记或其他什么?

我认为您只需要将其读作 Latin-1 并将其重写为 UTF-8,除非您的源代码做了一些非常奇怪的事情。解码和编码发生在文件句柄级别。一旦在 Perl 中拥有它,它在内部就已经是 UTF-8 了。

到目前为止你有什么?你有什么问题?

您的情况是否太复杂而不能仅使用 xmllint

 xmllint --encode utf8 --output filename.xml filename.xml.latin1

如果您正在使用 XML::Parser,请参阅 Juerd's Unicode Advice关于那个模块。

如果您要转换的不仅仅是 XML 文件,iconv可能有帮助:

iconv -f ISO-8859-1 -t UTF-8 filename.txt.latin1 > filename.txt

关于xml - 如何在 Perl 中将 XML 文档从 Latin-1 转换为 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1661922/

相关文章:

perl - 如何在 Template::Toolkit 中分析模板性能?

xml - Perl XML::简单的 XMLout 函数

php - 在 php 中重命名文件名(波斯语/波斯语/阿拉伯语)

java - Android:让应用程序使用共享首选项提醒答案

c# - 将 RSS feed 转换为 DataTable

无法识别 android XML 文件

xml - XML 模式中的数字 ID 类型

perl - 模板工具包和惰性Moose属性-如何使它们表现出来?

r - 如何在 readr/tidyverse 中设置 encoding/fileEncoding 选项?

email - 使用 EWS API 发送电子邮件时控制消息编码