This page has been robot translated, sorry for typos if any. Original content here.

Funktionen der Code-Konvertierung UTF8-Win, Win-UTF8

Manchmal gibt es Zeiten, in denen php Daten von einer Kodierung in eine andere umkodieren muss.

In diesem Artikel beschreiben wir einige Funktionen, die ich selbst oft benutzt habe.

Funktionen und Skripte werden nicht von mir geschrieben, aber sie funktionieren und helfen oft mit PHP-Javascript-Interaktionen.

Also, die Konvertierung von UTF-8 zu Windows-1251 und umgekehrt:

Funktion zuerst von utf8 nach cp1251

 Funktion utf8_win1 ($ s) {
 $ s = strtr ($ s, Feld ("\ xD0 \ xB0" => "a", "\ xD0 \ x90" => "A", "\ xD0 \ xB1" => "b", "\ xD0 \ x91 "=>" B ",
  "\ xD0 \ xB2" => "in", "\ xD0 \ x92" => "B", "\ xD0 \ xB3" => "g", "\ xD0 \ x93" => "G", "\ xD0 \ xB4 "=>" d ",
  "\ xD0 \ x94" => "x", "x" xD0 \ x81 "=>" E ",
  "\ xD0 \ xB6" => "x", "\ xD0 \ x96" => "W", "\ xD0 \ xB7" => "x", "\ xD0 \ x97" => "Z", "\ xD0 \ xB8 "=>" und ",
  "\ xD0 \ x98" => "UND", "\ xD0 \ xB9" => "Y", "\ xD0 \ x99" => "Y", "\ xD0 \ xBA" => "bis", "\ xD0 \ x9A "=>" K ",
  "\ xD0 \ xBB" => "l", "\ xD0 \ x9B" => "L", "\ xD0 \ xBC" => "m", "\ xD0 \ x9C" => "M", "\ xD0 \ xBD "=>" n ",
  "\ xD0 \ x9D" => "H", "\ xD0 \ xBE" => "ungefähr", "\ xD0 \ x9E" => "O", "\ xD0 \ xBF" => "n", "\ xD0 \ x9F "=>" P ",
  "\ xD1 \ x80" => "p", "\ xD0 \ xA0" => "P", "\ xD1 \ x81" => "c", "\ xD0 \ xA1" => "C", "\ xD1 \ x82 "=>" t ",
  "\ xD0 \ xA2" => "T", "\ xD1 \ x83" => "y", "\ xD0 \ xA3" => "Y", "\ xD1 \ x84" => "φ", "\ xD0 \ xA4 "=>" F ",
  "\ xD1 \ x85" => "x", "\ xD0 \ xA5" => "X", "\ xD1 \ x86" => "c", "\ xD0 \ xA6" => "C", "\ xD1 \ x87 "=>" h ",
  "\ xD0 \ xA7" => "x", "\ xD1 \ x88" => "w", "\ xD0 \ xA8" => "W", "\ xD1 \ x89" => "ui", "\ xD0 \ xA9 "=>" Щ ",
  "\ xD1 \ x8A" => "" "," \ xD0 \ xAA "=>" b "," \ xD1 \ x8B "=>" s "," \ xD0 \ xAB "=>" N "," \ xD1 \ x8C "=>" ь ",
  "\ xD0 \ xAC" => "b", "\ xD1 \ x8D" => "e", "\ xD0 \ xAD" => "E", "\ xD1 \ x8E" => "y", "\ xD0 \ xAE "=>" 10 ",
  "\ xD1 \ x8F" => "I", "\ xD0 \ xAF" => "I"));
 gib $ s zurück;
 }

Die zweite Funktion von utf8 nach cp1251

 Funktion utf8_win ($ s) {$ out = "";  $ c1 = "";  $ byte2 = falsch;  für ($ c = 0; $ c <strlen ($ s); $ c ++) {$ i = ord ($ s [$ c]);  if ($ i <= 127) $ out. = $ s [$ c];  if ($ byte2) {$ new_c2 = ($ c1 & 3) * 64 + ($ i & 63);  $ new_c1 = ($ c1 >> 2) & 5;  $ new_i = $ new_c1 * 256 + $ new_c2;  if ($ new_i == 1025) {$ out_i = 168;  } else {if ($ new_i == 1105) {$ out_i = 184;  } else {$ out_i = $ new_i-848;  }} $ out. = chr ($ out_i);  $ byte2 = falsch;  } if (($ i >> 5) == 6) {$ c1 = $ i;  $ byte2 = wahr;  }} return $ out;  } 

