数据库
首页 > 数据库> > MySQL UTF8数据无法正常显示

MySQL UTF8数据无法正常显示

作者:互联网

我希望MySQL中的所有数据都是UTF8编码的.我已将所有字符集和排序规则设置为数据库,表和列的UTF8.在将任何内容写入数据库之前,我在PHP中使用mb_detect_encoding来检查它是否是UTF8.因此,我相信所有数据都是UTF8编码的.

然而,问题出在这里:接受这个词Ríkarðsdóttir,当从数据库查询并通过PHP在UTF8编码的网页上显示时,它显示正确.如果我通过phpMyAdmin查询同一条记录,我会得到RÃkarðsdóttir.如果我使用MySQL命令行也是如此.

Running SHOW VARIABLES returns to me:
character_set_client    utf8,
character_set_connection    utf8,
character_set_database  utf8,
character_set_filesystem    binary,
character_set_results   utf8,
character_set_server    latin1,
character_set_system    utf8

只有服务器是latin1,我在共享主机网站上,不相信我可以改变它.这可能是问题吗?

这是我不明白的原因:为什么我的UTF8网页正确显示Ríkarðsdóttir,但UTF8编码的phpMyAdmin网页显示为RÃkarðsdóttir?数据不是真正的UTF8编码,还是数据库不相信?需要做些什么才能纠正这个问题?

解决方法:

尝试连接后立即尝试运行此查询:

SET NAMES UTF8

您的数据库需要将数据存储为UTF8,并且您的网页标题也应该具有UTF8声明,但您与数据库的连接也需要使用UTF8.您可以在命令行和/或通过PHPMyAdmin运行它.然后,在“查询”之后的所有通信将被UTF8编码.

标签:mysql,utf-8,character-encoding,phpmyadmin,latin1
来源: https://codeday.me/bug/20190630/1337592.html