Обнаружил на днях интересное свойство Mysql при сравнении строк с национальными символами в кодировке UTF-8. Вероятно ни для кого не секрет, что при использовании строковых установок COLLATE в mysql по умолчанию (например, utf8_general_ci), при сравнении ‘MyString’ равен ‘mystrinG’. Однако, mysql к тому же ещё и приводит национальные символы (типа латышских длинных) к латинице: ‘māte’ равен ‘MATE’. А это уже несколько не то, что ожидается, скажем, при авторизации пользователей.
Решением может быть использование COLLATE типа utf8_bin, правда при этом теряется регистронезависимость сравнений.
Tags: mysql