【发布时间】:2016-08-29 23:25:34
【问题描述】:
我目前在 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 的“假”返回值。该字符是“规范等效的”,但它没有相同的值。
在这种情况下有什么方法?我发现了 Normalizer PHP 类,它是唯一可行且干净的解决方案吗?
谢谢。
【问题讨论】:
-
值为0xf3的字符串编码为Latin1,值为0xc3 0xb3的字符串为UTF-8编码。确保 configure your database connection 返回 UTF-8。
标签: php mysql unicode normalization