【发布时间】:2013-03-29 23:13:30
【问题描述】:
我正在尝试获取网页解析其中的一部分,然后将其作为值发布。问题是:当有 ó 字符时,我检索 ó,因此在发布它时,urlencode 翻译会将这些字符转换为完全不同的字符,这不起作用。
更准确地说,当 utf-8 中的 ó 被解释为 ISO-9959-1 中的情况时会产生 ó,或者至少我的浏览器就是这样做的,如果我设置为以 utf-8 格式查看页面,那么我看 ó,如果我将浏览器设置为在 ISO-9959-1 中查看页面,那么我会看到 ó,其他编码会产生不同的符号。
我尝试将页面结果以及特定字符串转换为 utf-8,我也尝试将标题设置为仅接受 utf-8,但这也不起作用。我很确定这是问题所在,但我的想法已经不多了。我更改了php.ini中的配置但可能我还没有重新启动,基本上这就像在黑暗中拍摄一样,非常感谢一些帮助。
如果有帮助:具体代码在这里:https://github.com/trylks/golem/blob/master/php/copperGolem.php
方法是“form”,当使用 GET 从先前获得的页面中获取参数值之一时。
谢谢。
PD 解决了:过去几个小时我一直在处理这个问题,我不知道我是否更改了许多其他必要的事情。无论如何,使它起作用的最后一个更改是将第 60 行更改为:$dom->loadHTML(mb_convert_encoding($p, 'html-entities', mb_detect_encoding($p))); 成功了。问题不是 libcurl 而是 DomDocument,如下所述:PHP DomDocument failing to handle utf-8 characters (☆)
【问题讨论】:
-
@fyrye 递归在这里有什么帮助?
-
@deceze 更新为正确的 URL,奇怪的浏览器复制了错误的链接 >>
-
您说您尝试将页面和特定字符串转换为 UTF-8 并通过标头强制 UTF-8 编码。你能说明你是怎么做到的吗?
标签: php http character-encoding libcurl