У меня есть база данных с сопоставлением utf8 / utf8_bin. DB имеет арабский текст с символами диакритического знака (kasar и т.д.). Я хочу к искомому тексту без символов диакритического знака.
То, что я сделал, записал я 'как' запрос...
WHERE replace(field1,0x[CODE],'') like '%[arabic text]%' --- where [CODE] is the accent char.
Это хорошо работает, когда я пишу статический utf арабский текст вместо field1. Но это не заменяет, когда это работает от поля базы данных.
Может быть поле дб, имеют кодирование latin1. Как я могу зафиксировать / проверяют эту проблему.
Спасибо.
utf8_bin
- это двоичное сопоставление - оно чрезвычайно буквальное и строгое при сравнении символов.
utf8_general_ci
более мягкий и нормализует умляуты и акценты в их «базовой» версии:
Ä
=> A
Ü
=> U
] и т. д.
Я никогда раньше не работал с арабским языком, поэтому не знаю, применимо ли он и к этим акцентам, но я ожидал этого.
У вас должна быть возможность временно использовать мягкое сопоставление, например:
WHERE field1 like '%[arabic text]%' COLLATE utf8_general_ci;