【问题标题】:PHP Convert Windows-1251 to UTF 8PHP 将 Windows-1251 转换为 UTF 8
【发布时间】:2013-03-29 15:16:38
【问题描述】:

我有一个小的 html 代码,我需要将其转换为 UTF-8。
我用这个iconv("windows-1251", "utf-8", $html);

所有文本都正确转换,但如果文本例如标记<i>...</i> 中的文本,那么它不会转换文本,我看到类似Показать РјРЅ 的东西

【问题讨论】:

  • 请提供您要转换的字符串。

标签: php utf-8 character-encoding windows-1251


【解决方案1】:

如果您可以使用 Multibye 软件包,您可以尝试一下。在此处查看 PHP 页面: http://www.php.net/manual/en/function.mb-convert-encoding.php

$html_utf8 = mb_convert_encoding($html, "utf-8", "windows-1251");

【讨论】:

    【解决方案2】:

    你知道,像Показать РјРЅ这样的消息你看看 页面编码为windows-1251,但文本编码为utf-8
    我在我的一个项目中看到了这个问题,所以只需更改 utf-8 中页面的更改编码,此文本将正确显示。

    让我举几个例子:
    如果页面在utf-8,但在windows-1251 中的文本你会看到这样的:
    ???? ?? ?????? ??? ????? ??? ??????? ?? ????? ???? ??? ?????

    如果页面在windows-1251,但utf-8 中的文本你会看到:
    "Мобильные телефоны";"Apple iPhone 4

    【讨论】:

    • 该文本来自 XML 文件,问题仅在于 html 标签。
    【解决方案3】:

    我总是使用手动转换(逐个字符),像这样:

    $input= 'Обращение РљР°С';
    
    
    
    $s= str_replace('С?','fgr43443443',$input);
    $s= mb_convert_encoding($s, "windows-1251", "utf-8");
    $s= str_replace('fgr43443443','ш',$s);
    
    
    echo $s;
    

    附言别忘了,.php 文件的编码应该是 UTF8。 另外,在 HTML 的头部,插入 UTF8

    的标准声明
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    

    【讨论】:

      【解决方案4】:

      大多数解决方案都缺少对单字节编码的转换。 在我的情况下,我使用 mb_convert_encoding($string,'windows-1251') 从 UTF-8 进行转换。

      function ru2Lat($string)
      {
      $rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
      $lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
      $string = str_replace($rus,$lat,$string);
      $string = strtr($string,
           "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ",
           "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh'i'e");
      
      return($string);
      }
      
      function transliterate($string){
          if (!is_string($string)) return $string;
          return ru2lat(mb_convert_encoding($string,'windows-1251'));
      }
      
      function transliterate_array($a){
      
      $c = array_map(transliterate,$a);
                   return $c;
      
      }
      

      【讨论】:

        【解决方案5】:

        试试这个,对我有用!

        $result = str_replace ('€', '€' , $result);
        

        【讨论】:

        • 这比四年前公认的答案好多少?
        猜你喜欢
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 1970-01-01
        • 2012-01-26
        • 2011-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多