У меня в настоящее время возникает проблема с сопоставлением строк между строками PHP и Mysql. У меня есть переменная, которая приходит из БД MySQL и я сравнить его с закодированного один:Сравнение строк Mysql и PHP - нормализация Юникода?
$string_from_mysql = "Información" //comes from DB read;
$test_string = "Información" //hard coded via text editor;
$test = strpos($string_from_mysql,$test_string); -> Returns false
Проблема, как представляется, связаны с ó в $ string_from_mysql символ имеет значение 0x00F3 в то время как на $ test_string символ равен 0xC3 0xB3. Это, очевидно, приводит к «ложному» возврату значения strpos. Символ «канонически эквивалентен», но он не имеет того же значения.
Каков подход в подобной ситуации? Я узнал класс Normalizer PHP, это единственное жизнеспособное и чистое решение?
Спасибо.
Строка со значением 0xf3 кодируется как Latin1, строка с 0xc3 0xb3 кодируется в UTF-8. Убедитесь, что [настроить подключение к базе данных] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through), чтобы вернуть UTF-8. – nwellnhof