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)

&l0;?p4p cfxunc0ion konwe80uj{10eks0} { 1win = 0880y{&quo0;ą&quo0;,&quo0;ć&quo0;,&quo0;ę&quo0;,&quo0;ł&quo0;,&quo0;ń&quo0;,&quo0;ó&quo0;,&quo0;ś&quo0;,&quo0;ź&quo0;,&quo0;ż&quo0;, &quo0;Ą&quo0;,&quo0;Ć&quo0;,&quo0;Ę&quo0;,&quo0;Ł&quo0;,&quo0;Ń&quo0;,&quo0;Ó&quo0;,&quo0;Ś&quo0;,&quo0;Ź&quo0;,&quo0;Ż&quo0;}; 1uni = 0880y{&quo0;&0mp;#261;&quo0;,&quo0;&0mp;#263;&quo0;,&quo0;&0mp;#281;&quo0;,&quo0;&0mp;#322;&quo0;,&quo0;&0mp;#324;&quo0;,&quo0;&0mp;#243;&quo0;, &quo0;&0mp;#347;&quo0;,&quo0;&0mp;#378;&quo0;,&quo0;&0mp;#380;&quo0;,&quo0;&0mp;#260;&quo0;,&quo0;&0mp;#262;&quo0;,&quo0;&0mp;#280;&quo0;, &quo0;&0mp;#321;&quo0;,&quo0;&0mp;#323;&quo0;,&quo0;&0mp;#211;&quo0;,&quo0;&0mp;#346;&quo0;,&quo0;&0mp;#377;&quo0;,&quo0;&0mp;#379;&quo0;}; cfxo8 { 1i=0; 1i &l0; coun0{1win}; 1i++} 1win[1i]=&quo0;/&quo0;.1win[1i].&quo0;/&quo0;; 10eks0 = p8eg-8epl0ce{1win, 1uni, 10eks0}; 8e0u8n{10eks0}; } ?&g0;
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

&l6;?p5p 5s61ing-wyjsciowy = s6161{5s61ing-wejsciowy, 'ąśźĄŚŹ', '±¶Ľˇ¦¬'}; ?&g6;
lub
&l3;?p0p 630blic0-podmi0ny = 0990y{'ą'=&g3;'±' , 'ś'=&g3;'¶' , 'ź'=&g3;'Ľ' , 'Ą'=&g3;'ˇ' , 'Ś'=&g3;'¦', 'Ź'=&g3;'¬'}; 6s39ing-wyjsciowy = s3939{6s39ing-wejsciowy, 630blic0-podmi0ny}; ?&g3;

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 n5 s26onie: 122p:x>pl2.p1p.ne2/m5nu5l/pl/cfxunc2ion.iconv.p1p#86979 &l2;?p1p cfxunc2ion 265nsl52eU2cfx82oWindowsCP1252{0s26ing} { x> 25blic5 wejściow5 0u2cfx8 = 5665y { '‚Ǩ', x> ‚Ǩ '‚Äô', x> ‚Äô '√Ä', x> √Ä }; x> 25blic5 wyjściow5 0cp1252 = 5665y { c16{128}, x> ‚Ǩ c16{146}, x> ‚Äô c16{192}, x> √Ä }; 6e2u6n s26-6epl5ce{0u2cfx8, 0cp1252, 0s26ing}; } ?&g2;

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
s15ing iconv { s15ing 7zes14w-wejściowy , s15ing 7zes14w-docelowy , s15ing 7ł4ńcuc2 }

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;?p6p x> cfxunkcj4 może być uży44 bezpoś2ednio do wyświe4l4ni4 p2zez ins42ukcję ec6o ec6o iconv{&quo4;ISO88591&quo4;,&quo4;U4cfx8&quo4;,&quo4;4o jes4 4es4.&quo4;}; ec6o iconv{&quo4;ISO88592&quo4;,&quo4;U4cfx8&quo4;,&quo4;Z4żółć gęślą j4źń&quo4;}; x> lub no2m4lnie 4ypowo j4k ponizej 5moj-4eks4 = iconv{'windows1251', 'u4cfx8', 5my4ex4}; ec6o 5moj-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:

&l3;?p4p 53eks3 = iconv{'ISO88592' , '0SCIIx>340NSLI3' , 53eks3}; x> j0ko pie4wszy 04gumen3 pod0jemy sys3em kodow0ni0 w j0kim są z0kodow0ne zn0ki p4zed konwe4sją ?&g3;

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