在PHP脚本中,我正在进行(硬编码)MySQL-Request:
SELECT text FROM `mytexts` WHERE text LIKE '%ö%'
错误地返回文本" willkommen" (但不是文本" willkammen")。
我试图为UTF8正确设置所有内容:
源代码文件位于" UTF8,没有BOM"。
数据库,表格和字段(数字字段除外)整理为" utf8_unicode_ci"。
连接由$server = mysqli_connect($dbhostname,$dbuser,$dbpass,$dbname);
后跟mysqli_set_charset($server, "utf8");
数据(" willkommen"" willkammen")已由硬编码INSERT输入
如何让我的SELECT工作正常?
答案 0 :(得分:2)
你可能必须设置another collation,一个不处理ö== o但仍然不区分大小写的。
SHOW COLLATION
显示所有可用的排序规则 (_utf8 x'c3b6'是字符ö作为unicode hex literal:)
select _utf8 x'c3b6' COLLATE utf8_general_ci LIKE 'o'
- >这种整理在Umlauten与其相应的基本元音对应物之间没有区别。
select _utf8 x'c3b6' COLLATE utf8_bin LIKE 'o'
- >好的,但是这个不是不区分大小写的。
select _utf8 x'c3b6' COLLATE utf8_german2_ci LIKE 'o'
- >这是我最好的猜测。
答案 1 :(得分:1)
以下是utf8(或utf8mb4)的一些等价:
utf8 : utf8_croatian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_czech_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_danish_ci O=o=º=Ò=Ó=Ó=Ô=Õ=ò=ó=ó=ô=õ oe=Œ=œ oz
utf8 : utf8_esperanto_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_estonian_ci O=o=º=Ò=Ó=Ó=Ô=ò=ó=ó=ô oe=Œ=œ oz Ø=ø
utf8 : utf8_general_ci O=o=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe oz
utf8 : utf8_general_mysql500_ci O=o=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe oz
utf8 : utf8_german2_ci O=o=º=Ò=Ó=Ó=Ô=Õ=ò=ó=ó=ô=õ oe=Ö=ö=Œ=œ oz Ø=ø
utf8 : utf8_hungarian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=ò=ó=ó=ô=õ oe=Œ=œ oz Ö=ö Ø=ø
utf8 : utf8_icelandic_ci O=o=º=Ò=Ô=Õ=ò=ô=õ oe=Œ=œ oz Ó=Ó=ó=ó
utf8 : utf8_latvian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_lithuanian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_persian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_polish_ci O=o=º=Ò=Ô=Õ=Ö=ò=ô=õ=ö oe=Œ=œ oz Ó=Ó=ó=ó Ø=ø
utf8 : utf8_roman_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_romanian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_sinhala_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_slovak_ci O=o=º=Ò=Ó=Ó=Õ=Ö=ò=ó=ó=õ=ö oe=Œ=œ oz Ô=ô Ø=ø
utf8 : utf8_slovenian_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_spanish2_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_spanish_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_swedish_ci O=o=º=Ò=Ó=Ó=Ô=Õ=ò=ó=ó=ô=õ oe=Œ=œ oz
utf8 : utf8_turkish_ci O=o=º=Ò=Ó=Ó=Ô=Õ=ò=ó=ó=ô=õ oe=Œ=œ oz Ö=ö Ø=ø
utf8 : utf8_unicode_520_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=Ø=ò=ó=ó=ô=õ=ö=ø oe=Œ=œ oz
utf8 : utf8_unicode_ci O=o=º=Ò=Ó=Ó=Ô=Õ=Ö=ò=ó=ó=ô=õ=ö oe=Œ=œ oz Ø=ø
utf8 : utf8_vietnamese_ci O=o=º=Ò=Ó=Ó=Õ=Ö=ò=ó=ó=õ=ö oe=Œ=œ oz Ô=ô Ø=ø
它表示,对于大多数排序规则,ö
被视为与o
相同。但是,hungarian_ci和turkish_ci排序ö
,好像它是o
和p
之间的字母。而且german2_ci认为它等于oe
和œ
。对于danish_ci,icelandic_ci和swedish_ci,它出现在z
之后。