Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL插入更改编码_Php_Mysql_Encoding - Fatal编程技术网

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连接的代码片段:您很可能忽略了编码参数。