PHP将Windows-1251转换为UTF 8

时间:2013-03-29 15:16:39

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

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

所有文字都正确转换,但如果文字例如在标记<i>...</i>中,那么它就不会转换文字,我会看到像这样的文章Показать РјРЅ

5 个答案:

答案 0 :(得分:16)

如果您可以访问Multibye包,则可以尝试使用它。请参阅此处的PHP页面: http://www.php.net/manual/en/function.mb-convert-encoding.php

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

答案 1 :(得分:1)

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

让我举几个例子:
如果utf-8中的页面,windows-1251中的文字,您会看到类似的内容:
???? ?? ?????? ??? ????? ??? ??????? ?? ????? ???? ??? ?????

如果windows-1251中的页面,utf-8中的文字,您会看到这一点:
"Мобильные телефоны";"Apple iPhone 4

答案 2 :(得分:0)

我总是使用手动转换(逐个字符),如下所示:

$input= 'Обращение РљР°С';



$s= str_replace('С?','fgr43443443',$input);
$s= mb_convert_encoding($s, "windows-1251", "utf-8");
$s= str_replace('fgr43443443','ш',$s);


echo $s;

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

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

答案 3 :(得分:0)

大多数解决方案都缺乏转换为单字节编码。 在我的情况下,我使用mb_convert_encoding($ string,&#39; windows-1251&#39;)来转换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;

}

答案 4 :(得分:-3)

试试这个,对我有用!

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