无法在 MySQL 表中插入 ♥ 字符

Posted

技术标签:

【中文标题】无法在 MySQL 表中插入 ♥ 字符【英文标题】:Cannot insert ♥ character in MySQL table 【发布时间】:2012-09-05 08:52:04 【问题描述】:

我正在尝试使用 php 将 ♥ 插入到 mysql 表中。它来自输入字段。

该表的字符集是 utf8_general_ci,在 PHP 中,我在连接后立即使用 mysql_query("SET NAMES 'utf8'");

但是 ♥ 只是变成了 '?'插入时。

我也尝试将 ♥ 从 phpMyAdmin 插入表中,但它返回此错误:

Warning: #1366 Incorrect string value: '\xE2\x99\xA5' for column 'subject' at row 1

结果也是'?'而不是♥。

对造成这种情况的原因有什么想法吗?

【问题讨论】:

尝试关注Handling Unicode Front To Back In A Web App 试试***.com/questions/7781103/… 【参考方案1】:

这是因为在表的列上定义的 character set and collation 不兼容。

尝试将您的表或列的changing character set 改为UTF8

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;

ALTER TABLE table_name MODIFY col VARCHAR(255) CHARACTER SET utf8; 

【讨论】:

哦!我只是更改了表格的字符集,而不是列...将列更改为 utf8,现在一切正常!谢谢!【参考方案2】:

试试这个:

ini_set('default_charset', 'utf-8');

在你的 php 文件中设置:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

并检查您的数据库以整理到 utf8_general_ci

【讨论】:

default_charset 和元标记不起作用,因为我看到了“?”在 phpMyAdmin 中。 比尝试通过ini_set()设置字符编码

以上是关于无法在 MySQL 表中插入 ♥ 字符的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 表中同时插入和更新转义字符、单引号和双引号

无法通过php在mysql表中插入数据

无法在mysql表中插入post数组

无法在mysql表中插入主键

无法在 mysql 数据库表中显示从 android 应用程序插入的印地语值

php如何将逗号分隔的多个json格式的字符串作为一个值插入到mysql表中? [复制]