尝试使用linux curl从网址下载xml文件。
非常确定xml是以UTF-8编码的,
怀疑卷曲-o不会保存为UTF-8。
有没有强制保存到卷曲的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 shld都是utf8编码。
尝试使用iconv f iso8859-1建议utf-8对于这种情况不起作用,因为我怀疑它不在iso8859-1中。
仍需要更好的解决方案。
答案 0 :(得分:11)
curl不会对其下载的文件进行任何转换。如果HTTP服务器以另一种编码(例如,ISO8859-1)为您提供XML,那么他的curl将如何将其保存到磁盘。
要解决您的问题,您可以使用“iconv”,如下所示:
curl URL | iconv -f iso8859-1 -t utf-8 > output.xml
希望得到这个帮助。
答案 1 :(得分:4)
您是否尝试过添加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