Autor Zpráva
Johny666
Profil
Zdravim,

mam problem s razenim podle abecedy a uz nevim, co muze byt spatne. Nejdriv nastaveni:

- MySQL 5.0.45 na Win XP SP2
- v MySQL Administratoru nastaveno kodovani (Startup variables > Advanced > def. char. set = utf8, default collation = utf8_czech_ci)
- vytvorena databaze (utf8 / utf8_czech_ci)
- vytvorena tabulka s CHARSET=utf8 COLLATE=utf8_czech_ci
- u textovych sloupcu specifikovano collate utf8_czech_ci

Patral jsem vsude mozne, vyzkousel jsem i priklad z http://www.linuxsoft.cz/article.php?id_article=1108 a furt mi to radi spatne - dava 'č' za 'd' a jeste ty jednotliva 'č' mixuje mezi 'e'.. priklad:

Citroen
Dacia
Daewoo
Dřevostavby
DVD a VHS přehrávače
Dvouletky
Časopisy, magazíny
Editace kontaktu
Čistící stroje, čerpadla
Ekonomika, finance
Články, poradna
Elektro, bílé zboží

Predem diky za rady, pokud si je s tim nekdo vi... :-)
Johny666
Profil
Jeste jsem zapomnel pridat priklad SQL dotazu:

SELECT Nazev FROM Tabulka ORDER BY Nazev

..pripadne:

SELECT Nazev FROM Tabulka ORDER BY Nazev COLLATE utf8_czech_ci
Kajman_
Profil *
Možná je polámaný soubor s porovnáním.

Jestli to není problém, zkuste tam dát aktuální verzi mysql a vyzkoušejte, jestli se to nezlepší...
http://dev.mysql.com/downloads/mysql/5.0.html#win32
Johny666
Profil
Možná je polámaný soubor s porovnáním.

Jestli to není problém, zkuste tam dát aktuální verzi mysql a vyzkoušejte, jestli se to nezlepší...
http://dev.mysql.com/downloads/mysql/5.0.html#win32[/i]

Diky za radu, bohuzel se to chova stale stejne. Nyni mam tedy 5.0.51a.
Kajman_
Profil *
Tahle testovací tabulka to dělá také?

CREATE TABLE `tabulka_utf8` (
`nazev` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`id` INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
ENGINE = MyISAM
CHARACTER SET utf8 COLLATE utf8_czech_ci;

insert into `tabulka_utf8`(nazev)
values
('Citroen'),
('Dacia'),
('Daewoo'),
('Dřevostavby'),
('DVD a VHS přehrávače'),
('Dvouletky'),
('Časopisy, magazíny'),
('Editace kontaktu'),
('Čistící stroje, čerpadla'),
('Ekonomika, finance'),
('Články, poradna'),
('Elektro, bílé zboží');

select * from `tabulka_utf8` order by nazev;
Johny666
Profil
Ano, toto je vysledek:

Citroen 1
Dacia 2
Daewoo 3
Dřevostavby 4
DVD a VHS přehrávače 5
Dvouletky 6
Časopisy, magazíny 7
Editace kontaktu 8
Čistící stroje, čerpadla 9
Ekonomika, finance 10
Články, poradna 11
Elektro, bílé zboží 12

U Vas to funguje OK? Pokud ano, muzu Vas poprosit o co nejpresnejsi konfiguraci MySQLka?
Johny666
Profil
Jeste jsem v ramci dalsiho testovani prisel na to, ze si zrejme mysli, ze 'Č' a 'E' je totez.

select * from `tabulka_utf8` where nazev like 'Č%'

select * from `tabulka_utf8` where nazev like 'E%'

Tyto dva dotazy vrati totozny vysledek, obsahujici vsechny vyrazy, zacinajici na 'Č' i 'E':

Časopisy, magazíny 7
Editace kontaktu 8
Čistící stroje, čerpadla 9
Ekonomika, finance 10
Články, poradna 11
Elektro, bílé zboží 12
Kajman_
Profil *
Mně se to řadilo dobře. Také MySQL 5.0.45 na Win XP SP2.

A neprozradí něco
show variables like '%collation%'
Johny666
Profil
Hmm, diky, neco to prozradilo..

collation_connection latin1_swedish_ci
collation_database utf8_czech_ci
collation_server utf8_general_ci

V my.ini jsem se uz dlouho nehrabal, snad to tam nejak najdu a zmena zabere..
Kajman_
Profil *
A v čem ty dotazy zkoušíte? Ten klient nemá asi nastavenou znakovou sadu použitou pro připojení.
Johny666
Profil
Pouzivam Navicat (http://www.navicat.com/).. to by mne nenapadlo, ze to muze byt tim.. zkusim jeste treba query browser..
Johny666
Profil
Hm, tak Query Browser to taky seradil blbe a jeste zobrazil spatne nektere diakriticke znaky..

..a toto taky nezabira:

SET collation_connection = 'utf8_czech_ci';
select nazev from tabulka order by nazev

..takze ocenim jakekoliv dalsi napady a navrhy.. :-)
Kajman_
Profil *
Query browser to udělal dobře. Jen máte nesmyslné znaky v db, tak se to neseřadilo správně.

Když dáte ten insert v qb, tak by to mělo být ok.
Johny666
Profil
Omlouvam se za pozdni reakci, mel jsem uraz a nebyl jsem online :(

Pokud to tedy chapu spravne, tak mam:

- web ve windows-1250 (pres to lidi vkladaji data)
- svuj software, ktery se pripojuje k db defaultnim latin1_swedish_ci (pres to vkladam data ja)
- databazi v utf-8

Ted je otazka, co s tim.. vsechno se zobrazuje vsude korektne (coz mi v tehle konstelaci pripada jako zazrak), akorat to spatne radi.. porad mi nejak nedochazi, v jakem kodovani ta data v db vlastne jsou..
Kajman_
Profil *
Zkusil bych si udělat kopii té tabulky na testování.
V té kopii změnit těm sloupečkům znakovou sadu na binary. Případně na blob. A pak zpátky na cp1250.

Snad pak bude v query browseru diakritika ok - to je první krok. Ve druhém nastavit na webu set names na cp1250 a ve vaší aplikaci na to, v čem tam tu češtinu dáváte.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: