it-swarm.com.de

PHP Konvertieren Sie Windows-1251 in UTF 8

Ich habe einen kleinen HTML-Code und muss ihn in UTF-8 konvertieren.
Ich benutze diese iconv("windows-1251", "utf-8", $html);

Der gesamte Text wird korrekt konvertiert, aber wenn Text beispielsweise im Tag <i>...</i> vorhanden ist, wird Text nicht konvertiert, und ich sehe etwas davon Показать мн

8
user2058653

Wenn Sie Zugriff auf das Multibye-Paket haben, können Sie es ausprobieren. Siehe die Seite PHP hier: http://www.php.net/manual/de/function.mb-convert-encoding.php

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

Sie wissen, in einer Nachricht wie Показать РјРЅ sehen Sie, ob Für die Seite windows-1251 kodiert ist, der Text aber in utf-8 codiert ist.
Ich habe dieses Problem in einem meiner Projekte gesehen. Ändern Sie die Kodierung für die Seite in utf-8 einfach und dieser Text wird korrekt angezeigt.

Lassen Sie mich einige Beispiele anführen:
wenn Seite in utf-8, aber Text in windows-1251 sieht man so etwas wie:
???? ?? ?????? ??? ????? ??? ??????? ?? ????? ???? ??? ????? 

wenn Seite in windows-1251, aber Text in utf-8, sehen Sie Folgendes:
"Мобильные телефоны";"Apple iPhone 4

Die meisten Lösungen haben keine Konvertierung in Einzelbyte-Kodierung. Ich verwende in meinem Fall mb_convert_encoding ($ string, 'windows-1251'), um von UTF-8 zu konvertieren.

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;

}
0
Sergey

Ich verwende immer die manuelle Konvertierung (Zeichen für Zeichen) wie folgt:

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



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


echo $s;

p.s. Vergessen Sie nicht, dass die .php-Dateiverschlüsselung UTF8 sein muss. . Fügen Sie außerdem im HTML-Kopf die Standarddeklaration für UTF8 ein. 

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
0
T.Todua