ugrás a tartalomhoz

Ékezetek mellőzése mysql-ben!

krey · 2006. Szep. 26. (K), 21.30
Azt szeretném megcsinálni, hogy a mysql visszaadja az "a"-ra az "á" betűt is, és ugyanezt fordítva, tehát mellőzni az ékezeteket (ilyen szempontból)! Persze php-ban meg tudom csinálni, hogy küldjön query-t minden lehetőségre, de ennyire még én sem vagyok elvetemült, pláne azért, mert a teljesen átlagos "tükörfúró" szónak már 256 alternatívája van, ha jól számoltam! Biztos vagyok benne, hogy a MySQL-ben ezt be lehet állítani, nézegettem is példákat, de erre konkrétan nem tértek ki :(
Előre is köszönöm a segítségeteket!

üdv. krey

Felállás:
mysql 5, de 4-esen is mennie kell
Windows XP SP nemtomhány
character_set_database = utf8
collation_database = utf8_hungarian_ci (és minden table minden column-ja is az)
 
1

utf8_general_ci

Rici · 2006. Szep. 26. (K), 22.17
Az utf8_general_ci collation-t kell használni.
2

hááát

krey · 2006. Szep. 26. (K), 22.58
Átállítottam mindent ami él és mozog utf8_general_ci-re, de semmi. Mondjuk nem is vártam túl sokat, mivel előtte ezt használtam :)

üdv. krey
3

Valamit rosszul állítottál

Rici · 2006. Szep. 27. (Sze), 11.29
Szinte biztos, hogy valamit rosszul állítottál, nem feltétlenül a táblák tulajdonságainál, lehet, hogy pl. a csatlakozás után nem közlöd a mysql szerverrel, hogy amit küldesz, az milyen karakterkódolással van kódolva.

Már csak azért is, mert ez a kódolás "szándékosan" ékezetek nélkül hasonlít, és nálam működik is, nem is egy szerveren.

Esetleg jó lenne tudni pontosan az SQL lekérdezést, amit használsz.
4

set names parancs

Anonymous · 2006. Szep. 27. (Sze), 11.57
lehet, hogy pl. a csatlakozás után nem közlöd a mysql szerverrel, hogy amit küldesz, az milyen karakterkódolással van kódolva

Ricinek igaza van, add ki a set names 'utf8' parancsot a csatlakozás után, szerintem segíteni fog, nekem is ezzel telt a hétvégém. ;]

amire még felhívnám a figyelmet, mert nekem elég sok időmbe került:
  1. ha az adatbázisod máshonnan kapott adatokkal töltöd fel, nagyon utána kell nézni, hogy milyen kódolásúak azok. én egy csv fájlban kaptam, amit konvertálás után benyomtam az adatbázisba (utf8, egybevetés: utf8_hungarian_ci). ezek után szépen meg is jelentek az ékezetes betűk és úgy tűnt, hogy nincsen semmilyen probléma. aztán listázásnál jött elő az, hogy egybevetéstől függően (utf8_general_ci, utf8_hungarian_ci) az összes ékezetes karakterrel kezdődő adat vagy az a betű elé vagy utána került. gyakorlatilag nem is tudtam mit tegyek, próbálkoztam elég sok mindennel, míg végül azt mondta valaki, hogy ellenőrizzem le az eredeti adatokat újra és láss csodát tényleg azzal volt a baj. máig nem tudom, hogy lehet kétféle á betű az utf8-ban. (bár most, hogy belegondolok, lehet hogy még a set names használata nélkül volt ez így.)

  2. szintén érdekesség, hogy utf8_hungarian_ci egybevetésnél 28 féle betű van, nem 26. én bizonyos adatok számára voltam kíváncsi kezdőbetű szerint, és valamiért az angol abc-n kívül a rövid ü és rövid ü betű is megjelent. kis gondolkodás után logikussá vált, hogy ha az á az a betű hosszú megfelelője, akkor az ő az ö betűé, és nem az o-é.

lehet ezek nem jelentenek sok újdonságot nektek, de szerintem elfér itt, hátha másnak is segíteni fog. ;]

gex

u.i: és nagyon ajánlom mindenki figyelmébe a mysql 5 karakterkódolásairól szóló cikket, nekem sokat segített.
5

nagyon hasznos

Táskai Zsolt · 2006. Szep. 27. (Sze), 12.16
köszönjük, hogy leírtad. az ilyenek valók a weblabor wikibe. ott hierarchiában és "keresztbelinkelve" is rá lehetne akadni ezekre a hasznos infókra. csak figyelmedbe ajánlom, hátha...
6

Nagyon köszönöm!

krey · 2006. Szep. 28. (Cs), 21.20
Nagyon sokat segítettél, köszönöm szépen. A cikket már olvastam, de a SET NAMES sajnos elkerülte a figyelmemet! Mégegyszer örök hála!

üdv. krey