Sziasztok, hátha valaki tudja csípőből.
Lassan az örületbe kerget a MySQL, és bizonyára én vagyok süsü, de nem jövök rá a nyitjára.
A feladat az lenne, hogy szövegegyezést kell keresni egy tábla adott oszlopán, úgy hogy az ékezetes betűket különböztesse meg, és működik is a LIKE BINARY-val:
SELECT 'Ski amadé' LIKE BINARY '%amadé%'
1-et ad vissza.
Míg a
SELECT 'Ski amadé' LIKE BINARY '%amade%'
0-át, ez rendben is van.
Ha ugyanezt egy táblán futtatom le:
SELECT filename FROM fileok WHERE filename LIKE BINARY '%amadé%'
akkor üres lesz az eredményhalmaz.
Míg ha lefuttatom a
SELECT filename FROM fileok WHERE filename LIKE BINARY '%amade%'
akkor az eredményben megkapom:
Ski amadé
Pont fordítva szeretném. A tábla és az oszlopok is utf8_general_ci illesztésre vannak rakva, a filename oszlop VARCHAR(255) tipusú. Mit rontok el?
- 4145 megtekintés
Hozzászólások
Nem lehet véletlenül hogy a bevitt változódban lévő szöveg nem utf8? (vagy a script fájl)?
- A hozzászóláshoz be kell jelentkezni
Megnéztem HEX-el, hogy mi van benne. Az ominózus é betű így néz ki: 0x65CC81, holott 0xC3A9 kéne legyen (bár az UTF8-ban mindkettő é), tehát jól csinálja, most már csak azt kell kitalálnom, hogy mi okozza azt, hogy az é betű néha 0x65CC81 máskor meg 0xC3A9.
- A hozzászóláshoz be kell jelentkezni