我有一个未按预期插入的查询。
我的数据库设置如下:
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可以检索值。
也许我错过了一些编码内容,所以如果是的话请转发我。
谢谢
答案 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
谢谢你的帮助