将多个.xml UTF-8文件转换为ISO-8859-1

时间:2016-06-02 19:53:51

标签: xml utf-8 iso-8859-1 iconv

所以我花了最近两天在所有其他条目上尝试所有可能的解决方案但到目前为止没有结果。我们公司开发了一种软件,可以将.XML文件转换为.TXT,同时还可以过滤我们需要的字段。

最近,我们收到了来自客户端的500多个文件,既没有能够运行该程序,也没有正确地在浏览器中打开它。解决此问题的几种方法是手动删除特殊字符,例如ãçèô或将编码从UTF-8更改为ISO- 8859-1。

感觉创建一个命令以更改我从以下命令获得的所有文件的编码会更容易:

  

iconv -c -f UTF-8 -t ISO-8859-1 test.xml> test1.xml

通过使用此命令,我可以在浏览器中打开它,并使用我们自己的程序将其正确转换为.TXT。我的挑战是将此命令应用于所有500个文件。我尝试了这些建议,没有结果:

  

for(* .xml)中的%a执行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

我必须说所有特殊字符,例如ã,ç,ê在这个过程中丢失了,但由于我只需要访问数字,这个解决方案对我来说很好。我确定有一种更简洁的方法可以在不丢失信息的情况下进行,但这对我有用......

2 个答案:

答案 0 :(得分:0)

如果你要使用Linux,那么使用bash语法的正确答案是:

  

表示in * .xml;做iconv -c -f UTF-8 -t ISO-8859-1 $ a;完成

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

  

表示in * .xml;做iconv -c -f UTF-8 -t ISO-8859-1 $ a.suffix;完成

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

答案 1 :(得分:0)

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

以下是我使用的代码:

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

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