如何使用 iconv for xsltproc 将非 UTF-8 字符转换为 UTF-8 字符
How to convert nonUTF-8 chars to UTF-8 chars with iconv for xsltproc
我正在尝试使用 xsltproc 从 xml 文件中获取数据,但是当我执行 xsltproc 时,我得到一个解析器错误列表,向我显示:
new_news.xml:388407: parser error : PCDATA invalid Char value 26
new_news.xml:418521: parser error : PCDATA invalid Char value 26
new_news.xml:1490882: parser error : PCDATA invalid Char value 27
ultan'ın
错误列表中的数字显示了我的 xml 文件发生错误的行号,我看到有一些非 UTF8 字符,如 ESC、SUB 等。(.xml 文件开头有 UTF-8 标签。)由于是这种情况,我需要删除(或替换)那些非 UTF8 字符。为此:
我使用了 iconv 命令:
iconv -c -t UTF-8 < new.xml > new_news.xml
然后使用 diff 命令查看差异:
diff new.xml new_news.xml
但它们之间没有区别。因此,给定 new_news.xml to xsltproc 命令,我得到相同的错误。
你能帮我解决这个问题吗?我究竟做错了什么?
顺便说一下,我正在使用 OsX 终端。我不知道 iconv 命令是否与 sed 和 awk 命令中的不同。
此致
您的问题不在于 UTF-8,而在于 XML。 ESC 或 SUB 等非打印字符为 not allowed in XML。如果您的文件包含它们,则它不是 XML 文档。
您需要删除有问题的字符或将它们更改为其他字符,然后您的文档才能被解析为 XML 并由 XSLT 处理器处理。更改文档的编码不会完成任何事情。
我正在尝试使用 xsltproc 从 xml 文件中获取数据,但是当我执行 xsltproc 时,我得到一个解析器错误列表,向我显示:
new_news.xml:388407: parser error : PCDATA invalid Char value 26
new_news.xml:418521: parser error : PCDATA invalid Char value 26
new_news.xml:1490882: parser error : PCDATA invalid Char value 27 ultan'ın
错误列表中的数字显示了我的 xml 文件发生错误的行号,我看到有一些非 UTF8 字符,如 ESC、SUB 等。(.xml 文件开头有 UTF-8 标签。)由于是这种情况,我需要删除(或替换)那些非 UTF8 字符。为此:
我使用了 iconv 命令:
iconv -c -t UTF-8 < new.xml > new_news.xml
然后使用 diff 命令查看差异:
diff new.xml new_news.xml
但它们之间没有区别。因此,给定 new_news.xml to xsltproc 命令,我得到相同的错误。
你能帮我解决这个问题吗?我究竟做错了什么? 顺便说一下,我正在使用 OsX 终端。我不知道 iconv 命令是否与 sed 和 awk 命令中的不同。
此致
您的问题不在于 UTF-8,而在于 XML。 ESC 或 SUB 等非打印字符为 not allowed in XML。如果您的文件包含它们,则它不是 XML 文档。
您需要删除有问题的字符或将它们更改为其他字符,然后您的文档才能被解析为 XML 并由 XSLT 处理器处理。更改文档的编码不会完成任何事情。