ord() Ű Ő kódja miért egyezik meg?????
Üdv Emberek!
Az lenne a problémám, hogy van egy utcalistám, amit abc sorrendben szeretnék lekérdezni és a szolgáltatóm mysql 4.0.18-at futtat, na most láttam már hogy gondok vannak ezzel a verzióval mert:
select * from utcal where utca_neve like ő%
Nagyon nem megy, sőt ha ezt kérem:
select * from utcal where utca_neve like a%
Akkor lenyomja nekem az összes hosszú magánhangzóval kezdődő utca nevet is, míg az ő-t kérve azt nem hajlandó.
Na de mondom sebaj, megoljuk ord-al php-ból, csakhogy itt is befuccsoltam mert url változóként átküldve az Ű-t illetve az Ő-t az ord() mindkét betüre ugyanazt a kódot adja, gondolom én azért mert az US-ascii-ban nincs benne.
Van valakinek ötlete hogy tudnám megoldani adatbázissal, vagy php-ban hogy tudom leválogatni a hosszú magánhangzókat?
Nagyon megköszönném!!!!!
■ Az lenne a problémám, hogy van egy utcalistám, amit abc sorrendben szeretnék lekérdezni és a szolgáltatóm mysql 4.0.18-at futtat, na most láttam már hogy gondok vannak ezzel a verzióval mert:
select * from utcal where utca_neve like ő%
Nagyon nem megy, sőt ha ezt kérem:
select * from utcal where utca_neve like a%
Akkor lenyomja nekem az összes hosszú magánhangzóval kezdődő utca nevet is, míg az ő-t kérve azt nem hajlandó.
Na de mondom sebaj, megoljuk ord-al php-ból, csakhogy itt is befuccsoltam mert url változóként átküldve az Ű-t illetve az Ő-t az ord() mindkét betüre ugyanazt a kódot adja, gondolom én azért mert az US-ascii-ban nincs benne.
Van valakinek ötlete hogy tudnám megoldani adatbázissal, vagy php-ban hogy tudom leválogatni a hosszú magánhangzókat?
Nagyon megköszönném!!!!!
pontosabban
Az adatbázisban maximum latin1 lehet a kódolás, ami megőrzi a latin2 karakterket is (nem vesznek el az ékezetek). Ha rendezni, akarsz, akkor a "collation" amire szükséged lesz. Ha jól tudom a LIKE amúgy sem különbözteti meg az éekzetes karaktereket az ékezet néküli társaiktól. Tehát like "ő%" -ra az o-val kezdődők is kijönnek.
alap utf8
De a megjelenítéssel nincs is semmi probléma, ha már phpMyAdmin-ban tudnék rendezni meg rendes selec-et futtatni az ékezetes betükkel nyert ügyem lenne. De itt a válasza a collate-ra a mysql-nek, gondolom 4.0.18-ban nincs.
SQL query: Documentation
SELECT *
FROM utcak
WHERE utca_nev
COLLATE latin1 LIKE 'F%'
LIMIT 0 , 30
MySQL said: Documentation
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLLATE latin1 LIKE 'F%'
LIMIT 0, 30' at line 1
show create table
Itt van a weblaboron pár cikk, fórum téma a dologról.
Show create table
CREATE TABLE `utcak` (
`id` bigint(20) NOT NULL auto_increment,
`utca_neve` varchar(30) NOT NULL default '',
`irszam` int(4) NOT NULL default '0',
`fkv` int(11) NOT NULL default '0',
`fkk` int(2) NOT NULL default '0',
`fkb` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=16337 CHARACTER SET utf8;
És ezt adja a show create table:
| utcak | CREATE TABLE `utcak` (
`id` bigint(20) NOT NULL auto_increment,
`utca_neve` varchar(30) NOT NULL default '',
`irszam` int(4) NOT NULL default '0',
`fkv` int(11) NOT NULL default '0',
`fkk` int(2) NOT NULL default '0',
`fkb` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM |
Szal nem úgy tünik mintha tudna róla mi is a helyzet, de mégegyszer mondom a megjelenítéssel nincs probléma, egyszerü konzolon sem tudom az ékezeteseket lekérdezni de érdekes módon az á% -ra és az é%-ra jól müködik, csak az ő% meg az ű% tesz be neki!
Végig olvasgattam már ami van a weblaboron, de foggalmam csincs mi lehet azon kívül hogy, láttam hogy a mysql-nél elaszták a magyar nyelvi támogatást.
Kódolás
Ezt még ajánlom figyelmedbe: http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html
B
hasonló gond
nálam is az a betűvel listázta ki az összes ékezetes karaktert.