Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
Problem z kodowaniem.
Jak wiadomo są 3 kodowania najczęściej wykorzystywane na polskich stronach internetowych: utf-8, iso-8859-2 oraz windows-1250. Teoretycznie wybierając jeden z nich mamy pewność, iż wszystkie dane przesyłane do naszego serwisu są właśnie w wybranym kodowaniu, niestety jak się okazuje tylko teoretycznie tak jest…
Załóżmy, iż budujemy stronę wykorzystującą kodowanie ISO, w związku z czym wszystkie dane jakie są przesyłane do naszego serwisu powinny mieć właśnie to kodowanie.
Przesyłając dane za pomocą zwykłych formularzy otrzymujemy polskie znaki w standardzie ISO, czyli tak jak się tego spodziewamy. Niestety wysyłając tekst z polskimi znakami za pomocą JavaScriptu w niektórych sytuacjach możemy otrzymać kodowanie utf-8 (JavaScript czasami automatycznie koduje znaki spoza tabeli ASCII). Ciekawa sytuacja jest również, gdy ktoś ręcznie wpisze adres - wówczas wpisane znaki są kodowane systemem windows-1250 (jeżeli pracujemy pod systemem M$), co jeszcze bardziej komplikuje sytuacje.
Wejdź na stronę: http://webprogramming.pl/blog/kodowanie.php, aby zobaczyć przykład. Prawidłowe kody dla polskich znaczków w różnych kodowaniach wyglądają następująco (wartości podane w systemie dziesiętnym):
| utf | iso | win | znak | utf | iso | win | znak | |
| 260 | 161 | 165 | Ą | 161 | 177 | 185 | ą | |
| 280 | 202 | 202 | Ę | 281 | 234 | 234 | ę | |
| 211 | 211 | 211 | Ó | 243 | 243 | 243 | ó | |
| 346 | 166 | 140 | Ś | 347 | 182 | 156 | ś | |
| 321 | 163 | 163 | Ł | 322 | 179 | 179 | ł | |
| 379 | 175 | 175 | Ż | 380 | 191 | 191 | ż | |
| 377 | 172 | 143 | Ź | 378 | 188 | 159 | ź | |
| 262 | 198 | 198 | Ć | 263 | 230 | 230 | ć | |
| 323 | 209 | 209 | Ń | 324 | 241 | 241 | ń |
Próba rozwiązania tego problemu zostanie przedstawiona w następnym artykule.
Napisz komentarz