[PHP, MySQL] Złe kodowanie znaków

Witam. Co może być przyczyną złego kodowania w bazie danych? Mam tabele w której zapisywane są ogłoszenia, ponad 100 zostało już dodanych i wszystko jest dobrze poza jednym.

 

Proszę o pomoc.

Możliwości może być wiele… Przede wszystkim zobacz, czy sam rekord zawiera polskie znaki. Jeśli zawiera to sprawdź kodowanie pól tabeli. Jeżeli będzie inne jak utf-8_bin to należy to poprawić. Dalej, jeżeli tutaj było ok, to sprawdź kodowanie całej tabeli. I również zmień na to co podałem wcześniej. Jeżeli nadal nie jest ok to użyj funkcji mysql_set_charset(“utf8”); zaraz po połączeniu z bazą danych w skrypcie (funkcja zależna od rodzaju połączenia). Jeżeli jeszcze jest nadal coś nie tak to problem siedzi głębiej w konfiguracji serwera.

A jeżeli rekord nie zawiera polskich znaków w tabeli? Kodowanie w bazie jest ustawione na utf8_polish_ci

Pokazuje krzaki? Coś typu “?”, albo “Æ”, “ñ”, “£” etc. w miejsca polskich znaków?

 

No to niestety raczej już tego nie naprawisz. Baza pewnie miała kodowanie latin.

 

Co możesz teraz zrobić… Hmmm… Możesz wyeksportować obecną bazę danych, otworzyć ją np po przez Notepad++ i:

  1. Jeżeli są to znaki typu “Æ”, “ñ”, “£”, możesz próbować odgadnąć ich znaczenie, np. pod “£” jest Ł. Wówczas możesz po prostu podmienić zamiast tego znaku literkę “Ł”. Problem zacznie się przy dużych i małych literach.

  2. Jeżeli masz znaki “?”, abo coś innego to pozostaje ci albo zamknąć program, albo ręcznie bawić się w edycję kodu, jeżeli znasz jezyk SQL, tak by niczego nei zepsuć.

 

Jeżeli poprawisz już kopię bazy, to możesz ją wgrać na miejsce starej.

 

Pamiętaj o wykonaniu kopii kopii bazy, w razie problemów, oczywiście, jeżeli zdecydujesz się na ten krok.