UTF-8:在数据库中正确显示,但不是在HTML中,尽管utf-8字符集

Chr*_*ris 10 html mysql utf-8 character-encoding

我使用MySQL 5.1并将一个大约2.7密耳行的UTF-8解码的txt文件加载到一个表中,该表本身被声明为utf8_unicode_ci,并且所有字段都被声明为utf8_unicode_ci,使用LOAD DATA INFILE...

在数据库本身,人物似乎都是正确的,一切看起来都不错.但是,当我使用php打印它们时,字符显示为???,尽管我在HTML头中使用utf-8声明:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
Run Code Online (Sandbox Code Playgroud)

在另一个表(使用utf-8)中,我从提交的表单中插入文本,这些字符在数据库中显得异常,但在我使用时打印出来时再次正确显示SELECT....

所以,我想知道:出了什么问题?是否UTF-8在数据库中正确显示字符或奇怪地显示字符,但SELECT再次显示它们时它们是否正常?或者问题在哪里(将文件加载到数据库中,在HTML中或其间的某个地方)?

非常感谢您的任何提示或建议!:)

DCo*_*der 11

注意:MySQL的utf8charset是有限的,它只支持BMP中不超过三个字节的Unicode字符.你应该使用utf8mb4而不是.

如果phpMyAdmin将您输入的数据显示为正确的Unicode文本,那么我的赌注是您SET NAMES utf8在连接后没有这样做.


Dan*_*oul 8

连接到DataBase后尝试使用此类代码,但是您需要接收数据

$db->query('set character_set_client=utf8');
$db->query('set character_set_connection=utf8');
$db->query('set character_set_results=utf8');
$db->query('set character_set_server=utf8');
Run Code Online (Sandbox Code Playgroud)