我有一个带有State列的 Mysql 表- 这些州来自欧洲各地 - 表和列位于utf8_unicode_ci
.
当我调用我使用的数据库时
mysql_select_db($database_WTF, $WTF);
mysql_query('SET NAMES utf8');
$query_Recordset1 = "SELECT *
FROM newmeets
WHERE newmeets.`State` IS NOT NULL
AND newmeets.`State` != ''
ORDER BY newmeets.`State` ASC ";
然后我通过这个简单的循环运行它
mysql_select_db($database_WTF, $WTF);
mysql_query('SET NAMES utf8');
$query_Recordset1 = "SELECT *
FROM newmeets
WHERE newmeets.`State` IS NOT NULL
AND newmeets.`State` != ''
ORDER BY newmeets.`State` ASC ";
$LastState = "";
do {
echo
var_dump($LastState == $row_Recordset1['State']);
echo $row_Recordset1['State'];
$LastState = $row_Recordset1['State'];
var_dump($LastState == $row_Recordset1['State']);
echo "<hr>";
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
当它第一次达到预期的新值时,我得到:
布尔 假
布鲁塞尔
布尔 真
下次我得到:
布尔真
布鲁塞尔
布尔真
正如我所期望的那样。
当每次通过时遇到非拉丁字符时,问题就出现了:
boolean false
Baden-Württember
boolean true
当我将它们设置为相等时,然后当提取下一条记录(并且每条记录输入相同)时,它会失败,这是我使用相同的编码时,我实际上需要它来识别它们是相同的即使输入的字符不同。
不管发生了什么,我都尝试过utf8_encode
并Normalizer::normalize
从比较中得到一个真实的结果,这样我就可以在控制结构中使用它(例如,如果你上次看到它,这次不要打印它)但它失败了。