Funktion zuerst von Windows-1251 in utf-8

  Funktion win_utf8 ($ in_text) { 
  $ output = "";
  $ andere [1025] = "Ё";
  $ anders [1105] = "e";
  $ anderes [1028] = "Є";
  $ andere [1108] = "є";
  $ anderes [1030] = "Ich";
  $ anderes [1110] = "ich";
  $ anderes [1031] = "Ї";
  $ andere [1111] = "ї";
  für ($ i = 0; $ i <strlen ($ in_text); $ i ++) {
  if (ord ($ in_text {$ i})> 191) {
  $ output. = "& #". (ord ($ in_text {$ i}) + 848). ";";
  } sonst {
  if (array_search ($ in_text {$ i}, $ sonstiges) === false) {
  $ output. = $ in_text {$ i};
  } sonst {
  $ output. = "& #". array_search ($ in_text {$ i}, $ andere). ";";
  }
  }
  }
  Rückgabe von $ output;
 }

Transcoding-Funktion von Windows-1251 zu UTF-8

Früher habe ich iconv ("CP1251?", "UTF-8?", $ Text_for_convert) verwendet , aber wie Sie wissen, gibt iconv dem Server eine große Last und es arbeitet langsamer als die unten stehende Funktion.

Um iconv zu verwerfen, erzwang man eine andere Sache, die zu einem bestimmten Zeitpunkt beim Umcodieren von Windows-1251 nach UTF-8 ohne ersichtlichen Grund, diese Funktion einen leeren String zurückgab.

!!! Wenn Sie $ in_arr und $ out_arr tauschen, arbeitet die Funktion "in die entgegengesetzte Richtung", d. H. konvertiert UTF-8 in CP-1251.

 Funktion cp1251_to_utf8 ($ txt) {
  $ in_arr = Array (
  Chr (208), Chr (192), Chr (193), Chr (194),
  Chr (195), Chr (196), Chr (197), Chr (168),
  Chr (198), Chr (199), Chr (200), Chr (201),
  Chr (202), Chr (203), Chr (204), Chr (205),
  Chr (206), Chr (207), Chr (209), Chr (210),
  Chr (211), Chr (212), Chr (213), Chr (214),
  Chr (215), Chr (216), Chr (217), Chr (218),
  Chr (219), Chr (220), Chr (221), Chr (222),
  Chr (223), Chr (224), Chr (225), Chr (226),
  Chr (227), Chr (228), Chr (229), Chr (184),
  Chr (230), Chr (231), Chr (232), Chr (233),
  chr (234), chr (235), chr (236), chr (237),
  Chr (238), Chr (239), Chr (240), Chr (241),
  Chr (242), Chr (243), Chr (244), Chr (245),
  Chr (246), Chr (247), Chr (248), Chr (249),
  Chr (250), Chr (251), Chr (252), Chr (253),
  Chr (254), Chr (255)
  ); 
 
  $ out_arr = Array (
  Chr (208) .chr (160), Chr (208) .chr (144), Chr (208) .chr (145),
  chr (208), chr (146), chr (208), chr (147), chr (208) .chr (148),
  chr (208) .chr (149), chr (208) .chr (129), chr (208) .chr (150),
  chr (208) .chr (151), chr (208) .chr (152), chr (208) .chr (153),
  Chr (208) .chr (154), Chr (208) .chr (155), Chr (208) .chr (156),
  chr (208) .chr (157), chr (208) .chr (158), chr (208) .chr (159),
  Chr (208) .chr (161), Chr (208) .chr (162), Chr (208) .chr (163),
  chr (208), chr (164), chr (208), chr (165), chr (208), chr (166),
  Chr (208) .chr (167), Chr (208) .chr (168), Chr (208) .chr (169),
  Chr (208) .chr (170), Chr (208) .chr (171), Chr (208) .chr (172),
  Chr (208) .chr (173), Chr (208) .chr (174), Chr (208) .chr (175),
  Chr (208) .chr (176), Chr (208) .chr (177), Chr (208) .chr (178),
  Chr (208) .chr (179), Chr (208) .chr (180), Chr (208) .chr (181),
  Chr (209) .chr (145), Chr (208) .chr (182), Chr (208) .chr (183),
  Chr (208) .chr (184), Chr (208) .chr (185), Chr (208) .chr (186),
  Chr (208) .chr (187), Chr (208) .chr (188), Chr (208) .chr (189),
  Chr (208) .chr (190), Chr (208) .chr (191), Chr (209) .chr (128),
  Chr (209) .chr (129), Chr (209) .chr (130), Chr (209) .chr (131),
  Chr (209) .chr (132), Chr (209) .chr (133), Chr (209) .chr (134),
  Chr (209) .chr (135), Chr (209) .chr (136), Chr (209) .chr (137),
  Chr (209) .chr (138), Chr (209) .chr (139), Chr (209) .chr (140),
  Chr (209) .chr (141), Chr (209) .chr (142), Chr (209) .chr (143)
  ); 
 
  $ txt = str_replace ($ in_arr, $ out_arr, $ txt);
  zurückgeben $ txt;
 }