PDA

Zobacz pełną wersję : Znaki ? zamiast polskich liter MySQL



lotis
30-01-2010, 11:05
Ogólnie strone mam zrobiona w Utf-8.
Mam bazę danych na Awardspace.com korzystam tam z bazy w wersji MySQL 5.1 przy eksporcie korzystam z serwerowego phpMyAdmin 2.6.4-pl3
w pierwszej ramce mam :

Language: Polish (pl-iso-8859-2)
lub
Polish (pl-utf-8)
lub
Polish (pl-win1250)

potem daje wykonaj

po zalogowaniu do phpMyAdmin

phpMyAdmin http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/s_lang.png (http://cp7.awardspace.com/phpMyAdmin/translators.html) Language http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/b_info.png (http://cp7.awardspace.com/phpMyAdmin/translators.html): Polish (pl-utf-8)
http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/s_asci.png System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/s_asci.png System porównań dla połączenia MySQL: Metoda porównywania napisów utf8_polish_ci




Wszystko jedno co wybiore w pierwszej ramce czy utf-8 czy iso czy pl-win po eksporcie dostaje zamiast polskich znaków -znak zapytania ? .Co robić ?

neo_fox
30-01-2010, 11:23
Nic nie rozumiem =8-O
Jakiej ramce? Jak masz kodowane dane które chcesz eksportować ??

lotis
30-01-2010, 11:47
Jak loguje się do bazy to mam pierwsze okno jak na screenie i moge w nim wybierać i naciskać wykonaj.

neo_fox
30-01-2010, 12:07
To jest jedynie wybór języka interfejsu i nie ma żadnego wpływu na kodowanie baz danych czy zrzutu bazy danych

lotis
30-01-2010, 13:30
Rozumiem .Co w takim razie powinienem ustawić aby mieć polskie znaki w bazie MySQL . Qrcze w sumie podstawowa rzecz kopia bazy danych,a tu takie krzaki !!!
Dalej mam :

neo_fox
30-01-2010, 14:20
Aby mieć polskie znaki poprawnie wyświetlane powinieneś mieć bazę danych, wszystkie tabele i dane w tych tabelach zakodowane w UTF-8
Nie bardzo pojmuję co starasz się zrobić. Jeżeli chcesz zrobić import jednej bazy danych do innej to obie muszą mieć takie same kodowanie.
Jak są zakodowane dane w tej bazie z której importujesz?

Jola
30-01-2010, 14:36
Witam,
gdzie widzisz te krzaczki,
może po prostu podglądasz wynik eksportu w notatniku?

lotis
30-01-2010, 18:47
Najpierw patrze w eksporcie bez zapisu .Tam gdzie jest np ł mam ? ,ą też mam ? , ó wyświetla mi się prawidłowo .To samo jak otworze gotowy plik w notatniku.

Jola
30-01-2010, 19:03
To zobacz czy przypadkiem w bazie nie masz zamiast ł : ? itd

lotis
30-01-2010, 21:05
dokładnie tak jak mówisz



To zobacz czy przypadkiem w bazie nie masz zamiast ł : ? itd

właśnie tak mam

Jola
30-01-2010, 21:17
To czeka Cie trochę pracy typu znajdź i zamień.
Zrób to w edytorze, który nie ma problemu z kodowaniem w utf-8.

lotis
30-01-2010, 21:22
No to pięknie ,ale odjazd kilka godzin pracy i wszystko przez te ogonki.:mad:

Jola
30-01-2010, 21:28
Dziwne tylko, że nie widziałeś tego problemu na poprzedniej bazie. Strona wyświetlała się bez problemów?

lotis
30-01-2010, 21:32
Nie widziałem ,bo nie mogłem widzieć to moja pierwsza baza i nie miałem pojęcia że ludzie się tak męczą.Po jasny grom te MySql ?

Jola
30-01-2010, 21:35
Nie rozumiesz - pytam czy na stronie (poprzedniej) pojawiały się krzaczki.

lotis
30-01-2010, 21:38
W żadnym wypadku wszystko piknie się wyświetla na stronie ąśężźńłó

zwiastun
31-01-2010, 01:11
To ma tak ponad 2 lata: http://www.demo.joomla.pl/content/view/162/26/

lotis
31-01-2010, 08:42
To ma tak ponad 2 lata: http://www.demo.joomla.pl/content/view/162/26/I nic nowego dla mnie nie wnosi niestety .Już się naczytałem na ten temat ,że chej. I jak miałem ? zamiast ąężźń tak mam w swojej MySQL.

po eksporcie bazy i zauważyłem ,że mam tam


) ENGINE=MyISAM AUTO_INCREMENT=36 DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;Chociaż phpMyAdmin pokazuje :


