ugrás a tartalomhoz

MySQL UTF-8, nem megfelelő keresés

ficko · 2003. Május. 27. (K), 22.59
Hali

hasznalt mar valaki utf8-at mysqlhez.

nekem a tarolas es a visszaolvasas ok, csak a keresessel van gondom.
nem talal meg szavakat.

ficko
 
1

Sziasztok! Kérdésem az l

Dualon · 2004. Okt. 8. (P), 15.17
Sziasztok!

Kérdésem az lenne, hogy - elsősorban a MySQL szempontjából - érdemes áttérni UTF-8-ra? A weblabor is azt használja, ha minden igaz - milyenek a tapasztalatok? Ha jól tudom, az UTF-8-as karakterek egy bittel több helyet foglalnak, megéri ez? Mik az előnyök-hátrányok?
Jelenleg a latin-2-es kódtáblát használom, de ha érdemes, áttérnék az UTF-8-ra. Miként érdemes ennek nekifogni, mivel jár a konvertálás? Hogyan oldható meg?

Megtisztelnétek, ha részletes válaszokat adnátok, de természetesen egy-egy link is elég lenne.
Előre is kösz!
2

Áttérés

Hojtsy Gábor · 2004. Okt. 8. (P), 15.59
Ha jó támogatást akarsz MySQL-ben UTF8-ra, akkor egy eléggé aktuális (legalábbis 4.1-es) változatot kell elővenned. Lehetnek gondjaid PHP-ben is az UTF8-al, ezért csak akkor érdemes átváltani, ha elkötelezett vagy mellette, és fel tudsz mutatni előnyőket. Mi például némely hírünkben, blogmarkunkban nem latin2 karaktereket is használunk, és ez másként nem lenne lehetséges. A Drupal.org például nemzetközi Drupal tartalmakat jelenít meg az oldalsávban, amik sokféle kódolásban lennének, ha nem használna mindegyik UTF8-at, és így nem jelenhetnének meg egy lapon.
3

előnyök

Anonymous · 2004. Okt. 8. (P), 18.08
Szerintem érdemes váltani, több előny is van. Pl. Az oprendszer kódolása UTF-8 (legalábbis a Linuxé biztosan és ugye a webszerverek többsége linuxos apache) és ha a kódodban utf-8 karakterkódolást használsz, akkor nem lesz gubanc, ha fájlkezelő függvényekkel dolgozol és ékezetes karaktereket írsz a fájlba, ilyet adsz címnek stb.
A másik meg az, hogy pl. a drupal is utf-8 as és ha a kódjaidat be akarod tenni és azok nem utf -8 -asok, akkor bizony konvertálhatsz két kézzel... (iconv :)
Harmadik érv: az utf-8 a jövő, ezt a sokféle karakterkódolás közötti átjárás szükségszerűen ki fogja csikarni, akárki akármit csinál...

ui: csonti volnék, csak már megint nem találom az accountom.. :)
4

Köszönöm!

Dualon · 2004. Okt. 8. (P), 23.18
Köszönöm válaszaitok!

A helyzet egyébként az, hogy egy már meglévő lapot kéne átraknom UTF-8-ba, mivel várhatóan több nyelven is (pl. svéd, norvég, csak hogy a téma szempontjából "izgalmasabbakat" említsem) hozzá fognak szólni a látogatók...

Bejegyzéseitek olvasva valószínűnek tartom, hogy váltani fogok, viszont evvel kapcsolatban felmerül egy kérdés.
A neten több helyen is azt olvastam, hogy pl. a latin-2-es adatokat csak úgy tudom konvertálni UTF-8-assá, hogy dumpolom az egész adatbázist, átalakítom vmi szövegszerkesztővel, majd visszanyomom újfent az egészet...ugyanakkor a MySQL manualban szerepel a CONVERT(), ami - úgy tűnik - teljesen megfelelő lenne.

Megnéztem az iconv-t is, de picit körülményesnek tűnik; jó lenne, ha lenne egyszerűbb megoldás.

Az "éles" szerveren 3.23-as MySQL van, és sajnos nem tudom, mikor fognak váltani 4-esre. Jelenthet ez problémát?

Drupalosoknak itt van egy cikk spanyolul :D (Bábelt neki)
Találtam egy korrekt leírást is a konvertálásról, ezzel csak az a gondom, hogy nem férek hozzá a shell-hez...vagyis az adatbázissal az egyetlen kapcsolatom egy phpmyadmin.

Összefoglalva: mysql 3.23, adatbázishoz egyedül phpmyadminon át férek hozzá a "szokásos" user privilégiumokkal.

Nem foglalkozom "hivatásszerűen" ilyesmivel, úgyhogy hálás lennék, ha útba igazítanátok: miből áll a fenti körülmények közt a konvertálás?
(Az elejét tudom: mentés!!! ,o) )
5

