13

尝试使用 linux curl 从 url 下载 xml 文件。

很确定 xml 是用 UTF-8 编码的,

怀疑 curl -o 不保存为 UTF-8。

无论如何用 curl 强制保存到 UTF-8 吗?


感谢您的建议,我发现了什么:

因为 xml 提要是动态的,所以它并非总是包含任何 utf-8 字符。有时它在整个内容中根本没有 utf-8 字符,即使它在 xml 编码和标头内容类型中设置为 utf-8:charset=utf-8。当它至少包含一个 utf-8 字符时,它将被保存为 utf-8。

发生这种情况时,curl 不会下载为 utf-8,这是有道理的,因为没有 utf-8 字符,为什么需要存储为 utf-8。

这该死的棘手,一些验证器必须对 utf-8 有效,因此我仍然需要一个解决方案来强制它为 utf8,因为默认情况下我所有的 xml 都在 utf8 编码中。

通过使用 iconv f iso8859-1 utf-8 尝试了建议的方法不适用于这种情况,因为我怀疑它也不在 iso8859-1 中。

仍然需要更好的解决方案。

4

2 回答 2

15

curl 不会对其下载的文件进行任何转换。如果 HTTP 服务器以另一种编码(例如 ISO8859-1)为您提供 XML,那么 curl 也会将其保存到磁盘。

要解决您的问题,您可以使用“iconv”,如下所示:

curl URL | iconv -f iso8859-1 -t utf-8 > output.xml

希望这有帮助。

于 2012-04-16T10:50:25.633 回答
6

您是否尝试过添加 Accept-Charset 标头?我在下载一个使用错误编码下载的文件时遇到了类似的问题。当我设置 Accept-Charset 标头时,它可以工作:

curl -H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" URL | iconv -f iso8859-1 -t utf-8 > output.xml
于 2012-05-24T01:34:36.570 回答