Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kodowanie alternatywne?
Rid
post 17.12.2010, 12:29:46
Post #1





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Crozin
post 17.12.2010, 12:32:33
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Pierwsze 256 znaków Unicode w kodowaniu UTF-8 jest kompatybline z ASCII dlatego może to być mylnie rozpoznawane jako to ostatnie.

Ten post edytował Crozin 17.12.2010, 12:39:57
Go to the top of the page
+Quote Post
Rid
post 17.12.2010, 12:38:14
Post #3





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


W takim razie funkcja
Kod
mb_detect_encoding($zmienna, "auto");
posiada wady,i nie ma za bardzo co się nią sugerować:/ wstydnis.gif
Go to the top of the page
+Quote Post
Crozin
post 17.12.2010, 12:44:04
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Rid
post 17.12.2010, 12:55:26
Post #5





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


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ź.
Go to the top of the page
+Quote Post
Crozin
post 17.12.2010, 13:11:29
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Mephistofeles
post 17.12.2010, 21:09:40
Post #7





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:52