Mysql 和 PHP 字符串比较 - Unicode 规范化?
Mysql and PHP strings comparison - Unicode normalization?
我目前在 PHP 和 Mysql 字符串之间进行字符串比较时遇到一些问题。
我有一个来自 Mysql 数据库的变量,我将它与硬编码的变量进行比较:
$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 的 "false" return 值。字符是 "canonically equivalent" 但它没有相同的值。
这种情况下的处理方法是什么?我找到了 Normalizer PHP class,它是唯一可行且干净的解决方案吗?
谢谢。
作为nwellnhof said setting the charset on the connection solved the problem. In my case i had to use mysql_set_charset
我目前在 PHP 和 Mysql 字符串之间进行字符串比较时遇到一些问题。 我有一个来自 Mysql 数据库的变量,我将它与硬编码的变量进行比较:
$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 的 "false" return 值。字符是 "canonically equivalent" 但它没有相同的值。
这种情况下的处理方法是什么?我找到了 Normalizer PHP class,它是唯一可行且干净的解决方案吗?
谢谢。
作为nwellnhof said setting the charset on the connection solved the problem. In my case i had to use mysql_set_charset