【问题标题】:Errors converting multiple .xml UTF-8 files into ISO-8859-1将多个 .xml UTF-8 文件转换为 ISO-8859-1 时出错
【发布时间】: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


【解决方案1】:

如果您使用 Linux,使用 bash 语法的正确答案是:

对于 *.xml 中的 a;做 iconv -c -f UTF-8 -t ISO-8859-1 $a;完成

将此语法应用于一批文件会导致以下命令行(目标名称附加.suffix(或您选择的任何内容):

对于 *.xml 中的 a;做 iconv -c -f UTF-8 -t ISO-8859-1 $a.suffix;完成

对于Windows 环境,此答案将不适用(请参阅 cmets)。

【讨论】:

  • 你怎么知道是Linux?对我来说,它看起来很像 DOS 批处理文件。
  • @ThomasWeller:很好的反对意见。如果不是 Linux,请忽略这个答案 :-)
  • 抱歉没有说清楚,我确定我已经在问题的标题中详细说明了。是窗户。
  • @P-theMoser:不,这不是你的错。请参阅问题的this revision - 这是我试图回答的问题......在这个特定的修订版中,我没有明确阅读“Windows”参考,因此产生了误解......我只是没有删除这个答案,因为为可能的 Linux 用户提供未来参考。
  • 错误发生在版本 1 of 4 和版本 2 of 4 之间。我的编辑是 3 of 4。
【解决方案2】:

我找到了这个问题的一个简单答案。通过使用recode 函数,我能够轻松地批量重新编码我需要的所有文件。该解决方案确实删除了所有特殊字符,但由于我只需要访问文件中的数字,我可以接受。

这是我使用的代码:

CD file-location-path
recode -f UTF-8..ISO-8859-1 *.xml

就像我说的,我确定这不是最干净或最好的方法,但它对我有用......也许它也会帮助其他人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2011-08-01
    • 1970-01-01
    • 2018-07-06
    • 2014-08-29
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多