Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z kodowaniem w MySQL, szystkie polskie znaki zamiejają sie w ?
Dynuel
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


zainstalowałem ostatnio najnowszego mysql'a i nie wiedzieć czemu w phpmyadminie pojawila sie nowa kolumna, we właściwościach / strukturze pola o nazwie "Metoda porównywania napisów", wszędzie o wartości "latin1_swedish_ci", nie mam pojęcia co to jest, a gdy chcę wpisać jakieś polskie znaki w phpmyadminie to zostają one zamienione na "?"

macie w ogole jakieś pojęcie jak to rozwiązać, bo ja nie! tak więc proszę o pomoc, ponieważ nie moge nic robić ze stroną(IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ....

wielkie dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
WereWolf
post
Post #2





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.05.2005

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


postanowiłem odświeżyć temat, jako że sam miałem podobny problem...
a że sobie poradziłem, to dam kilka wskazówek, które sam zauważyłem...

w moim przypadku konkretnie była to przesiadka z mysqla < 4.0 na 4.1, w sumie bez mojej wiedzy (sharehosting)

z samą stroną problemów nie było (konkretnie chodzi o forum phpbb), problem pojawił się przy próbie przejścia na nowy serwer... oczywiście nowy phpmyadmin pozmieniał kodowanie przy eksporcie bazy, a jako że w bazie były przechowywane dane w iso 8859-2 (latin2), a baza była ustawiona na latin1, to przy eksporcie powstało zupełnie nowe kodowanie, bo pomieszane utf8 z latinem... z tym sobie co prawda nie poradziłem, musiałem zamieniać ręcznie (tu pewnie pomogłaby instalacja starego phpmyadmina, jak ktoś już opisywał)

ale kontynuując... bawiłem się trochę i zepsułem sobie tabelę phpbb_posts_text, którą musiałem wrzucić na nowo na serwer... i tu mam kilka rad

jeśli macie już ściągniętą bazę, gdzie są prawidłowo kodowane polskie litery... w tym przypadku opisuję sytuację z polskimi znakami w iso 8859-2 (latin2) i bazie 4.1 ustawionej pod latin1 (default pod latin1, porównania pod latin1-swedish-ci)

przede wszystkim, jeśli macie taką sytuację, że kodowanie znakód jest w innym systemie (ale poprawnie zapisane w pliku bazy), a baza ustawiona pod inną - NIE ZWRACAJCIE UWAGI NA POLSKIE ZNAKI WYśWIETLANE W PHPMYADMINIE - gdyby nie to, już dawno miałbym problem z głowy, a tak ciągle myślałem, że coś jest nie tak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) najlepiej zrobić sobie prosty skrypt wyciągający przykładowo jeden wiersz z polskimi literami (koniecznie z dodanym meta charsetem)

bazę można spokojnie wrzucać przez phpmyadmina (nawet nowego), trzeba tylko ustawić odpowiednie kodowanie - trzeba tylko zauważyć, że odpowiednie kodowanie nie oznacza kodowania znaków w pliku!
jeśli macie taką sytuację jak ja, polskie znaki w latin2, baza w latin1, to mimo, że kodowanie znaków jest w latin2, przy uploadzie pliku wybieracie latin1 - i tu właśnie polskie znaki w phpmyadminie będą źle wyświetlane, ale na stronie będzie ok

trzeba zaznaczyć jeszcze jedną rzecz - ta sytuacja opisana jest dla serwera, który ma default charset na latin1, jeśli serwer ma to ustawione na latin2, trzeba dodać do skryptu 'set names latin1', jeśli nie chcemy konwertować każdej komórki do latin2

sytuacja jest podobna w przypadku używania własnych skryptów, jeśli dane zapisujemy w latin2 w bazie ustawionej na latin1 i serwer jest ustawiony na default latin2, to i tak musimy użyć po połączeniu do bazy zapytania 'set names latin1'


i jeszcze jedna wskazówka, odnośnie konwersji znaków, a właściwie nie konwersji samych znaków, tylko informacji o kodowaniu dla mysqla dla komórek...

przykładowo, mamy tabelę `tabela`, komórkę `tekst` char(60) - znaki w niej zapisane są w iso 8859-2 (latin2), ale metoda porównań jest latin1-swedish-ci (a co za tym idzie, character set latin1), chcemy zmienić character set na latin2... i tu był właśnie mój pierwszy błąd, rozwiązanie znalezione - po kilku godzinach szukania w necie... w manualu...

otóż przy konwersji tego rodzaju, nigdy NIE ROBIMY tak:

ALTER TABLE tabela MODIFY tekst char(60) character set latin2

w tym przypadku pojawią nam się najprawdopodobniej znaki zapytania i polskich liter nie przywrócimy, bo są to po prostu znaki zapytania, żadne nierozpoznane kodowanie

