[mysql] sortowanie polskich znakow, prawidlowe -- jak?
Maciej Pilichowski - 12-11-2006 01:33
[mysql] sortowanie polskich znakow, prawidlowe -- jak?
Hej,
Wiem, ze to bylo N razy...
MySQL 5.0.24a, linux, polaczenie lokalne, klient tekstowy -- mysql.
Moge zapisywac polskie znaczki w roznych formatach, wyswietlaja sie prawidlowo. Tu nie ma problemu. Jednak kiedy probuje sortowac teksty z polskimi znakami wpadam w dwie nieprawidlowe sytuacje -- 1 -- kiedy mam ustawiony tryb collate general polskie znaczki maja najwieksza wage i wypadaja na koniec 2 -- kiedy mam ustawione collation polish polskie znaczki maja najmniejsza wage i wypadaja na sam poczatek listy
Wniosek z tego taki, ze polskie znaki, ktore wysylam do zapisu w bazie nie sa traktowane jako polskie. Sprobowalem rzecz poprawic i wymusic ustawienia klienta na sztywno -- jak wydaje mi sie odpowiada za to hanshake
[client] character-set = latin2
[mysql] character-set = latin2
[mysqld] skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_polish_ci
Ale teraz mam juz krzaki, a nie polskie znaki. Pisalem to przy zalozeniu, ze wejscie mam zapisane w ISO-8859-2, nie chce zeby klient cokolwiek ustalal, bo locale systemowe mam ustawione jako US, co do serwera to w zasadzie obojetnie czy bedzie to latin2 czy utf8, byleby dzialalo i poprawnie sortowalo.
Jak na razie stoje w punkcie, ze jesli ustawie, ze dane do klienta wplywaja w latin2 --> mam krzaki. Jesli w latin1, czyli zdjety skip handshake'a --> widze polskie literki, ale nie moge ich sortowac.
Za wszelkie podpowiedzi bede wdzieczny.
milego dnia zycze hej
-- Maciej "MACiAS" Pilichowski http://bantu.fm.interia.pl/
Maciej Pilichowski - 12-11-2006 01:33
On Sun, 01 Oct 2006 10:49:54 +0200, Maciej Pilichowski <bantu@SKASUJTOpoczta.FM> wrote:
Czesciowo sam sobie odpowiem -- problem w tym, chyba???, ze ustawienia ogolne takie jak podalem powyzej nie maja wplywu na zmiene mysql show variables;
a tych z kolei mimo, ze dokumentacja wskazuje jak mozna zmienic, nie udaje mi sie tego zrobic -- niezaleznie od tego czy z linii polecen, czy pliku konf.
Np. /etc/rc.d/mysql start --character_set_client='latin2' /etc/rc.d/mysql start --character_set_client=latin2 /etc/rc.d/mysql start --character-set-client='latin2' /etc/rc.d/mysql start --character-set-client=latin2
Nic go nie rusza i mam latin1. Podobny problem jest z reszta zmiennych.
milego dnia zycze hej -- Maciej "MACiAS" Pilichowski http://bantu.fm.interia.pl/
Maciej Pilichowski - 12-11-2006 01:33
On Sun, 01 Oct 2006 10:49:54 +0200, Maciej Pilichowski <bantu@SKASUJTOpoczta.FM> wrote:
Nie ma to jak grupowicz, z rana zada pytanie, a do poludnia rozwiaze problem *smile* Ale moze sie komus przyda...
Wszystko rozbilo sie o drop database xxx; create database xxx;
Albo o silowe wymuszenie kodowania dla kazdej tabeli, ale tego wlasnie chcialem uniknac.
milego dnia, hej -- Maciej "MACiAS" Pilichowski http://bantu.fm.interia.pl/
Rafal - 13-11-2006 00:15
przerobilem ten temat i sie da: -------------------------------- konfiguracje MySQL ustaw na UTF8, np. tak: [mysqld] default-character-set=utf8 character-set-server=utf8 collation-server=utf8_polish_ci character-sets-dir=/usr/share/mysql/charsets [client] default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets [mysql] default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets [mysqlcheck] default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets [mysqldump] default-character-set=utf8 character-sets-dir=/usr/share/mysql/charsets
-----------------------------
dopiero po zresetowaniu serwera MySQL utworz baze W UTF8 i tabele w UTF8
----------------------------- jak laczysz sie za MySQL przez PHP to zaraz po polaczeniu odpalaj funkje: mysql_query("SET CHARACTER SET utf8;"); bo jak nie to serwer z jakiegos dziwnego powodu ustawi kodowanie klienta na latin1 i polskich znaczkow nie bedziesz mial
pozdrawiam
Rafal - 13-11-2006 00:15
acha, sortowanie np. tak:
SELECT * FROM tabela WHERE jakis_warunek ORDER BY nazwisko COLLATE utf8_polish_ci;
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.plquentinho.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|