|
SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
![]() |
|
Alati teme | Način prikaza |
![]() |
#1 |
novi član
Na probnom radu
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
![]() |
![]() Imam bazu koja je utf8, tabelu
Kôd:
CREATE TABLE a_test ( naziv VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci ) ENGINE=INNODB DEFAULT CHARSET=utf8; Kôd:
INSERT INTO a_test (naziv) VALUES ('Čačak') , ('Ćirko') , ('Čovek') , ('Car') , ('Čarna'); Kôd:
SELECT * FROM a_test WHERE naziv LIKE 'Ć%'; Kôd:
Čačak Ćirko Čovek Car Čarna |
![]() |
![]() |
![]() |
#2 |
Ivan Dilber
Sir Write-a-Lot
|
![]() To ima veze sa collation-om, ima ovde objasnjenje http://dev.mysql.com/doc/refman/5.0/...entations.html
ali ne znam koje je resenje sem da stavis neki ascii za to polje...
__________________
Leadership is the art of getting people to want to do what you know must be done. |
![]() |
![]() |
![]() |
#3 |
novi član
Na probnom radu
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
![]() |
![]() Ako sam ja dobro razumeo sta pise link-1 i link-2 izgleda da to nije moguce!
link-1: For example, the following equalities hold in both utf8_general_ci and utf8_unicode_ci: Ä = A Ö = O Ü = U link-2: Non-UCA collations have a one-to-one mapping from character code to weight. In MySQL, such collations are case insensitive and accent insensitive. utf8_general_ci is an example: 'a', 'A', '脌', and '谩' each have different character codes but all have a weight of 0x0041 and compare as equal. Ono sto mene zbunjuje je sto ovo sve radi kako treba ako se postavi konekcija latin1, a tabela definise kao Kôd:
SET NAMES 'latin1'; CREATE TABLE a_test_latin ( naziv VARCHAR(50) CHARACTER SET latin1 COLLATE latin1_general_ci ) ENGINE=INNODB DEFAULT CHARSET=latin1; INSERT INTO a_test_latin (naziv) VALUES ('Čačak') , ('Ćirko') , ('Čovek') , ('Car') , ('Čarna'); SELECT * FROM a_test_latin WHERE naziv LIKE 'Č%' COLLATE latin1_general_ci; naziv Čačak Čovek Čarna |
![]() |
![]() |
![]() |
#4 |
profesionalac
Qualified
Datum učlanjenja: 06.09.2007
Lokacija: Zrenjanin
Poruke: 109
Hvala: 21
11 "Hvala" u 11 poruka
![]() |
![]() Resenje je da stavis collation utf_slovenian_ci, ja sam isti problem imao pre neki dan, default collation je utf8_general_ci, koji sva slova svodi na njihove proste varijante, tj č i ć u c, š u s, ž u z, dok đ radi valjda zato sto isti karakter postoji u islandskom pismu.
Po mysql dokumentaciji je dovoljno staviti utf8_unicode_ci, ali u mom slučaju to nije pomoglo. utf8_general_ci je brzi, manje precizan jer ne podrzava sva nasa i gomilu drugih slova tako sto ih cuva u indexu kao jednostavnije varijante iz ascii skupa utf8_unicode_ci je sporiji, ali precizniji jer radi sa akcentovanim slovima, tj u tvom slučaju sa našim slovima. |
![]() |
![]() |
![]() |
#5 |
expert
Grand Master
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Poslednja izmena od webarto : 22. 12. 2012. u 03:07. |
![]() |
![]() |
2 članova zahvaljuje webarto za poruku: |
![]() |
#6 | |
novi član
Na probnom radu
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
![]() |
![]() Samo da zahvalim @pkrstic-u i @webart-u na predlozima. Problem je resen!
![]() Citat:
|
|
![]() |
![]() |
![]() |
#7 |
Ivan Dilber
Sir Write-a-Lot
|
![]() utf8_unicode_ci je bitan i zbog pravilnog sortiranja, narocito cirilice
__________________
Leadership is the art of getting people to want to do what you know must be done. |
![]() |
![]() |
![]() |
|
|