[PHP/MySQL] probleem met character set

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een UTF-8 tabel, en als ik daarin wil zoeken met LIKE, dan stuit ik op een probleem:

SELECT * FROM `tabel` WHERE titel LIKE '%belgie%';
levert niet dezelfde resultaten op als
SELECT * FROM `tabel` WHERE titel LIKE '%belgië%';

Ik heb al geprobeerd om ervan te maken:
SELECT * FROM `tabel` WHERE titel LIKE _utf8 '%belgië%' COLLATE utf8_general_ci;
Maar het enige resultaat is dan dat hij alleen de titels vindt zonder ë (dus waar de titel "Belgie" is en niet "België".

Wat kan ik hier aan doen?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
In utf-8 zijn het ook gewoon verschillende tekens...

Wat ik er meestal aan doe is gewoon een extra zoek-kolom ( tabel meestal maargoed ) meenemen met daarin allerlei dingen aangepast / gereplaced, dus bv ë wordt e.

Sommige charsets kunnen dit zelf doen, maar ik heb nog al eens te maken met mensen die inch uitschrijven terwijl iedereen op " zoekt, daarom de extra kolom / tabel, dan heb je iets meer vrijheden

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
In MySQL zou met de utf8_general_ci 'België' wel degelijk hetzelfde moeten zijn als 'Belgie'.

SQL:
1
2
3
4
5
SELECT
CASE WHEN 'Belgie' COLLATE utf8_general_ci like '%ë' COLLATE utf8_general_ci THEN 1 ELSE 0 END,
CASE WHEN 'Belgie' COLLATE utf8_general_ci LIKE '%e' COLLATE utf8_general_ci THEN 1 ELSE 0 END,
CASE WHEN 'België' COLLATE utf8_general_ci LIKE '%ë' COLLATE utf8_general_ci THEN 1 ELSE 0 END,
CASE WHEN 'België' COLLATE utf8_general_ci LIKE '%e' COLLATE utf8_general_ci THEN 1 ELSE 0 END

Geeft ook netjes vier keer een 1 terug.

Gebruik je misschien ergens een utf8_bin collation? Of is er een mismatch tussen de collation van je webpagina en de mysql tabel/kolom/verbinding waardoor je denkt dat er 'België' in je kolom staat terwijl het in het echt iets anders is wat toevallig op je webpagina wel als 'België' wordt weergegeven?