【问题标题】:How to convert nonUTF-8 chars to UTF-8 chars with iconv for xsltproc如何使用 xsltproc 的 iconv 将非 UTF-8 字符转换为 UTF-8 字符
【发布时间】:2015-07-20 18:09:31
【问题描述】:

我正在尝试使用 xsltproc 从 xml 文件中获取数据,但是当我执行 xsltproc 时,我得到一个解析器错误列表,显示我:

new_news.xml:388407:解析器错误:PCDATA 无效字符值 26

new_news.xml:418521:解析器错误:PCDATA 无效字符值 26

new_news.xml:1490882:解析器错误:PCDATA 无效字符值 27 乌尔坦'ın

错误列表中的数字显示了发生错误的 xml 文件的行号,我看到有一些非 UTF8 字符,如 ESC、SUB 等。(.xml 文件具有 UTF-8 标签在一开始。)既然是这种情况,我需要删除(或替换)那些非 UTF8 字符。为此:

我使用了 iconv 命令:

iconv -c -t UTF-8 new_news.xml

然后使用 diff 命令查看差异:

diff new.xml new_news.xml

但是它们之间没有区别。因此,给定 new_news.xml 到 xsltproc 命令,我得到了同样的错误。

你能帮我解决这个问题吗?我究竟做错了什么? 顺便说一句,我使用的是 OsX 终端。我不知道 iconv 命令是否与 sed 和 awk 命令有所不同。

最好的问候

【问题讨论】:

    标签: xslt unicode utf-8 iconv


    【解决方案1】:

    您的问题不在于 UTF-8,而在于 XML。 ESC 或 SUB 等非打印字符为not allowed in XML。如果您的文件包含它们,那么它就不是 XML 文档。

    您需要删除有问题的字符或将它们更改为其他字符,然后您的文档才能被解析为 XML 并由 XSLT 处理器处理。更改文档的编码不会完成任何事情。

    【讨论】:

    • 感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2016-04-03
    • 2011-06-25
    • 2015-06-05
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多