13

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

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

4

5 回答 5

28

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

$html_utf8 = mb_convert_encoding($html, "utf-8", "windows-1251");
于 2013-03-29T15:31:52.043 回答
1

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

让我举几个例子:
如果 page in utf-8,但 text inwindows-1251你会看到这样的:
???? ?? ?????? ??? ????? ??? ??????? ?? ????? ???? ??? ?????

如果 page in windows-1251,但utf-8您看到的文本是:
"Мобильные телефоны";"Apple iPhone 4

于 2015-03-25T19:27:29.727 回答
0

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

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



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


echo $s;

ps不要忘记,.php文件编码应该是UTF8。另外,在 HTML 的头部,插入UTF8的标准声明

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
于 2015-11-02T14:25:32.223 回答
0

大多数解决方案缺乏对单字节编码的转换。在我的情况下,我使用 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;

}
于 2016-06-16T15:29:37.267 回答
-3

试试这个,对我有用!

$result = str_replace ('€', '€' , $result);
于 2017-02-27T20:10:31.550 回答