Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Kodowanie w plikach PHP, dziwny przypadek :(
Forum PHP.pl > Forum > PHP
unnamedly
Witam, sprawa wygląda tak:
Mam 3 pliki:
- pierwszy, to jest wyświetlanie komentarzy na stronie,
- drugi dodawanie komentarzy do bazy,
- trzeci odświeżanie komentarzy (SELECT do bazy).

Wszystko opiera się o jQuery (dodawanie komentarzy bez przeładowania strony).

We wszystkich plikach, mam kodowanie: iso-8859-2, w bazie mam wszędzie kodowania: latin2_general_ci.

Problem jest taki, że w pierwszym pliku, polskie znaki są prawidłowo wyświetlane,
w drugim pliku widać, że w bazie, polskie znaki nie są wyświetlane prawidłowo (przykładowe polskie znaki: ńśććżąśźćśżąć),
a o dziwo, po dodaniu rekordu i zaktualizowaniu komentarzy bez przeładowania (load() w jQuery) komentarz, który został dodany bez przeładowania i wszystkie inne komentarze, uzyskują polskie znaki (magia biggrin.gif).

Dlaczego mimo złych znaków w bazie, komentarze odświeżają się z polskimi znakami? Jak zrobić, aby polskie znaki zapisywały, lub chociaż odczytywały się z bazy?



P.S.: Wyjaśnię wszystko jeszcze raz screenami:
#1: Dodawanie komentarza: http://screenshoot.me/4vbplC ;
#2: Pozostałe komentarze przed dodaniem: http://screenshoot.me/yzuo0R ;
#3: "Magiczne" zamienienie na polskie znaki po dodaniu komentarza bez przeładowania (od 1 punktu, wszystko dzieje się bez przeładowania): http://screenshoot.me/3nj2s5 ;
#4: No i odświeżenie strony: http://screenshoot.me/7UvsHC .
modern-web
iso-8859-2 to dziś coraz rzadziej używany standard kodowania, dlatego...
W bazie zastosuj utf8_general_ci, a na stronie w <meta ...> wpisz charset=utf-8.
Dodatkowo przypominam, że polskie znaki wprowadzane np. z poziomu phpmyadmin-a nie zostaną zakodowane jak trzeba, więc przy ich wyświetleniu pojawią się krzaki pomimo poprawnego zapisu w bazie.
Poprawna forma dodawania stringów z polskimi znakami do bazy to przez odpowiedni formularz, który posiada to samo kodowanie co baza danych - w ten sposób w bazie pojawią się krzaki, natomiast przy ich wyświetlaniu wszystko będzie bezbłędnie.
Mam nadzieję, że trafiłem w problem.
unnamedly
Witam, dziękuję za odpowiedź, jednakże po dodaniu rekordu z polskimi znakami bezpośrednio z phpMyAdmin-a, znaki są prawidłowo dodane i prawidłowo są odczytywane smile.gif

Jednak po odświeżeniu bez przeładowania (dodania nowego commenta), znowu dzieje się magia : http://screenshoot.me/XfXrks biggrin.gif Komentarz widoczny niżej, to ten, który był prawidłowo zakodowany w bazie i który był poprawnie odczytywany, jednak tu jest sytuacja odwrotna, do opisanej w pierwszym poście. Już nic z tego nie rozumiem :/


Kiedy zastosowuję UTF-8 w charset`cie, w bazie i kodowaniu pliku, to już zupełnie polskie znaki zamieniają się na znaki zapytania, a z iso-8859-2 nie ma problemu w innych plikach, więc jakby się dało coś wykombinować z iso, to byłbym wdzięczny sad.gif
szalek01
Nie prześlesz polskich znaków ajaxem bez użycia utf-8.
Dodaj odpowiednie nagłówki tak jak mówi modern-web i przekonwertuj pliki jeśli są w innym kodowaniu na utf-8.
unnamedly
Dzięki wielkie! To działa! Zmieniłem wszystkie możliwe kodowania i wszędzie na UTF-8 i wszystko ok smile.gif
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.