![]() |
![]() ![]() |
![]() |
![]() ![]()
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
![]() |
|
|
![]()
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 |
|
|
![]()
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ć:/ ![]() |
|
|
![]()
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 |
|
|
![]()
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ź.
|
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:52 |