ugrás a tartalomhoz

ord() Ű Ő kódja miért egyezik meg?????

Cifi_Laci · 2007. Ápr. 23. (H), 21.06
Ü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!!!!!
 
1

pontosabban

vbence · 2007. Ápr. 23. (H), 21.45
Jobban kéne ismerni a rendszer láncszemeit, hogy valami értelmeset tudjak mondani. Milyen a weblapod kódolása? Mit kap egészen pontosan a PHP?

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.
2

alap utf8

Cifi_Laci · 2007. Ápr. 23. (H), 22.05
UTF8 a kódolás, mert egy flashes oldalhoz szolgáltat web service-n keresztül az oldal így az adminja is utf8-ra lett alakítva.
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
3

show create table

vbence · 2007. Ápr. 23. (H), 22.11
Nézzél meg egy "show create table tucak" -at, hogy ott mi a charset, meg a "show variables"-nél, hogy minden utf8 -e. Végül a PHP fájlok kódolását, hogy az ott szereplő Ő betük hogy vannak kódolva.

Itt van a weblaboron pár cikk, fórum téma a dologról.
4

Show create table

Cifi_Laci · 2007. Ápr. 23. (H), 22.30
Így hozom létre:

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.
5

Kódolás

vbence · 2007. Ápr. 24. (K), 09.40
A kérdés, hogy mit értesz az ő és ű alatt. Milyen kódolással küldöd el a queryben? Mi az eredmény ha a akalapos társaikkal próbálkozol? (õ, û)

Ezt még ajánlom figyelmedbe: http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html

B
6

hasonló gond

gex · 2007. Ápr. 24. (K), 11.01
talán segít: http://weblabor.hu/forumok/temak/15315#comment-34385
nálam is az a betűvel listázta ki az összes ékezetes karaktert.