ROBIMY TAK:
najpierw konwersja do typu binarnego, żeby nie stracić danych:

ALTER TABLE tabela MODIFY tekst binary(60)

i dopiero zmiana kodowania:

ALTER TABLE tabela MODIFY char(60) character set latin2

(dla typu text zmieniamy na blob)

trzeba jeszcze zaznaczyć, że w tym przypadku znaki w bazie pozostają dokładnie takie jak były, nie jest to konwersja samego tekstu, tylko informacji dla mysqla o kodowaniu, jeśli w ten sposób zmienimy bazę, która miała znaki w bazie w latin2 a używaliśmy jej dla serwera, który miał default latin1, to będzie trzeba teraz dodać do skryptu "set names latin2"

mam nadzieję, że ten post (trochę długi wyszedł) komuś pomoże (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował WereWolf 22.08.2006, 06:26:17
Go to the top of the page
+Quote Post

Posty w temacie
- Dynuel   Problem z kodowaniem w MySQL   19.06.2005, 14:44:01
- - son   Sprawdź czy na stronie głównej phpmyadmin masz ust...   19.06.2005, 16:28:34
- - Dynuel   hehe, tak jasne, tutaj problem tkwi w czym innym, ...   19.06.2005, 16:45:51
- - Lemik   przyłączam się do problemu, na głównej stronie mam...   8.08.2005, 09:56:32
- - yivan   zmarnowałem nad tym prawie cały dzień i.... dosze...   9.08.2005, 16:49:19
- - Lemik   a poza tym, że zainstalowałeś nowe, to do jakich w...   9.08.2005, 21:58:42
- - NoiseMc   Jeżeli instalujesz MySQL 4.1 na windzie to przy in...   10.08.2005, 00:07:28
- - gladiror   Ten serwer jest w necie, ustawione jest tak: Syst...   10.08.2005, 09:32:14
- - yivan   hmm zainstalowałem starszy skrypt phpadmina, raz z...   10.08.2005, 11:39:05
- - gladiror   Już doszedłem o co chodzi... W MySQL'u trzeba...   11.08.2005, 13:07:29
- - dvc   W pliku my.ini w windows w katalogu [dysk:\wi...   16.08.2005, 15:19:10
|- - J4r0d   Mój plik my.ini: Cytat[client] port=3306 default-...   14.06.2006, 11:36:46
- - dmrr   Witam. Ja również borykam się z problemem kodowa...   18.08.2005, 13:12:18
- - Reigon   Ostatnio pojawilo sie wiele problemow z kodawaniem...   21.08.2005, 11:25:10
- - palik   Witka Dzieki za podsunięcie pomysłu ze starszym ...   23.09.2005, 07:40:21
- - Synaps   Aby korzystać z polskich znaków w standardzie iso-...   23.09.2005, 12:26:42
- - sevencats   witam! nowy jestem dzieki za skrypt. pół dnia ...   13.11.2005, 15:50:37
- - Nevermore   To moj pierwszy post tutaj, wiec witam! Czy ...   19.11.2005, 19:28:22
- - Nosfi   Właśnie zmieniłem firmę hostingową i miałem ten sa...   1.12.2005, 19:59:09
- - Nevermore   Spoko, juz sobie poradzilam. Wszystko jest tu...   2.12.2005, 19:29:34
- - Aztech   Także borykałem się z tym problemem, U siebie mam ...   18.12.2005, 14:38:44
- - tomalec   Witam wszystkich, podobny problem mam i walczylem ...   7.01.2006, 22:14:55
- - Lemik   a jak wykonać takie polecenie" [SQL] pobierz...   8.01.2006, 01:56:50
- - Gumiak   ja mam z deczka inny problem, zainstalowalem serwa...   16.02.2006, 15:10:46
- - Spanner   hmm odświeże ten temat bo tak go czytam i ja np da...   18.02.2006, 20:05:12
- - falkor   proponuje zajrzec do manuala mysqla , zlote rady z...   22.02.2006, 20:27:18
- - towpawel   Caly problem tak na prawde jest banalny 1. Ekspo...   24.03.2006, 16:47:48
- - kaczorek   Cytat(Aztech @ 2005-12-18 13:38:44)Także bory...   10.05.2006, 01:47:46
- - J4r0d   Cytat(Synaps @ 2005-09-23 11:26:42)3) w kodzi...   13.05.2006, 11:47:25
- - em1X   Wydajność spadnie o całe 0,0002 sekundy. Boże zatr...   13.05.2006, 15:01:11
- - tomekp   Jeśli nie chcecie za każdym razem dodawać tego kod...   13.05.2006, 20:55:21
- - NuLL   Hej, Ja sobie wrzucilem w bazie utf8_general_ci k...   1.06.2006, 22:42:55
- - siemakuba   @NuLL: PMA - strona główna - ustawienia: Language:...   1.06.2006, 23:27:07
- - KG-   Miałem ostatnio troche podobny problem, a mia...   26.07.2006, 07:41:29
- - WereWolf   postanowiłem odświeżyć temat, jako że sam miałem p...   22.08.2006, 06:25:18
- - Coolmax   Ja wszystko (prawie) co się da mam na latin2: (pma...   25.08.2006, 16:20:54
- - WereWolf   dzisiaj przy okazji testowania konwersji phpbb ...   25.08.2006, 20:30:57
- - Coolmax   Poradziłem sobie. ~WereWolf mam pytanie, czy ...   26.08.2006, 12:59:25
- - intol   A może ktoś zna jakiś software (tzn. jakiś program...   26.08.2006, 14:04:25
- - WereWolf   Cytat(intol @ 26.08.2006, 13:04 ) B...   26.08.2006, 17:43:20
|- - Coolmax   Cytat(WereWolf @ 26.08.2006, 18:43 ) ... ...   27.08.2006, 22:18:09
- - WereWolf   Cytat(Coolmax @ 27.08.2006, 21:18 ) No wł...   27.08.2006, 22:38:56
- - koskitos   Mi się udało to załatwić bez p...   8.11.2006, 22:46:03
|- - WereWolf   Cytat(koskitos @ 8.11.2006, 22:46:03 ...   16.11.2006, 11:17:58
- - Nevermore   U mnie w tej chwili na swiezo zalozonej bazie tez ...   9.11.2006, 20:58:51
- - koskitos   WereWolf, wszędzie mam utf8_polish_ci, baza, tabel...   18.11.2006, 12:07:52
|- - WereWolf   Cytat(koskitos @ 18.11.2006, 12:07:52...   18.11.2006, 12:38:04
- - koskitos   Jakie dane? Hmmm... Dane są wprowadzane z formular...   19.11.2006, 13:01:48
|- - WereWolf   Cytat(koskitos @ 19.11.2006, 13:01:48...   19.11.2006, 13:13:29
- - koskitos   Czyli w takiej sytuacji mam zmienić kodowanie stro...   21.11.2006, 22:09:10
|- - WereWolf   Cytat(koskitos @ 21.11.2006, 22:09:10...   22.11.2006, 08:18:42
- - GhOsT9   Rowniez mam problem z krzakami, wiec sie dolacze.....   6.12.2006, 17:45:23
- - WereWolf   to chyba oczywiste, ale na wszelki wypadek zapytam...   6.12.2006, 22:44:43
- - GhOsT9   WereWolf: dzięki za info. set names też przerabia...   11.12.2006, 12:24:05
|- - WereWolf   Cytat(GhOsT9 @ 11.12.2006, 12:24:05 )...   11.12.2006, 19:55:33
- - woodzu   Ja swój problem rozwiązałem wszędzi...   14.12.2006, 16:16:40
|- - WereWolf   Cytat(woodzu @ 14.12.2006, 16:16:40 )...   14.12.2006, 19:55:54
- - woodzu   przez formularze też zamienia, zapomniałem tego do...   14.12.2006, 21:09:33
- - hhg   mysle ze powinno sie skorzystac z tego: http://dev...   14.12.2006, 21:31:02
|- - WereWolf   Cytat(hhg @ 14.12.2006, 21:31:02 ) ty...   14.12.2006, 23:11:09
|- - woodzu   Cytat(WereWolf @ 14.12.2006, 23:11:09...   15.12.2006, 00:03:31
- - FXJ   Witam Jest to mój pierwszy post na tym forum więc...   19.01.2007, 23:20:16
- - dj_piotrek   Mam podobny problem jak opisane powyżej z tą różni...   6.02.2007, 01:21:10
|- - WereWolf   Cytat(dj_piotrek @ 6.02.2007, 01:21:1...   11.02.2007, 13:25:21
- - VegetaSSJ   Witam! A ja mam problem taki że nie wiem jak ...   22.02.2007, 13:54:45
- - acztery   daj takie cos przed dodaniem i przed wyciaganiem d...   22.02.2007, 14:21:56
- - Spanner   widze, ze połączenie masz na clasach, wi...   22.02.2007, 14:33:08
- - WebCM   Aby nie tworzyć nowego tematu, dołączę pytanie tut...   26.07.2007, 14:54:18
- - Aztech   Niedawno odkryłem cudowne rozwiązanie na wszelkie ...   29.09.2007, 21:18:18
- - patrycjusz   Witam, Odgrzewam temat bo mam spory problem, otó...   8.10.2007, 13:19:20


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

 



RSS Aktualny czas: 9.12.2025 - 05:48