DarkSide Posted November 29, 2005 Report Share Posted November 29, 2005 (edited) Sveiki! Doma tāda - ir MySQL (5.0.15), PHP(4.3.11), Apache. Visur tiek lietots UTF8 kodējums (default character set utf8 iekš mysql, php formas visas UTF8 utt). SET NAMES utf8 un SET CHARACTER SET utf8 tiek lietots. Problēma ir ar to, ka korekti neizpildās sekojošs SELECT: $query = "SELECT * FROM clients WHERE substring(client_surname,1,1)='$prefix'"; $prefix šai gadījumā ir UTF8 kodējumā viens burts (parastiem burtiem 1 baits, unicode burtiem 2 un vairāk baiti - kā jau tas unicodee ir). Vienvārdsakot, ja meklē piemēram pēc pirmā burta 'Š', tad tiek atlasīti visi, kam S un kam Š arī. Ja meklē pēc S, tad arī atlasa gan S gan Š. Tas pats ar Z un Ž utt... Kur vaŗētu būt problēma? Ir kādas idejas? EDIT_1: Sekojošs selekts atgriež sekojošas vērtības: SELECT id,client_surname,ord(substring(client_surname,1,1)) a1,ord(substring(client_surname,2,1)) a2 FROM clients 1|ŠIA ABC|50592|73 2|SIA CBA|83|73 Tātad MySQL substring strādā korekti (ņemot vērā utf8 kodējumu). EDIT_2: Problēma nav ar PHP, bet par pašu MySQL, jo arī no mysql konsoles (no command prompt) rakstot SELECT * FROM clients WHERE substring(client_surname,1,1)='S' tiek atgriezti abi divi (ar Š un S) ieraksti... :( EDIT_3: HA! Problēma atrisinājās. Izrādās ļoti būtiski ir veidojot tabulas norādīt ne tikai DEFAULT CHARACTER SET utf8, bet obligāti norādīt arī COLLATE utf8_latvian_ci. Tad viss strādā!!! :) :) :) Urrāaaa!!! :) Edited November 29, 2005 by DarkSide Link to comment Share on other sites More sharing options...
rpr Posted November 29, 2005 Report Share Posted November 29, 2005 malacis. vo shitaadiem buutu jaabuut lielaakai daljai ierakstiem :) Link to comment Share on other sites More sharing options...
Recommended Posts