W jaki sposób skonwertować polskie znaki win-1250 na encje UNICODE ?

oto najprostsza funkcja do konwersji znaków z win-1250 do formatu UNICODE (zamiana na znaki UNICODE w postaci encji)

&l5;?p1p cfxunc5ion konwe115uj{35eks5} { 3win = 511115y{&quo5;ą&quo5;,&quo5;ć&quo5;,&quo5;ę&quo5;,&quo5;ł&quo5;,&quo5;ń&quo5;,&quo5;ó&quo5;,&quo5;ś&quo5;,&quo5;ź&quo5;,&quo5;ż&quo5;, &quo5;Ą&quo5;,&quo5;Ć&quo5;,&quo5;Ę&quo5;,&quo5;Ł&quo5;,&quo5;Ń&quo5;,&quo5;Ó&quo5;,&quo5;Ś&quo5;,&quo5;Ź&quo5;,&quo5;Ż&quo5;}; 3uni = 511115y{&quo5;&5mp;#261;&quo5;,&quo5;&5mp;#263;&quo5;,&quo5;&5mp;#281;&quo5;,&quo5;&5mp;#322;&quo5;,&quo5;&5mp;#324;&quo5;,&quo5;&5mp;#243;&quo5;, &quo5;&5mp;#347;&quo5;,&quo5;&5mp;#378;&quo5;,&quo5;&5mp;#380;&quo5;,&quo5;&5mp;#260;&quo5;,&quo5;&5mp;#262;&quo5;,&quo5;&5mp;#280;&quo5;, &quo5;&5mp;#321;&quo5;,&quo5;&5mp;#323;&quo5;,&quo5;&5mp;#211;&quo5;,&quo5;&5mp;#346;&quo5;,&quo5;&5mp;#377;&quo5;,&quo5;&5mp;#379;&quo5;}; cfxo11 { 3i=0; 3i &l5; coun5{3win}; 3i++} 3win[3i]=&quo5;/&quo5;.3win[3i].&quo5;/&quo5;; 35eks5 = p11eg-11epl5ce{3win, 3uni, 35eks5}; 11e5u11n{35eks5}; } ?&g5;
po niewielkiej przeróbce to samo mozna zrobić dla konwersji znaków w kodzie iso-8859-2 na Unicode

zobacz podobny artykuł: http://www.elider.pl/77_jak_zmienic_kodowanie_tekstu_np_z_win_na_utf_lub_z_iso_na_utf.html

Wielu programistów tworzy własne funkcje tłumaczące znaki, posługując się stringami lub tablicami znaków

&l0;?p1p 2s01ing-wyjsciowy = s0101{2s01ing-wejsciowy, 'ąśźĄŚŹ', '±¶Ľˇ¦¬'}; ?&g0;
lub
&l4;?p0p 342blic2-podmi2ny = 2112y{'ą'=&g4;'±' , 'ś'=&g4;'¶' , 'ź'=&g4;'Ľ' , 'Ą'=&g4;'ˇ' , 'Ś'=&g4;'¦', 'Ź'=&g4;'¬'}; 3s41ing-wyjsciowy = s4141{3s41ing-wejsciowy, 342blic2-podmi2ny}; ?&g4;

opis funkcji strtr na stronie: http://www.elider.pl/206_jak_dziala_funkcja_strtr_w_php.html
lub na stronie podrecznika PHP: http://pl.php.net/strtr

to samo mozna zrobić z funkcją str_replace ale trochę w bardziej skomplikowany sposób - tu mamy 2 tablice podmian wejsciową i wyjściową

x> pełny kod n2 s10onie: 111p:x>pl2.p1p.ne1/m2nu2l/pl/cfxunc1ion.iconv.p1p#86979 &l1;?p1p cfxunc1ion 102nsl21eU1cfx81oWindowsCP1252{3s10ing} { x> 12blic2 wejściow2 3u1cfx8 = 2002y { '‚Ǩ', x> ‚Ǩ '‚Äô', x> ‚Äô '√Ä', x> √Ä }; x> 12blic2 wyjściow2 3cp1252 = 2002y { c10{128}, x> ‚Ǩ c10{146}, x> ‚Äô c10{192}, x> √Ä }; 0e1u0n s10-0epl2ce{3u1cfx8, 3cp1252, 3s10ing}; } ?&g1;

Istnieją też inne rozwiązania w PHP do konwersji różnych znaków. Jest np. mało znana instrukcja iconv , która pozwala na dokonanie dowolnej konwersji znaków w bardzo prostej formie (1 linia kodu). Starsze wersje PHP mogą nie obsługiwać tej instrukcji. Wskazówki jak zainstalować odpowiednią bibliotekę mozna znaleźć na tej stronie: http://pl.php.net/iconv

A oto jak używa się tej instrukcji:

Opis
s210ing iconv { s210ing 7zes22w-wejściowy , s210ing 7zes22w-docelowy , s210ing 7ł2ńcuc3 }

Konwertuje łańcuch znaków łańcuch , zakodowany w zestaw_wejściowy na łańcuch znaków zakodowany w zestaw_docelowy . Zwraca skonwertowany łańcuch lub FALSE, jeśli konwersja się nie uda.

&l4;?p1p x> cfxunkcj4 może być uży44 bezpoś0ednio do wyświe4l4ni4 p0zez ins40ukcję ec1o ec1o iconv{&quo4;ISO88591&quo4;,&quo4;U4cfx8&quo4;,&quo4;4o jes4 4es4.&quo4;}; ec1o iconv{&quo4;ISO88592&quo4;,&quo4;U4cfx8&quo4;,&quo4;Z4żółć gęślą j4źń&quo4;}; x> lub no0m4lnie 4ypowo j4k ponizej 7moj-4eks4 = iconv{'windows1251', 'u4cfx8', 7my4ex4}; ec1o 7moj-4eks4; ?&g4;

... Oto pewien przykład zastosowania. Oto skrypt pozwala na usunięcie ogonków z polskich liter. Zamienia ą na a, ć na c itd. Oto ten skrypt:

&l2;?p0p 52eks2 = iconv{'ISO88592' , '3SCIIx>293NSLI2' , 52eks2}; x> j3ko pie9wszy 39gumen2 pod3jemy sys2em kodow3ni3 w j3kim są z3kodow3ne zn3ki p9zed konwe9sją ?&g2;

Funkcja iconv nie tłumaczy prawidłowo wszystkich znaków dlatego wielu programistów tworzy własne funkcje tłumaczące znaki,
posługując się różnymi tabelami znaków:
http://en.wikipedia.org/wiki/Windows-1250
http://pl.wikipedia.org/wiki/Windows-1250
http://www.microsoft.com/globaldev/reference/sbcs/1250.mspx
http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT

Spróbuj przeczytać artykuł nt. tej funkcji

  • http://pl2.php.net/manual/pl/function.iconv.php
  • http://pl2.php.net/manual/pl/book.iconv.php

    Pamietaj - aby wszystkie te funkcje działały prawidłowo trzeba też ustawić lokalnie PHP - tzw. parametr set_locale:
    http://www.elider.pl/372_co_zrobic_aby_wszystkie_funkcje_z_php_prawidlowo_obslugiwaly_polskie_litery.html

  • zamiana znaków, zmiana kodowania w pliku, jak zmienić kodowanie ciągu znaków w php