Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySQL UTF-8 bez polskich znaków
karcheus
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.06.2016

Ostrzeżenie: (0%)
-----


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ą?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Lion
post
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
emstawicki
post
Post #3





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
karcheus
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.06.2016

Ostrzeżenie: (0%)
-----


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
(IMG:https://www.autoitscript.com/forum/uploads/monthly_2016_06/utf.PNG.55b29172303e1b03b6abae9ad69e8780.PNG)

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): (IMG:https://www.autoitscript.com/forum/uploads/monthly_2016_06/saved.PNG.90e5304108d33208ccb74b91f0aad1c0.PNG)

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: (IMG:https://www.autoitscript.com/forum/uploads/monthly_2016_06/charset.png.e79ba3bf1a314a5f54fd267dde463fa3.png)

W taki sposób zapisane dane nie dam rady też prawidłowo odczytać ani przez php ani przez mój program.

Ten post edytował karcheus 23.06.2016, 12:00:27
Go to the top of the page
+Quote Post
franki01
post
Post #5





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował franki01 29.06.2016, 23:33:20
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:24