Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie alternatywne?
Forum PHP.pl > Forum > PHP
Rid
Zauważyłem dość ciekawą rzecz u siebie w formularzu,mianowicie kiedy używam standardowych liter bez znaków polskich , po wysłaniu formularza zmienne kodowane są w formacie ASCII ,kiedy użyje choćby jednej polskiej literki wtedy zmienne są kodowane w UTF-8 ,czego to może być przyczyną-wszystko mam zadeklarowane w UTF-8.Nie używam żadnych funkcji typu iconv.Hmm withstupidsmiley.gif
Crozin
Pierwsze 256 znaków Unicode w kodowaniu UTF-8 jest kompatybline z ASCII dlatego może to być mylnie rozpoznawane jako to ostatnie.
Rid
W takim razie funkcja
Kod
mb_detect_encoding($zmienna, "auto");
posiada wady,i nie ma za bardzo co się nią sugerować:/ wstydnis.gif
Crozin
Nie, nie posiada wad. Po prostu nie można tego odróżnić (tutaj trzeba zaznaczyć, że problem ten dotyczy tylko UTF-8). Bo jak odróżnić te dwa zapisy?
Kod
101010101010100101110101101010101010101010101010100101 // ASCII
101010101010100101110101101010101010101010101010100101 // Unicode, UTF-8
Rid
Mogłoby odróżnić choćby poprzez meta lub header w jaki sposób są zadeklarowane,no ale ja to nie wnikam funkcji tej nie tworzyłem,a po za tym nie powoduje nieprawidłowego działania formularza.Uważam jednak że brak odróżnienia ASCII od UTF-8 to drobny błąd tej funkcji.Może się kiedyś zdarzyć że kogoś to zmyli:).Prawie i mnie by zmyliło -dziękuję za odpowiedź.
Crozin
mb_detect_encoding operuje na tekście. Nie sprawdza czy jest to może tekst, który jest fragmentem odwiedzi HTTP, albo dokumentem HTML. Zwróć uwagę, że jako drugi parametr możesz podać kolejność w jakiej mają być sprawdzane kodowania - po prostu podaj UTF-8 przed ASCII. (notabene nigdy Ci tego ASCII nie wyświetli).

Jeżeli chcesz mieć pewność, że coś zakodowane jako Unikod zostanie rozpoznane jako Unikod, upewnij się, że w tekście występuje BOM. Ale to tak naprawdę więcej problemów spowoduje niż rozwiąże.
Mephistofeles
Tak samo jest chociażby w Notepad++, żeby zapisać w Unicode trzeba dodać przynajmniej jeden znak "szczególny". Tak jak pisał Crozin początkowe znaki są identyczne. Jeśli bardzo chcesz rozróżniać kodowania automatycznie wyślij w formularzu dodatkowy znak z puli Unicode.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.