2013-03-29 6 views
8

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

Alle Texte korrekt konvertiert, aber wenn Text beispielsweise in Tag <i>...</i>, es Text dann nicht konvertieren, und ich sehe somethig wie dieses Показать мн

+1

Bitte geben Sie die Zeichenfolge an, die Sie konvertieren möchten. – Ejaz

Antwort

1

Sie wissen, wie Nachricht Показать РјРЅ Sie sehen, ob Codierung für Seite windows-1251, aber Text in utf-8 codiert.
Ich sah dieses Problem in einem meiner Projekte, also ändern Sie einfach die Codierung für die Seite in utf-8 ändern und dieser Text wird korrekt angezeigt.

Lassen Sie mich einige Beispiele anführen:
wenn Seite in utf-8, aber Text in windows-1251 Sie etwas sehen wil:
???? ?? ?????? ??? ????? ??? ??????? ?? ????? ???? ??? ?????

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

+0

Dieser Text stammt aus der XML-Datei und das Problem war nur bei HTML-Tags. – user2058653

0

ich verwende manuelle convertation (Zeichen-für-Zeichen) immer, wie folgt aus:

$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 Dateicodierung UTF8 sein sollte. auch im Kopf des HTML, legen Sie Standarderklärung für UTF8

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

Die meisten Lösungen Umstellung auf Single-Byte-Codierung fehlt. Ich benutze mb_convert_encoding ($ string, 'windows-1251'), um in meinem Fall 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; 

} 
-2

versuchen Sie das, funktioniert für mich!

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

Wie ist das besser als die angenommene Antwort von vor vier Jahren? – AmericanUmlaut