ugrás a tartalomhoz

character set collation

elemerflat · 2011. Nov. 19. (Szo), 14.57
Sziasztok.

Egy kis segítséget kérnék.

Hogyan lehet elérni azt, hogy a magyar ékezetes betük közt különbséget tegyen a query?

Adott egy words tábla amelyben magyar szavak találhatóak.

A következő select: select * from words where word = 'cipö'
Megjeleniti az összes 'cipö' és 'cipó' előfordulását.

Igy természetesen működik: select * from words where BINARY word = 'cipö'
Ezt azonban a Hibernate nem eszi meg...

Létezik-e olyan megoldás ami Hibernate-nek is jó?

A következőket kipróbáltam, nem jártam sikerrel BINARY nélkül
set character_set_client = 'latin2';
set character_set_connection = 'latin2';
set character_set_database = 'latin2';
set character_set_filesystem = 'latin2';
set character_set_results = 'latin2';
set character_set_server = 'latin2';
set collation_connection = 'latin2_general_ci'
set collation_database = 'latin2_general_ci'
set collation_server = 'latin2_general_ci'

set character_set_client = 'utf8';
set character_set_connection = 'utf8';
set character_set_database = 'utf8';
set character_set_filesystem = 'utf8';
set character_set_results = 'utf8';
set character_set_server = 'utf8';
set collation_connection = 'utf8_general_ci'
set collation_database = 'utf8_general_ci'
set collation_server = 'utf8_general_ci'


ilyen is volt:
set collation_connection = 'utf8_bin'
set collation_database = 'utf8_bin'
set collation_server = 'utf8_bin'
 
1

set names

H.Z. v2 · 2011. Nov. 19. (Szo), 16.19
Esetleg a set names?
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
2

character set collation

elemerflat · 2011. Nov. 19. (Szo), 16.36
Szia

Köszi. Ha jól emlékszem a set names-el a character_set_connection t ill a collation-t állítottam be. Azonban ott van még a character_set_client és a többi propery, azokat nem kellene beállítani?
3

Passz, így fejből nem tudom,

H.Z. v2 · 2011. Nov. 19. (Szo), 17.58
Passz, így fejből nem tudom, de a fenti linken le van írva, hogy mit állít a set names.
4

binary

krisy · 2011. Nov. 20. (V), 13.58
Szia!

A word mezőt állítsd át BINARY-re (ne a query-ben, hanem a tábla struktúrájában), úgy menni fog!
5

Ha ez MySQL, akkor én ennek a

prom3theus · 2011. Nov. 21. (H), 11.28
Ha ez MySQL, akkor én ennek a kettőnek az együttes használatát javaslom:
először: SET NAMES utf8
másodszor: SET CHARACTER SET utf8

A collation-t ajánlott az érintett táblában ekkor utf8_hungarian_ci-re állítani és természetesen minden benne lévő tartalomnak UTF-8 karakterkódolással kell szerepelnie, valamint a forráskódnak (de legalábbis a teljes query-nek) UTF-8 kódolásúnak kell lennie.

Ha nem UTF-8-at akarsz erre használni, a karakterkódolás konzisztenciájára akkor is kínosan kell ügyelni, törekedni kell arra, hogy minden a választott kódolással legyen tárolva és kerüljön fel: kód, lekérések, adatbázis rekordok és persze a táblák collation-jét a létrehozáskor a megfelelőre kell állítani (vagy utólag módosítani a megfelelőre).

A két fenti SQL utasítást a kapcsolatfelvételkor egyszer kell csak kiadni, addig maradnak érvényben, amíg a kapcsolat megszűnik (vagy meg nem változtatjuk direkt).
6

character set collation

elemerflat · 2011. Nov. 22. (K), 00.49
Hali prom3theus,

Ok. köszi ezt kb. vágom. Azonban nem tudom hol siklott ki a dolog, viszont rájöttem, látsd lentebb.
Ezt beírtam a my.ini be mint ahogy eddig is:
[mysqld]

init_connect='SET collation_connection = utf8_hungarian_ci'
init_connect='SET NAMES utf8'
character-set-filesystem=utf8
character-set-server=utf8
collation-server=utf8_hungarian_ci
skip-character-set-client-handshake

Utánna még ezt átállítottam
alter database dict character set utf8 collate utf8_hungarian_ci;
és nem lett jó.
Azonban szöget ütött a fejembe az egyik modatod: "minden a választott kódolással legyen tárolva"
ALTER TABLE words CONVERT TO CHARACTER SET utf8 COLLATE utf8_hungarian_ci;

Nem csak be kell állítani a kódolást hanem át is kell konvertálni abba. Így jó lett :-)
köszi még 1x.
7

nm :) Sejtettem egyébként,

prom3theus · 2011. Nov. 22. (K), 10.23
nm :)

Sejtettem egyébként, hogy csak egyvalami hiányzott a képletből, azért is írtam le minden részletet - szerintem a vak is látta, hogy nem vagy kezdő, nekem legalábbis leesett, hogy a "pontosvessző típusú" hibához hasonló szituban vagy :)

Örülök hogy segíthettem.