Curling德语站点使用替换字符交换特殊字符

Curling德语站点使用替换字符交换特殊字符,curl,unicode,Curl,Unicode,我试图卷曲一个URL,但无论我尝试什么编码技巧组合,所有UMLAUT都会用Unicode替换字符替换掉� 我不确定如何正确地执行此操作,也不确定要尝试哪些标题。我也不确定是否有合适的方法来进行调试,因此如果您能分享一些关于您采取了哪些步骤的见解,我将非常感谢您的额外学习 页面声明它是用ISO-8859-1编码的。如果您看到Unicode替换字符,这意味着您正试图用一种Unicode编码(很可能是UTF-8)来解释它。所以,问题很简单,无论您在哪里尝试显示数据,都是将数据视为UTF-8,而不是实际

我试图卷曲一个URL,但无论我尝试什么编码技巧组合,所有UMLAUT都会用Unicode替换字符替换掉�


我不确定如何正确地执行此操作,也不确定要尝试哪些标题。我也不确定是否有合适的方法来进行调试,因此如果您能分享一些关于您采取了哪些步骤的见解,我将非常感谢您的额外学习

页面声明它是用ISO-8859-1编码的。如果您看到Unicode替换字符,这意味着您正试图用一种Unicode编码(很可能是UTF-8)来解释它。所以,问题很简单,无论您在哪里尝试显示数据,都是将数据视为UTF-8,而不是实际数据

作为一个简单的示例,如果您在命令行上执行此操作,则可以将数据转换为预期的UTF-8,如下所示:

$ curl http://www.mensa.uzh.ch/menueplaene/raemi59_di.html | iconv -f ISO-8859-1
如果您正在使用某种编程语言,请使用任何类似的方式将编码从ISO-8859-1转换为UTF-8

或者,指示您的查看器直接将数据作为ISO-8859-1处理;在HTTP中,您可以通过设置适当的头来实现这一点:

Content-Type: text/html; charset=iso-8859-1

该网站称其编码为8859-1(拉丁语-1),Chrome将其解读为Windows-1252(这两个版本非常相似);我不知道curl,但我猜它是以UTF-8为前提的,如果使用了不同的编码,就必须告诉它。@Tim curl事实上根本不在乎什么是编码,这不关它的事。谢谢!您是如何确定编码的?查看头部的
标记。或者我已经猜到了。使用
windows-1252
而不是
iso-8859-1
:这是一个由来已久的令人悲哀的网络怪癖(现在有文献记载)
charset=iso-8859-1
实际上并不意味着iso-8859-1。