Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL UTF-8 bez polskich znaków
Forum PHP.pl > Forum > PHP
karcheus
Witam.
Mam program, który zapisuje do bazy danych MySQL dane tekstowe, ale nie da się tam zmienić, żeby zapisywało w UTF-8 (baza oczywiście jest ustawiona jako utf-8). W rezultacie w bazie lądują wpisy bez polskich znaków. Czy da się temu zaradzić, żeby te znaki potem odczytać jako polskie jakąś funkcją?
Lion
Pokaż jakiś przykład tego co zapisało się w bazie. Jeśli to jest np "a" zamiast "ą" no to magii nie ma. Jeśli jakieś "krzaki", np. "ą", "ą", "ą" lub coś takiego to może coś jeszcze da się zrobić.
emstawicki
http://forum.php.pl/index.php?showtopic=250738

^^ Świeżutki temat. Zasada prosta - baza, narzędzie, skrypt, plik z danymi, skrypt wczytujący, skrypt wyświetlający - kodowanie musi być to samo.
karcheus
Cały problem chyba nie leży po stronie PHP ale opiszę go bo być może ktoś będzie w stanie mi pomóc.

Kolumna w której zapisuje dane ma ustawione kodowanie na utf8


Do operacji związanych z bazą danych używam zewnętrznego programu napisanego w języku AutoIt. Domyślną wartością kodowania znaków dla połączenia z bazą danych jest "latin1". Jak zapisze w taki sposób ciąg znaków "aącćeęlłnńoósśzżzź" to w bazie wygląda to w ten sposób (odczytane przy użyciu programu MySQL Administrator):

Co ciekawe, jeśli teraz przez mój program użyje zapytania typu "SELECT" z ustawionym kodowaniem znaków 'latin1' to wyczytane informacje będą wyświetlane z prawidłowymi polskimi znakami. Niestety po wczytaniu danych przez przeglądarkę z pliku php mam szlaczki (bo kodowanie tam mam ustawione na utf8)

Jeśli zmienię kodowanie znaków na "utf8" w parametrach połączenia z bazą MySQL w moim programie (AutoIt) to wtedy zapisany ciąg wygląda w bazie w taki sposób:

W taki sposób zapisane dane nie dam rady też prawidłowo odczytać ani przez php ani przez mój program.
franki01
Zaraz po połączeniu do mysql, wyślij:
Kod
SET NAMES "utf8" COLLATE "utf8_general_ci"


I tak jak napisał @emstawicki - upewnij się, że kodowanie samego pliku zapisującego dane do bazy jest poprawne.

Czy korzystasz z jakiegoś phpmyadmina i na nim bazujesz odczytując lub zapisując informacje do bazy danych? Takie programy też korzystają z różnych kodowań i należy ustawić tam odpowiednie.
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.