0

我有一个登录屏幕,可以根据 MySQL 数据库检查输入的用户名和密码。我的问题是它不能识别像“ÅÄÖ”这样的瑞典字符。

例如,密码“lösenord”在数据库中但不被接受,但“losenord”是。

数据库具有“utf8_general_ci”连接排序规则,我在 index.html 中将字符集设置为 UTF-8,但在我的 php 脚本中没有。我已经阅读了解决此类 UTF 8 问题的一百万种不同的方法,但我无法让它发挥作用。

如果有人至少能指出我正确的方向,我将非常感激。我是否需要对每个 mysql 查询进行编码,设置一些 META 标签?

干杯

4

1 回答 1

3

SET NAMES 'UTF8'连接 MySQL 后尝试使用:

$con=mysqli_connect("host", "user", "pw", "db");   
if (!$con)
{
    die('Failed to connect to mySQL: ' .mysqli_connect_errno());
}

/* change character set to utf8 */
if (!$con->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $con->error);
}

正如手册所说:

SET NAMES 指示客户端将使用什么字符集将 SQL 语句发送到服务器......它还指定服务器应该使用的字符集将结果发送回客户端。

还要在表中使用 utf8_swedish_ci,否则字符串比较会出错,MySQL 会将 'ö' 和 'o' 视为同一个字符。

于 2013-05-24T11:49:34.113 回答