MySQL插入更改编码

时间:2014-11-12 14:22:42

标签: php mysql encoding

我有一个未按预期插入的查询。

我的数据库设置如下:

show variables like "character_set_database";

Variable_name   Value   
character_set_database  utf8

show variables like "collation_database";

Variable_name   Value   
collation_database  utf8_general_ci

和我正在使用的表格:

SHOW TABLE STATUS;

Name    Engine  Version     Row_format  Rows    Avg_row_length  Data_length     Max_data_length     Index_length    Data_free   Auto_increment  Create_time Update_time     Check_time  Collation   Checksum    Create_options  Comment     
users   MyISAM  10  Dynamic     21  93  1964    281474976710655     2048    0   NULL    2014-11-12 15:06:53     2014-11-12 15:09:16     NULL    utf8_general_ci     NULL

当我使用php插入时如下:

INSERT INTO users (ID, USERNAME, IP) values ('19', 'krazy²', '147.xxx.xxx.xxx') ON DUPLICATE KEY UPDATE IP = '147.xxx.xxx.xxx';

用户名值存储如

  

krazy²

我尝试使用mysqli_real_escape转义,它仍然存储这样的值。如果我执行手动插入(控制台),则值将正确存储。我希望将值存储为

  

krazy²

或使用html实体,以便select可以检索值。

也许我错过了一些编码内容,所以如果是的话请转发我。

谢谢

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案: 将mysql服务器的编码改为UTF8,所以我的" my.cnf"看起来像这样

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8


谢谢你的帮助