Autor Zpráva
bob99
Profil
Dobrý den,
Mysql mi chybně řadí české znaky. Už nevím co kde nastavit. PHP 5.3.1, MySQL 5.1.41.

CREATE TABLE `test_razeni3` (                               
                `polozka` varchar(50) COLLATE utf8_czech_ci NOT NULL      
              ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci


Výstup:
auto
cihla
dav
česnek
chleba
ďábel
nestor
ňouma
ředkvička
plod
rum
stůl
špička
zlato
židle

..... ředkvička a česnek jsou mimo pořadí v české abecedě. Poradíte? Dík
sysel
Profil
Zkusil jsem a získal následující řazení (v MySQL 5.0.37 skrze phpMyAdmin):

auto
cihla
česnek
ďábel
ďaur
dav
ďolík
chleba
janko
marienka
mirka
nestor
ňouma
plod
rum
ředkvička
řeďkvička
stůl
špička
tonko
zlato
židle

Vypadá to trochu lépe, ale zdá se, jakoby někdo usoudil, že d a ď nemají pro řazení významový rozdíl a podobně si vykládá t / ť a n / ň. Nejsem si jist, ale v některých slovnících to takhle kdysi bylo.

Nic mne nenapadá :-/ , snad jen zkusit ještě řazení slovenské, protože to je formálně stejné. :-?
bob99
Profil
Tak Slovensko taky nepomohlo :-(
SELECT polozka FROM test_razeni3 ORDER BY polozka COLLATE utf8_slovak_ci

Výstup:
auto
cihla
dav
česnek
chleba
ďábel
nestor
ňouma
ředkvička
plod
rum
stůl
špička
zlato
židle

... no ale kdyby to aspoň vypadalo jako u Vás tak by to ani nevadilo jenže to se mi nepovedlo.
Kajman_
Profil *
bob99:
Máte data uložená opravdu v utf8? (Pokud ano, tak by měla být např. v pma, admineru nebo mysql query browseru v pořádku diakritika).
sysel
Profil
Zkusil jste obejít PHP a zadat SELECT přímo z konsole? popřípadě existuje i přímo MySQLbrowser. Myslím, že je nutné léčit to po krocích.
Pro správnou komunikaci MySQL <-> PHP je nutno mít koherentně nastavené mysql_set_charset() a mysql_client_encoding(), ale to doufám máte.
petr 6
Profil
sysel:
Vypadá to trochu lépe, ale zdá se, jakoby někdo usoudil, že d a ď nemají pro řazení významový rozdíl a podobně si vykládá t / ť a n / ň.
Očividně usoudil
sysel
Profil
Reaguji na petr 6, jsem trochu staršího data, takže proto jsem se k řazení nechtěl vyjadřovat ani kriticky ani obdivně, různých nazírání na správné řazení bylo a jistě ještě bude mnoho. Podobně je pohled na jiné obecně jazykové jevy často velmi krátkozraký a svými zásahy, ospravedlňovanými frekvencí použítí v obecné češtině, se postupně blížíme ke slovenčině, která již zcela poztrácela charakter jazyka, ve kterém by se čtenář mohl nechat vést zdravým rozumem a minimem pochopitelných pravidel. Franština po revolučním kvasu přelomu 18/19 století klesla ve spisovném jazyce až tak hluboko, že v psaném projevu nebylo lze rozlišit spojku a (et->e) od třetí osoby jednotné slovesa étre (býti) a psali namísto est rovněž jen e. (Obnovená Akademie pak naštěstí vrátila pravidla pravopisu před tyto výstřelky a Francozi si tak mohou jako málokterý národ přečíst i 500 let staré texty). Pokud má být jazyk nositelem informace, pak by jeho psaná forma neměla být ve vleku špatné výslovnosti a rovněž s jazykem související normy (kupř. abecední řazení), by neměly bezbřeze ustupovat požadavkům jednoduchosti počítačového zpracování. Pokud je ve správné výslovnosti kladen přízvuk na předložku, správné lámání textu, má-li čtenáči usnadňovat přednes, by mělo tuto jazykovou normu respektovat. Je však zřejmě snazší podplatit někoho v Ústavu pro jazyk český, aby se lámání slov omezilo na jednopísmenové předložky v, z, s a k.
Háčky a čárky vypadají velmi esteticky, ale kdybychom se byli drželi Husovy reformy, měli bychom jen čárku a tečku. Používaje logiky zmíněného odkazu, by měla být slova počínající jednoduchým v i dvojitým w promíchána, protože zvukově nenesou rozdílnou informaci (v české výslovnosti, v němčině je samozřejmě výslovnost rozdílná)
Ke správnému řazení slov v češtině je nutno použít více než jen stroje. :-)
A naopak, pokud se týký ryze strojového zpracování, může to být člověčímu oprátorovi šuma-drát, hlavně když získá odpovídající záznam. Z tohoto pohledu je naopak žádoucí, aby se diakritikou opatřená písmena důsledně rozlišovala.
bob99
Profil
[#4] Kajman ten výstup jsem zkoušel i v SQLyog a to samý....
petr 6
Profil
sysel:
Hezký názor, bohužel ale pláčete na špatném hrobě, já to nepsal, jen jsem uvedl odkaz na normu, podle které jste v [#2] získal dotyčné pořadí.

Rád bych rozebral rozdíl mezi d a ď (respektive rozdíl mezi rozdílem d-ď a s-š), ale to už bychom odbočovali od tématu.
sysel
Profil
Omlouvám se za nepřípadný OffTopic, jen jsem reagoval na japnou poznámku.
K věci: Nezbývá než navrhnout zoufalé činy
- zkusit řazení dle obecného unicode a nad výstupem podumat
- vyexportovat data a vložit znovu nejlépe do nové tabulky
- přeinstalovat MySQL

napadá někoho něco dalšího? A propos - neuškodila by letmá zmínka o použitém OS popřípadě jeho nastavení locales.
Kajman_
Profil *
To řazení bývá tuším v mysql už zkompilováno. Tak snad jen zkompilovat nebo přeinstalovat pokud možno na novější verzi. Testul jsem to v 5.1.45 a řadí se to česky.

i v SQLyog a to samý
Před lety jsem sqlyog používal, kdy nebyla podpora převodu znakových sad na verzích 4.0 a nižších. Jinak to zlobilo. Sice mají novější verze asi již opravené, ale pro jistotu bych otestoval např. ten adminer nebo mysql query browser z mysql gui tools.
Nebo si alespoň vypsat
show variables like 'character_set_connection'
bob99
Profil
Tak v admineru tam ty český znaky nebyly ale po vytvoření nový table už je to OK. Takže to bylo asi verzí SQLyog tak zkusím novou verzi. Jo a ještě někde nastavit PHP, protože mám teď místo českých znaků otazníky ale správně seřazené :-)
Kajman_
Profil *
Nastavte si set names, viz faq.
bob99
Profil
Vyřešeno. Všem díky

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: