我正在使用 libcurl 获取 HTML 页面。
我对希伯来语字符有一些问题。
例如这个:סלקום
变得乱码。
我如何获得希伯来语字符而不是乱码?
我需要一些 HTML 解码器吗?
libcurl 是否支持这样的操作?
libiconv 是否支持这样的操作?
我很感激任何帮助。
谢谢
我正在使用 libcurl 获取 HTML 页面。
我对希伯来语字符有一些问题。
例如这个:סלקום
变得乱码。
我如何获得希伯来语字符而不是乱码?
我需要一些 HTML 解码器吗?
libcurl 是否支持这样的操作?
libiconv 是否支持这样的操作?
我很感激任何帮助。
谢谢
编辑:好的,所以你看到的是 UTF-8 数据被解码为 Windows-1252(所以数字字符引用是一个红鲱鱼)。这是 Python 中的演示:
>>> u = ''.join(map(unichr, [1505, 1500, 1511, 1493, 1501]))
>>> s = u.encode('utf-8')
>>> print s.decode('cp1255', 'replace')
׳¡׳�׳§׳•׳�
此问题的解决方案取决于显示输出的环境。仅仅输出接收到的字节并期望它们被解释为字符会导致这样的问题。
HTML 文档通常包含一个标题标签<meta charset=utf-8>
,用于向浏览器指示其编码应该是什么。由 Web 服务器提供的文档包含一个 HTTP 标头,例如Content-Type: text/html; charset=utf-8
.
您应该向 libcurl 询问Content-Type
HTTP 标头以了解文档的编码,然后使用 iconv 将其转换为系统编码。虽然在您的情况下是代码页 1255,但它取决于用户的系统,因此您应该查找适当的函数来检测它。
(阅读本网站上的Unicode 和字符集以及字符编码标签以获取更多信息。)