conversion Fukntsii UTF8-Win, Win-UTF8
Parfois, il y a des moments où vous avez besoin de recoder les données php d'un encodage à un autre.
Cet article décrit quelques caractéristiques que je ne parle pas seulement utilisés.
Les fonctions et les scripts ne sont pas écrites par moi, mais en travaillant avec succès et aident souvent avec des interactions php-javascript.
Ainsi, la conversion de utf-8 aux fenêtres-1251 et à l'arrière:
La première fonction de utf8 dans cp1251
fonction utf8_win1 ($ s) { $ S = strtr ($ s, array ( "\ xD0 \ XB0" => "et", "\ xD0 \ x90" => "A", "\ xD0 \ xB1" => "b", "\ xD0 \ x91 "=>" B " "\ XD0 \ xB2" => "in", "\ xD0 \ x92" => "La", "\ xD0 \ xB3" => "g", "\ xD0 \ x93" => "G", "\ xD0 \ xB4 "=>" q " "\ XD0 \ x94" => "D", "\ xD0 \ XB5" => "e", "\ xD0 \ x95" => "E", "\ Xd1 \ x91" => "e", "\ xD0 \ x81 "=>" E " "\ XD0 \ xB6" => "w", "\ xD0 \ x96" => "F", "\ xD0 \ xB7" => "s", "\ xD0 \ x97" => "Z", "\ xD0 \ XB8 "=>" et " "\ XD0 \ x98" => "ET", "\ xD0 \ XB9" => "second", "\ xD0 \ x99" => "J", "\ xD0 \ XBA" => "à", "\ xD0 \ X9A "=>" K " "\ XD0 \ XBB" => "L", "\ xD0 \ X9b" => "A", "\ xD0 \ XBC" => "m", "\ xD0 \ x9C" => "M", "\ xD0 \ XBD "=>" n " "\ XD0 \ x9d" => "H", "\ xD0 \ XBE" => "environ", "\ xD0 \ X9E" => "A propos", "\ xD0 \ XBF" => "n" "\ xD0 \ x9F "=>" P " "\ XD1 \ x80" => "P", "\ xD0 \ xa0" => "P", "\ Xd1 \ x81" => "avec", "\ xD0 \ XA1" => "C", "\ Xd1 \ x82 "=>" m " "\ XD0 \ xA2" => "T", "\ Xd1 \ x83" => "Y", "\ xD0 \ XA3" => "Y", "\ Xd1 \ x84" => "f", "\ xD0 \ XA4 "=>" F " "\ XD1 \ x85" => "x", "\ xD0 \ xA5" => "X", "\ Xd1 \ x86" => "n", "\ xD0 \ XA6" => "C", "\ Xd1 \ x87 "=>" h " "\ XD0 \ xA7" => "B", "\ Xd1 \ x88" => "w", "\ xD0 \ xA8" => "W", "\ Xd1 \ x89" => "u", "\ xD0 \ xA9 "=>" Y ", "\ XD1 \ X8A" => "b", "\ xD0 \ Xaa" => "b", "\ Xd1 \ X8B" => "s", "\ xD0 \ xab" => "Y", "\ Xd1 \ X8c "=>" s " "\ XD0 \ XAC" => "L", "\ Xd1 \ X8d" => "e", "\ xD0 \ xAD" => "E", "\ Xd1 \ X8E" => "w", "\ xD0 \ XAE "=>" U " "\ XD1 \ X8F" => "I", "\ xD0 \ XAF" => "I")); return $ s; }
La fonction de la seconde en 1251 utf8
fonction utf8_win ($ s) {$ out = ""; C1 $ = ""; $ Byte2 = false; for ($ c = 0; $ c <strlen ($ s); $ c ++) {$ i = ord ($ s [$ c]); . Si ($ i <= 127) $ sur [$ le c] de = $; if (Byte2 $) {new_c2 $ = ($ c1 & 3) * 64 + ($ i & 63); $ New_c1 = ($ c1 >> 2) et 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 = false; } Si (($ i >> 5) == 6) {$ c1 = $ i; $ Byte2 = true; }} Return $ out; }
La fonction de la première fenêtres-1251 en UTF-8
fonction win_utf8 ($ in_text) { $ Sortie = ""; $ Autres [1025] = "E"; $ Autres [1105] = "e"; $ Autres [1028] = "E"; $ Autres [1108] = "E"; $ Autres [1030] = "I"; $ Autres [1110] = "i"; $ Autres [1031] = "Ji"; $ Autres [1111] = "Ji"; for ($ i = 0; $ i <strlen ($ in_text); $ i ++) { if (ord ($ in_text {$ i})> 191) { .. $ Sortie = "& #" (ord ($ in_text {$ i}) + 848). ";"; } Else { if (array_search ($ in_text {i} $, $ autre) === false) { . $ Output = $ in_text {$ i}; } Else { $ Sortie = "& #" array_search ($ in_text {$ i}, $ autres) ... ";"; } } } return $ sortie; }
fonction de transcodage des fenêtres-1251 à utf-8
Auparavant utilisé iconv ( "1251?," UTF-8?, $ Text_for_convert), mais comme vous le savez iconv donne une grosse charge sur le serveur et est plus lente que la fonction fournie ci - dessous.
Abandon forcé iconv même alors, à un certain moment lors du transcodage des fenêtres-1251 en UTF-8 pour aucune raison apparente, cette fonction a été le retour d'une chaîne vide.
!!! Si le in_arr swap $ et out_arr $, la fonction ne fonctionnera «à l'envers», à savoir convertira UTF-8 CP-1251.
fonction 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); retour txt $; }
Commentaires
Commentant, gardez à l' esprit que le contenu et le ton de vos messages peuvent blesser les sentiments des gens réels, montrer du respect et de la tolérance à ses interlocuteurs, même si vous ne partagez pas leur avis, votre comportement en termes de liberté d'expression et de l' anonymat offert par Internet, est en train de changer non seulement virtuel, mais dans le monde réel. Tous les commentaires sont cachés à l'index, le contrôle anti - spam.