【发布时间】:2016-06-02 19:53:51
【问题描述】:
所以过去两天我一直在尝试所有其他条目的所有可能解决方案,但到目前为止还没有结果。我们公司开发了一种软件,可以将 .XML 文件转换为 .TXT,同时还可以过滤我们需要的字段。
最近我们从客户那里收到了 500 多个文件,但都无法运行该程序,也无法在浏览器中正确打开它。解决此问题的一些方法是手动删除特殊字符,例如 ã、ç、è、ô,或者将编码从 UTF-8 更改为 ISO-8859-1。
感觉创建一个命令来将所有文件的编码更改为以下命令会更容易:
iconv -c -f UTF-8 -t ISO-8859-1 test.xml > test1.xml
通过使用此命令,我可以在浏览器中打开它,并使用我们自己的程序将其正确转换为 .TXT。我的挑战是将此命令应用于所有 500 个文件。我已经尝试了这些建议,但没有结果:
for %a in (*.xml) do iconv -c -f UTF-8 -t ISO-8859-1 %a
和
找到 . -name ".xml" -exec iconv -c -f UTF-8 -t ISO-8859-1
还有这两者的其他几种变体,但到目前为止我还没有结果......欢迎任何想法或建议。提前谢谢!
更新:
我决定尝试使用重新编码:
重新编码 UTF-8..ISO-8859-1 *.xml
但它会返回:
失败:步骤 'UTF-8..ISO-8859-1' 中的输入无效
更新 2:
我通过强制重新编码功能找到了解决方案。这是命令的样子:
重新编码 -f UTF-8..ISO-8859-1 *xml
我必须说,所有的特殊字符,如 ã,ç,ê 在此过程中都会丢失,但由于我只需要访问数字,因此该解决方案对我来说很好。我确信有一种更简洁的方法可以做到这一点而不会丢失信息,但这对我有用......
【问题讨论】:
-
您是在命令行中运行第一个(需要%%a)还是在批处理文件中运行(%a 可以)? “没有结果”是什么意思?没有错误信息?无文件?文件不正确?就目前而言,我们只能猜测。我们需要更多信息来解决这个问题。如果单个命令有效,则循环没有理由不执行 - 除非循环有问题。
-
它是什么技术? Linux 还是 Windows/DOS?
-
我通过 Windows/DOS 运行它。在第一个示例中,代码确实可以运行,但文件仍采用 UTF-8 编码。当我使用第二个示例时,它显示“访问被拒绝”
-
嗯,这很重要。您是否尝试过以管理员身份运行?你能删除只读标志吗,...
-
@P-theMoser 不要将标题更改为已解决,而是回答解决方案并将其标记为正确答案
标签: xml utf-8 iso-8859-1 iconv