Php MySQL插入更改编码
我有一个查询没有按预期插入 我的数据库设置如下:Php MySQL插入更改编码,php,mysql,encoding,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 INSERT INTO users
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
INSERT INTO users (ID, USERNAME, IP) values ('19', 'krazy²', '147.xxx.xxx.xxx') ON DUPLICATE KEY UPDATE IP = '147.xxx.xxx.xxx';
我使用的表格是:
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插入时,如下所示:
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
INSERT INTO users (ID, USERNAME, IP) values ('19', 'krazy²', '147.xxx.xxx.xxx') ON DUPLICATE KEY UPDATE IP = '147.xxx.xxx.xxx';
用户名值的存储方式如下
克拉齐酒店
我尝试使用mysqli_real_escape进行转义,但它仍然像那样存储值。如果我使用手动插入控制台,则会正确存储该值。我希望将值按原样存储
克拉齐²
或者使用html实体,以便select可以检索值
也许我错过了一些编码的东西,所以请重定向我,如果是的话
谢谢我终于找到了一个解决方案: 将mysql服务器的编码更改为UTF8,因此my 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
感谢您的帮助可能客户端连接仍在使用8位字符集;尝试在INSERT语句之前发出SET NAME utf8查询;或者,因为您使用的是mysqli,所以执行一个mysqli_set_charset,这是一个客户端问题,您无法通过更改服务器设置来修复它。假设您的PHP应用程序使用UTF-8,您不会说,请查找建立到MySQL连接的代码片段:您很可能忽略了编码参数。