我使用MySQL 5.1和从UTF-8加载解码的txt文件约2.7密耳线到其本身被声明为表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">
...
在另一个表(使用UTF-8),在这里我插从提交的格式文本,人物奇怪出现在数据库中,但再次显示正确,当我打印出来使用SELECT...
。
所以,我想知道:什么是错的? 是UTF-8
正确的数据库或奇怪的字符显示,但是当你SELECT
一次他们,他们还好吗? 还是哪里出了问题(文件加载到数据库时,在HTML或介于两者之间)?
非常感谢你对任何提示或建议! :)
注: MySQL的utf8
字符集是有限的,它仅支持在BMP会占用不超过三个字节的Unicode字符。 您应该使用utf8mb4
代替。
- 请确保您发送
SET NAMES utf8
SET NAMES utf8mb4
运行任何的MySQL查询之前命令到MySQL连接后,。 - 确保你的网页实际上是呈现为UTF-8(如果有一个HTTP标头
Content-Type: text/html;charset=iso-8859-1
,浏览器不同意这应该赢)。 - 阅读这篇文章: 处理Unicode的前向后在一个Web应用程序 (但记得要更换
utf8
与utf8mb4
其中MySQL的关注)。
如果phpMyAdmin的显示您所输入的数据是正确的Unicode文本,那么我敢打赌,你是不是做SET NAMES utf8
连接后。
尝试连接到数据库后,使用这些代码,但之前打个电话收到数据
$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');
文章来源: UTF-8: showing correctly in database, however not in HTML despite utf-8 charset