CONVERT()

Hojtsy Gábor · 2004. Okt. 10. (V), 16.26
Működhet a CONVERT(), amit én még nem használtam, de a kézikönyv nem ad verziókikötést...
6

végső esetben...

csonti · 2004. Okt. 10. (V), 20.30
Ha a convert() nem megy, az általad írt módszer működni fog, amihez Linux alatt a Kate szövegszerkesztőt használd. Open -nél jelöld ki a dumpnak a latin 2 kódtáblát, mentéskor meg az UTF-8 -at és ezt behúzod phpmyadminnal.
7

Ismét köszönöm!

Dualon · 2004. Okt. 20. (Sze), 00.01
Köszönöm mindenkinek a meglátásokat! Egyenlőre elhalasztottam a dolgot, de ha valamikor belevágok, feltétlenül megírom a tanulságokat.
8

utf-8

Balogh Tibor · 2004. Okt. 31. (V), 11.21
"Ha jól tudom, az UTF-8-as karakterek egy bittel több helyet foglalnak, megéri ez?"
- A Unicode karakterkészlet kétbájtos karakterkészlet. De a UTF-8 a Unicode egyik kódolási formája, amiben egy-egy karakter a kódtáblának megfelelő helye szerint más-más helyet foglal el. A UTF-8 kódolás 127-ig csak egy bájtot használ, magyar karaktereknél az ékezetes karakterekhez használ két bájtot.

bájt ábrázolás
 1   0xxxxxxx [0-127]
 2   110xxxxx 10xxxxxx [192-223][128-191]
 3   1110xxxx 10xxxxxx 10xxxxxx [224-239][128-191]
 4   11110xxx 10xxxxxx 10xxxxxx 10xxxxxx [240-247][128-191]


"Az "éles" szerveren 3.23-as MySQL van, és sajnos nem tudom, mikor fognak váltani 4-esre. Jelenthet ez problémát?"
- Okozhat gondot. Azoknál a char és varchar mezőknél ahol utf-8 kódolású szöveget tárolsz BINARY típust is be kell állítanod. Különben a tábla - már nem emlékszem pontosan - javításánál és/vagy optimalizációjánál minden szöveget "ki fog javítani". Úgy emlékszem 4.0.x alatt text típusú mezőnél nem kellett binary típusúra váltani, azt nem bántotta, de nem tudom, hogy mi a helyzet a 3.23.x változattal. Ki kell próbálni. Esetleg visszaírhatnád az eredményt!
Ezen kívül ha utf-8 kódolású mezőt rendezel, akkor nem várt eredményt kaphatsz.

"Összefoglalva: mysql 3.23, adatbázishoz egyedül phpmyadminon át férek hozzá a "szokásos" user privilégiumokkal."
- Ahogy írtad dump, szövegszerkesztő save as, majd adatok visszatöltése. Én a TextPad-ot ajánlom, de pl. windows xp alatt a notepad is meg tudja csinálni a konvertálást.

Az áttérés után a php szkriptjeidet is ajánlatos utf-8 kódolással menteni. Olyan szövegszerkesztőt használni amelyik tudja ezt.
9

utf-8 kódolású mező rendezése

laji · 2006. Jan. 9. (H), 14.06
Ezen kívül ha utf-8 kódolású mezőt rendezel, akkor nem várt eredményt kaphatsz.

Pontosan ebbe ütköztem (többek közt...:-)). A MySQL tábláim utf-8-ra vannak állítva (sajnos, hiába van az ATW phpAdmin-jában adattárhoz is beállítási lehetőség, mindig visszadob latin1-re), s lekérdezésekkor a cirill abc a "k"-val kezdődik, stb.

Tud rá valaki megoldást?

Üdv: laji
10

MySql 4.1

Balogh Tibor · 2006. Jan. 11. (Sze), 05.50
Ha a MySql 4.1.x vagy nagyobb verziószámú, segíthet az ebben a cíkben írtak:
http://weblabor.hu/cikkek/mysql50karakterkodolasok
11

<Nincs cím>

laji · 2006. Jan. 13. (P), 16.29
Köszönöm az ötletet. Elnézést kérek, hogy elfelejtettem itt is jelezni: mindent megoldott a SET NAMES utf8 parancs. Így kifogástalanul keres, rendez és tárol uft8-as adattár az utf8-as honlapomhoz latin2-es kiszolgálóval. És valóban András cikke adta a legtöbb segítséget a megoldáshoz.

Itt jött össze: http://weblabor.hu/forumok/temak/11281

Most már csak azt az egyet nem értem, hogy miért nem hajítják nagy ívben szemétbe az összes többi betűtáblát? Hisz lehetne könnyű is az élet - lásd utf8 :-))

Üdv: laji