我有一个登录界面,可以检查MySQL数据库输入的用户名和密码。 我的问题是它不承认像“ÅÄÖ”这样的瑞典字符。
例如,密码“lösenord”在数据库中,但不接受,但“losenord”是。
数据库有“utf8_general_ci”连接排序规则,我在我的index.html中将charset设置为UTF-8,但在我的php脚本中没有。 我已经阅读了解决这样的UTF 8问题的百万种不同方法,但我无法让它发挥作用。
如果有人能够指出我正确的方向,我会非常感激。 我是否需要对每个mysql查询进行编码,设置一些META标记?
干杯
答案 0 :(得分:1)
连接到MySQL后尝试使用SET NAMES 'UTF8'
:
$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);
}
正如manual所说:
SET NAMES表示客户端将用于发送SQL的字符集 语句到服务器...它还指定服务器应该的字符集 用于将结果发送回客户端。
在你的表中也使用utf8_swedish_ci,否则字符串比较会出错,MySQL会将'ö'和'o'视为相同的字符。