【问题标题】:CURL import character encoding problemCURL 导入字符编码问题
【发布时间】:2009-03-16 06:50:02
【问题描述】:

我正在使用 CURL 导入一些代码。然而,在法语中,所有的角色都显得很有趣。例如:您好……

我无权更改导入代码的任何内容。我能做些什么来解决这个问题吗?

谢谢

【问题讨论】:

  • 你的情况不清楚。 PHP从何而来?你下载的内容是PHP代码吗?之后你用什么来查看文本?几乎可以肯定,这只是以适当的编码处理下载数据的情况。但是,您需要知道这是什么编码(查看 HTTP 标头以获得可能的提示,尽管它可能没有正确设置)以及如何使用正确的编码。在我们知道您在获取数据后对数据做了什么之前,我们无法在后一点为您提供帮助。
  • "你的情况不清楚,PHP是从哪里来的?你下载的内容是PHP代码吗?后面用什么看文字?" - 来自 Jon Skeet 下面的回答

标签: php encoding curl


【解决方案1】:

就像 Jon Skeet 指出的那样,很难理解您的情况,但是如果您只能访问最终文本,则可以尝试使用 iconv 来更改文本编码。

$text = iconv("Windows-1252","UTF-8",$text);

我之前遇到过类似的问题(意大利语和特殊字符),我已经以这种方式解决了它。

尝试不同的组合(UTF-8、ISO-8859-1、Windows-1252)。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我试图遍历输入和输出字符集的所有组合。没有任何帮助! :(

    但是,我能够访问实际获取数据的代码,这就是罪魁祸首所在。数据是通过 cURL 获取的。添加

     curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
    

    修复它。

    一组方便的代码来尝试字符集列表的所有可能组合:

    $charsets = array(  
            "UTF-8", 
            "ASCII", 
            "Windows-1252", 
            "ISO-8859-15", 
            "ISO-8859-1", 
            "ISO-8859-6", 
            "CP1256"
            ); 
    
    foreach ($charsets as $ch1) { 
        foreach ($charsets as $ch2){ 
            echo "<h1>Combination $ch1 to $ch2 produces: </h1>".iconv($ch1, $ch2, $text_2_convert); 
        } 
    } 
    

    【讨论】:

      【解决方案3】:

      PHP似乎默认使用UTF-8,所以我找到了以下作品

      $text = iconv("UTF-8","Windows-1252",$text);

      【讨论】:

        【解决方案4】:

        你可以替换你的

        $data = curl_exec($ch);
        

        通过

        $data = utf8_decode(curl_exec($ch));
        

        我遇到了同样的问题,对我来说效果很好。

        【讨论】:

        • 重要提示:在转换包含 EURO 符号的 UTF8 数据时,请勿使用 utf_decode 函数。 utf_decode 将数据转换为 ISO-8859-1 字符集。但 ISO-8859-1 字符集不包含 EURO 符号,因此 EURO 符号将转换为问号字符“?”为了正确转换带有欧元符号的 UTF8 数据,您必须使用:iconv("UTF-8", "CP1252", $data)
        【解决方案5】:

        我目前遇到了类似的问题,我正在尝试编写一个简单的 html &lt;title&gt; importer cia cURL。所以我要介绍一下我到目前为止所做的事情:

        1. 通过 cURL 检索 HTML
        2. 通过curl_getinfo()检查响应标头上是否有任何编码提示,并通过正则表达式进行匹配
        3. 解析 HTML 以查看 content-type 元和 &lt;title&gt; 标记(是的,i know the consequences
        4. 比较内容类型、标头和元数据,如果不同,请选择元数据,因为我们知道没有人关心他们的 httpd 配置,而且使用它有很多肮脏的变通方法
        5. iconv()字符串
        6. 希望每天有人不遵守标准时$DEITY 会惩罚他/她直到结束,因为这样可以节省元解析

        【讨论】:

          猜你喜欢
          • 2020-08-25
          • 1970-01-01
          • 2011-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-24
          • 2012-02-27
          相关资源
          最近更新 更多