Kodowanie - dziwne znaki po wysyłce POST tylko w FIREFOX |
Kodowanie - dziwne znaki po wysyłce POST tylko w FIREFOX |
27.12.2013, 12:10:48
Post
#1
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) |
Witam, strona ma jakieś 3 lata nic nie było zmieniane,
a od jakiegoś czasu zaczeły się pojawiać dziwne znaki typu: ďťż znaki te pojawiają się tylko po wysyłce metodą POST tylko w przeglądarce FIREFOX ! na Chrome i Opera nie ma takiego problemu - reszy nie testowalem czy ktoś może to wyjaśnić ? Zapisuje pola w formularzu w bazie za pomocą POST i wtedy na całej stronie wstawiają dziwne znaki ďťż a zamiast: ł jest Ĺ ż jest Ĺź Pamiętam swego czasu Opera miała takie problemy, nie żebym zmieniał coś w przeglądarce bo patrzyłem na innych komputerach i jest to samo. Czy ktoś ma jakiś pomysł ? |
|
|
27.12.2013, 12:15:57
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
|
|
|
27.12.2013, 14:41:12
Post
#3
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%) |
czytałeś wogóle mój post ?
Ten post edytował piotr485 27.12.2013, 14:41:26 |
|
|
27.12.2013, 14:51:26
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
Tak?
Cytat zamiast: ł jest Ĺ ż jest Ĺź Jakie masz kodowanie, format? Jakiś kod? |
|
|
27.12.2013, 14:58:13
Post
#5
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) |
Jak dokonujesz tego zapisywania i wyświetlania na stronie? Wysyłasz zapytanie POST, bierzesz te wartości z pól input, zapisujesz do DB a następnie pobierasz je jeszcze raz z DB i wrzucasz na stronę?
1. Sprawdź, czy w bazie danych znaki są zapisane poprawnie. 2. Sprawdź kodowanie w bazie danych. 3. Zapisz ręczne (czyt. dopisz do zapytania te litery, któe się zamieniają w FF) do zapytania SQL i wykonaj bezpośrednio w kodzie PHP bez używania formularza. 4. Wykonujesz na tych stringach jakieą operacje? Czasami zdarza się, że niektóre funkcje w PHP rozdzielają znaki, na przykład polskie "ł", na dwa znaki, bo fizycznie faktycznie polskie "ł" składa się z dwóch innych znaków i jest zakodowane w wiekszości przypadków w UTF8 dlatego my widzimy w przeglądarce nasze "ł" zamiast krzaczków. |
|
|
4.02.2014, 15:37:58
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (0%) |
Czy coś się wyjaśniło w powyższym temacie? Udało się to rozwikłać?
Mam ten sam problem. Tylko w firefoxie i tylko po wysłaniu formularza metodą POST zmienia się całe kodowanie polskich znaków na stronie - wszystkie poolskie znaki wyświetlają się jako krzaki. Dzięki za wszelkie sugestie. Ten post edytował drake11 4.02.2014, 15:41:43 |
|
|
5.02.2014, 16:05:49
Post
#7
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 2 Dołączył: 4.09.2013 Ostrzeżenie: (0%) |
jakie masz kodowanie?
dodaj do formularza w tagu form enctype="text/plain" jeśli przesyłasz nim tekstowe inputy. pytanie czy w pliku w którym obsługujesz formularz masz dodane: header('content-type: text/plain;charset=utf-8) <-pisane z palca, mogą być błędy. utf-8 to rodzaj kodowania, ty podaj takie jakie masz. też pytanie czy pliki masz odpowiednio kodowane. |
|
|
5.02.2014, 16:23:18
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (0%) |
Zapodanie w formularzu enctype="text/plain" nie działało, też próbowałem.
W moim przypadku zadziałało w końcu wymuszenie kodowania w pliku php poprzez właśnie header('Content-Type: text/html; charset=utf-8'); Sposób poskutkował. Powodu dlaczego tak się działo niestety nie znalazłem. Dzięki. |
|
|
5.02.2014, 17:28:42
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 366 Pomógł: 1115 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Mogło się tak dziać dlatego że serwer był skonfigurowany domyślnie na jakieś ISO. Pierwszą rzeczą którą powinno się robić to ustawienie kodowania właśnie przez content-type.
-------------------- |
|
|
5.02.2014, 21:22:35
Post
#10
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 2 Dołączył: 4.09.2013 Ostrzeżenie: (0%) |
krótki kurs jak to działa(w większości przypadków, chodzą bajki, że niektóre serwery są dziwnie skonfigurowane):
Serwer czyta plik .php(.html czy .css olewa) jeśli znajdzie tam jakąś funkcję header to zawarte w niej dane dołącza do nagłówka http. Jeśli żaden header nie mówił o "Content-type" to serwer sam próbuje zgadnąć jaki ten content type jest. Czasem patrzy na rozszerzenie pliku, czasem próbuje to sam zdekodować. Ale zazwyczaj ma odgórnie ustawione co wrzucić do nagłówka o nazwie "content-type" Wreszcie wysyłanie : wpierw Serwer wysyła nagłówek HTTP(w którym jest umieszczone content-type) a później plik. Te informacje dostaje przeglądarka. A teraz co robi przeglądarka. Wpierw patrzy na content type jaki dostała w HTTP. Później zaczyna czytać wysłany plik. Jeżeli dany plik przeglądarka traktuje jako text/xml (czyli np. tak powinna traktować pliki .html) to jest szansa że natknie się po drodze na taki oto tag:
albo
W takim przypadku przeglądarka sama decyduje czy wierzy programiście który napisał dany plik, czy też serwerowi. I tu już zachowanie przeglądarek bywa różne. edyta: poprawienie literówek. Ten post edytował adeptofvoltron 5.02.2014, 21:24:37 |
|
|
6.02.2014, 08:34:59
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 366 Pomógł: 1115 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Nie wprowadzaj w błąd. Nagłówki HTTP są zawsze ważniejsze niż jakieś meta w dokumencie. Przeglądarki nie czytają tego bo nie muszą. Od zawsze meta było dodatkiem.
-------------------- |
|
|
7.02.2014, 20:37:18
Post
#12
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 2 Dołączył: 4.09.2013 Ostrzeżenie: (0%) |
Nie wprowadzaj w błąd. Nagłówki HTTP są zawsze ważniejsze niż jakieś meta w dokumencie. Przeglądarki nie czytają tego bo nie muszą. Od zawsze meta było dodatkiem. 5 sekund mi starczyło by sprawdzić to w i muszę sie nie zgodzić. chrome mi zwrócił na to uwagę. wystarczyło raz ten tag meta umieścić i działały mi polskie znaki z pliku kodowanym w utf-8(localhost apache skonfigurowałem na wysłanie w naglówku iso). jak tag meta zakomentowałem to krzaczki mi wyskoczyły. naprawde łatwo to sprawdzić. |
|
|
Wersja Lo-Fi | Aktualny czas: 26.05.2024 - 04:55 |