http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/s_asci.png System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

Czyli phpMyAdmin się myli ? mam baze w latin1 ?

Przełaczenie w phpMyAdmin po eksporcie też nic nie daje
http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/s_asci.png System porównań dla połączenia MySQL: Metoda porównywania napisów latin1_swedish_ci http://cp7.awardspace.com/phpMyAdmin/themes/awardspace/img/b_help.png (http://dev.mysql.com/doc/mysql/en/Charset-connection.html)

Dokładniej się przyjrzałem bazie i proszę sobie wyobrazić że jest kodowana w utf-8_general_ci i latin1_swedish_ci !!!!!! W kilku końcowych tabelach tam gdzie jest utf-8_general_ci po eksporcie mam polskie znaki .Co źle zrobiłem dlaczego baza danych jest kodowana 2 zestawami kodów ?

neo_fox
31-01-2010, 11:53
Czyli phpMyAdmin się myli ? mam baze w latin1 ?


Nie myli się a tabele masz prawdopodobnie zakodowaną w latin.
Charset jakiego używa MySQL wewnętrznie nie ma nic wspólnego z kodowaniem twoich danych. Tak samo jak kodowanie połączenia.

Kodowanie poszczególnych baz danych:

https://radek.suski.eu/tmp/utf2.png

Kodowanie poszczególnych tabel w bazie danych:

https://radek.suski.eu/tmp/utf.png

Kodowanie poszczególnych pól w tabeli:

https://radek.suski.eu/tmp/utf3.png

zwiastun
31-01-2010, 11:54
Ale czego właściwie chciałbyś się nauczyć? Wszystkie informacje masz!


I nic nowego dla mnie nie wnosi niestety .Już się naczytałem na ten temat ,że chej.

Czyli phpMyAdmin się myli ? mam baze w latin1 ?

Dokładniej się przyjrzałem bazie i proszę sobie wyobrazić że jest kodowana w utf-8_general_ci i latin1_swedish_ci !!!!!!

Podkreślenie na czerwono - moje!
Przyjrzeć się dokładniej należało od razu. Teraz albo
1) Powtórny zrzut oryginalnej bazy danych, odczytanie w edytorze, który dekoduje znaki (np. Notepad++, PsPad), ewentualna podmiana metodą Znajdź Zamień znaków polskich, które mogą być "opatrzone" dodatkowym znakiem A z kapturkiem nad (w dwóch pozycjach - inaczej małe i wielkie litery).
2) Zamiana informacji w polach tabel (najlepiej usunąć tę informację) o metodzie porównywania znaków (latin_swedish_ci).
3) Zapisanie poprawionej bazy w kodowaniu utf-8, importowanie do nowej, wyczyszczonej bazy, żeby w tabelach nie było śmietnika.
Albo:
Jeśli oryginałem nie dysponujesz i nie masz możliwości odzyskania (np. z kopii na serwerze), masz - niestety - pół dnia, albo i dzień z głowy, bo wyszukanie i poprawienie każdego znaku oddzielnie, a masz ich pewno tysiące, jest zajmującym i pouczającym działaniem.

neo_fox
31-01-2010, 11:57
@zwiastun (http://forum.joomla.pl/member.php?u=8)
Jak się nie mylę to była jakaś metoda na automatyczną konwersję kodowania. Potrzebowałbym jakiegoś zrzutu aby trochę poćwiczyć ;)

lotis
31-01-2010, 12:06
Żadną inną bazą nie dysponuje.Poprostu stworzyłem stronę w Joomla ! i chciałem po raz pierwszy wykonać kopię ,tej stony .Oczywiście skopiowałem pliki Ftp-em i przystąpiłem do zrzutu bazy MySQL .I tu powiem że jest to wszystko do d.... Kiedyś robiłem strony w Html-u czy Flashu i nie musiałem siedzieć i godzinami poprawiać literek.Jestem szczerze zawiedziony tą techniką.
Jest może i atrakcyjna i ma wiele zalet ,ale nie z archiwizacją masakra.

zwiastun
31-01-2010, 12:11
Zrzut najlepiej zrobić z powłoki - phpMyAdmin dokonuje czasem kolejnej mieszanki. Gdy w takich przypadkach robiłem zrzut z powłoki, wystarczyła prosta konwersja i usunięcie wpisów o kodowaniu pól i tabel. Nad szukaniem automatu strawiłem kiedyś trochę czasu bez skutku. Ale może coś jest. Podmiana metodą znajdź - zamień, jeśli jest poprawny zrzut, to kilka minut.

