[ pakito @ 26.04.2012. 11:27 ] @
PRIMER:
Kada unesem reč "aşa", upit LIKE 'vlaska_rec%' daje mi:

aşa
aşadar
aşaḑa
aşaḑarĭe itd,

ali i:

aşćernut
aşťepta ...

Pretpostavljam da je problem u odnosu LIKE prema UNICODU, odnosno UTF-8, jer ne vidim drugi razlog da on pobrka jedno prosto slovo a, sa ć i ť

Pažljivo sam odguglao sva mesta gde se pominji slični problemi, primenio sam i na ES-u preporučene dopune:

Code:
mysql_query("SET NAMES utf8", $link);
mysql_query("SET CHARACTER SET utf8", $link);
mysql_query("SET COLLATION_CONNECTION='utf8_unicode_ci'", $link);

Ali, tek tada nastaje haos, jer pre ovoga tekstovi mi se u browseru prikazuju normalno, a sa ovim linijama sve mi se prebacuje na latin1.

Svuda sam u MySQL bazi - preko phpMyAdmin - u polje "sortiranje" stavio utf8_unicode_ci.
Takođe je i opcija
General Settings - Sortiranje za MySQL vezu podešeno na utf8_univode_ci.
PHP i HTML stranice imaju svuda

Code:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


Ali, kad izvršim proveru:

Code:
    $charset = mysql_client_encoding($link);
    echo "<br>The current character set is: $charset\n";


dobijam odgovor "latin1" !??!

Možda će od pomoći biti još i ovo:
Kada uđem u phpMyAdmin, tekst u bazi vidim u latin1, ne u UTF-8 (nisu mi čitljivi).
(S druge strane, imam jednu drugu bazu, koju vidim i preko phpMyAdmin normalno!)

Pitanja:

1. Zašto mi je, i pored svega, prikaz baze latin1, a ne utf-8?
2. Zašto mi LIKE pogrešno čita karaktere?


[ bogdan.kecman @ 26.04.2012. 12:55 ] @
sve pise ovde: http://www.mysql.rs/2010/07/smece-u-bazi-po-ko-zna-koji-put/
[ pakito @ 27.04.2012. 12:49 ] @


Moram da priznam da sam ovu stranicu otkrio mnogo ranije, ali da tada nisam u potpunosti razumeo šta tačno treba da se radi, pa sam se sada malo više udubio, i uspeo sam da prebacim polja u mojim tabelama sa latin1 na utf8. Ali, osnovni problem je i dalje ostao nerešen:

LIKE brka multibajtne i karaktere!

Pažljivim čitanjem vašeg članka, uočio sam ovaj njegov deo:

Citat:

Damir - July 10, 2010

Prije svega, pun pogodak za clanak, hvala ti.

Kada pravim pretragu u mysql-u (…LIKE ‘%nešto%’…), a dobijem rezultat u kojem se nalazi “nesto” i “nešto”, da li je to znak “smeca” u bazi.
Rating: 0.0/5 (0 votes cast)
Rating: +1 (from 1 vote)

Bogdan Kecman - July 12, 2010

ne, naprotiv, to znaci da je mysql prepoznao š kao validan karakter. jednacenje izmedju š i s radi kolacija.. ide uskoro jedan clanak na tu temu, samo da uvatim 10min vremena


Pošto je moj problem POTPUNO isti kao i Damirov, ne ostaje mi ništa drugo nego da vas zamolim da mi date link na članak na tu temu, ukoliko ste ga napisali, ili da mi na neki drugi način pomognete

1. da shvatim u čemu je stvar, i
2. da rešim(o) problem


jer je bez preciznog pretraživanja sve besmisleno!

Poz. i hvala vam i unazad, za koristan tekst na blogu, i unapred za svaku vrstu odgovora!

[ bogdan.kecman @ 27.04.2012. 18:43 ] @
Citat:
pakito: Pošto je moj problem POTPUNO isti kao i Damirov,


NIJE ISTI!

Ti si rekao:
Citat:
pakito: PRIMER:
Kada unesem reč "aşa", upit LIKE 'vlaska_rec%' daje mi:

aşa
aşadar
aşaḑa
aşaḑarĭe itd,

ali i:

aşćernut
aşťepta ...


a != ć
i
a != ť

dakle

Code:

mysql> select "aşćernut" like "aşa";
+--------------------------+
| "aşćernut" like "aşa"    |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set (0.00 sec)

mysql> select "aşćernut" like "aşc%"
    -> ;
+---------------------------+
| "aşćernut" like "aşc%"    |
+---------------------------+
|                         1 |
+---------------------------+
1 row in set (0.00 sec)

mysql> select "aşćernut" like "aşc%" collate utf8_bin;
+--------------------------------------------+
| "aşćernut" like "aşc%" collate utf8_bin    |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+
1 row in set (0.02 sec)


mysql> select "aşćernut" like "aşć%" collate utf8_bin;
+---------------------------------------------+
| "aşćernut" like "aşć%" collate utf8_bin     |
+---------------------------------------------+
|                                           1 |
+---------------------------------------------+
1 row in set (0.00 sec)

mysql> 



tako da ako ne koristis binarnu kolaciju ć == c ali ć != a i to je ono sto je Damir tamo imao kao problem (koji se resava tako sto koristis binarnu kolaciju) ... tvoj problem je sto ti je ć == a a to je zato sto u bazi imas SMECE, a taj clanak koji sam ti linkovao ti objasnjava kako se to smece "cisti" iz baze.

uradi select HEX(takolonagdetijedata) pa vidi da to sto dobijes nazad NIJE validan utf8

uzdravlje