Dopisane...
Hmmm. No tak. Czasem trzeba zapłacić frycowe. Płacz, jak w przysłowiu, nie pomoże. Jakiś powód - zawiniony/niezawiniony różnego kodowania jest. Wszystko wymaga kompetencji.

neo_fox
31-01-2010, 12:13
...ale nie z archiwizacją masakra.

Nie jest, jeśli się potrafi czytać ze zrozumieniem i jeśli się potrafi myśleć.
Z Joomla korzystają miliony ludzi i większość z nich nie ma takich problemów.

Logicznie rzecz biorąc jeśli 100 osób korzysta z Joomla i nie ma z tym CMS żadnych problemów, a jedna osoba nie potrafi tego CMS obsługiwać, to jak myślisz gdzie leży problem? W Joomla? Czy raczej po stronie tego użytkownika?

lotis
31-01-2010, 12:15
Trochę zrzutu :

zwiastun
31-01-2010, 12:31
Piszesz w dziale poświęconym 1.5
Podany fragment zrzutu bazy danych pochodzi z Joomla 1.0
Więcej "wytykać" nie będę, bo po co.

Poproś administratora serwera o kopię bazy danych wykonaną przez Twoimi manipulacjami. Obejrzyj i zobacz, co się da z tym zrobić, ewentualnie pytaj.

lotis
31-01-2010, 12:37
Widzę ,że głównie zajmują się tutaj ... admini "pomocą"
Joomla mam 1.5.15 włączony plugin Legacy 1,0

neo_fox
31-01-2010, 12:47
Nad szukaniem automatu strawiłem kiedyś trochę czasu bez skutku.


A ja znalazłem :)
Pod Linuksem działa to w ten sposób:
iconv -f ISO-8859-1 -t UTF-8 zrzut.sql > zrzut.utf8.sql

zwiastun
31-01-2010, 13:02
Widzę ,że głównie zajmują się tutaj ... admini "pomocą"
Joomla mam 1.5.15 włączony plugin Legacy 1,0
A ja nie jestem Duchem świętym! To fragment Twojego zrzutu:

INSERT INTO `bak_banner` VALUES (3, 2, 'banner', 'Polskie Centrum Joomla - 1', 0, 544, 1, 'jomla_pl_zolty.jpg',

To są dane z Joomla 1.0, a nie z Joomla 1.5.

lotis
31-01-2010, 15:09
Dziekuje za pomoc.Jak tego dokonac pod ubuntu?
Znaki ? zamienia sie na np. ó ?

zwiastun
31-01-2010, 15:15
W jakim sensie?
Znakami zapytania zastąpiło Ci znaki charakterystyczne dla polskiego alfabetu. Więc trzeba je wyszukać i uważnie zamienić. Nie na ó, tylko na to, co trzeba. Jeszcze raz sugeruję odzyskać kopię bazy danych sprzed momentu swoich manipulacji, ale wykonaną z wiersza poleceń (od administratora systemu) a nie starym jak świat phpMyAdminem

Na starszej kopii zapasowej możesz spróbować sposobu podanego przez neo-foxa, ale szanse mizerne, bo przypuszczam, ze masz w bazie mieszaninę utf-8 i latin1

lotis
31-01-2010, 16:00
Rozumiem robotki reczne niestety :-(

neo_fox
31-01-2010, 16:04
ale szanse mizerne, bo przypuszczam, ze masz w bazie mieszaninę utf-8 i latin1

W każdym razie ten plik z załącznika jest do niczego bo tam faktycznie już polskich znaków nie ma. Jest tylko 3f hexadecymalnie czyli "?"

Tu jest opisane: http://en.gentoo-wiki.com/wiki/TIP_Convert_latin1_to_UTF-8_in_MySQL

czajna
26-05-2010, 14:40
Chciałbym odświeżyć wątek, gdyż mam podobny problem. Migruje Joomle w poprzedniej kodowanie tabel latin1. Polskie znaki w zrzucie bazy wyglądają tak: £; ±; ³; ¿ (Ł; ą; ł; ż) itp.

Zmiana metody porównywania znaków z latin1 na utf8 nie pomaga, zatem jak rozumie, aby ta baza działała w Joomli 1.5 pod kodowaniem utf-8 muszę ją przekonwertować do polskich znaków w jakimś programie?

T

---
Tutaj potrzebny do tego konwerter: http://kanjidict.stc.cx/recode.php