澳门正规赌博十大网站-澳门游戏网站
做最好的网站

表的字符编码

修改mysql 表的字符编码

在select进行中文查询的时候报了如下的错误

 

ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation ‘=‘

表的字符编码。 

查看一下表的编码

 

表的字符编码。show create table t_user_friend;

 

发现其是latin1编码的,需将其转成utf8

 

命令如下

 

alter table t_user_表的字符编码。friend convert to character set utf8;

 

 

 

当然还可以设置mysql的客户端和服务器的默认编码

 

vi /etc/mysql/my.conf

 

 

 

在[mysql] 下面 添加  default-character-set=utf8

 

 

 

在[mysqld] 下面添加 

 

character-set-server=utf8

 

collaction-server = utf8-greneral-cli

 

 

 

修改完后重启mysql server

 

表的字符编码 在select进行中文查询的时候报了如下的错误 ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_genera...

在保存或查询数据时提示Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' . 这里是告诉你你要保存的数据与数据库中的字符编码不致导致数据无法正确保存了,解决办法我们只要统一编码即可。

今天在用java与mysql数据库时发现Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER错误提示,下面我们来看解决方法吧。

语句很简单

部署完项目,测试一下,诶,数据出来了 没有多大问题(暗舒一口气)。继续测吧,一点新建完了,报错了,看看什么错误

 代码如下

一看完了 java.sql.SQLException: Illegal mix of collations (latin1_swedish_表的字符编码。ci,IMPLICIT)

复制代码

and (utf8_general_ci,COERCIBLE) for operation '=' 是这个错误 ,什么原因呢,第一次遇到。

<?php
$connection=mysql_connect("localhost","root","password"); //连接并选择数据库服务器
mysql_select_db("test",$connection);
$query="select * from users where name='你好'";
$result=mysql_query($query,$connection);
while($row=mysql_fetch_array($result))
{
echo "用户ID:".$row[0]."<br>"; //也可以写做$row["user_id"]
echo "用户名:".$row[1]."<br>"; //也可以写做$row["user_name"]
}
?>

头大了。去查文档说是:结果集中有两种字符集。 我晕了 ,怎么会这样呢,看看表结构,一种啊。 继续查吧。

运行结果提示

 代码如下

Error: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

复制代码

意思是说:操作符“=”比较的字符集不一致,一个是gbk_chinese_ci,一个是latin1_swedish_ci。

SHOW VARIABLES LIKE 'character_set_%'; 查看一下 显示

首先、查看mysql的my.cnf,确认为utf8

-------------------------- ----------------------------

 代码如下

| Variable_name | Value |

复制代码

-------------------------- ----------------------------

mysql> show variables like "%char%";

| character_set_client | utf8|

-------------------------- -------------------------------------

| character_set_connection | utf8|

| Variable_name            | Value                               |

| character_set_database | latin1 |

-------------------------- -------------------------------------

| character_set_results | utf8|

| character_set_client     | utf8                                |

| character_set_server | latin1 |

| character_set_connection | utf8                                |

| character_set_system | utf8 |

| character_set_database   | latin1                              |

| character_sets_dir | /home/jh/mysql/share/mysql/charsets |

| character_set_filesystem | binary                              |

-------------------------- ----------------------------

| character_set_results    | utf8                                |

再用 SHOW VARIABLES LIKE 'collation_%'; 查看一下 显示

| character_set_server     | utf8                                |

 代码如下

| character_set_system     | utf8                                |

复制代码

| character_sets_dir       | D:/MySQL Server 5.0/share/charsets/ |

---------------------- -------------------

-------------------------- -------------------------------------

| Variable_name | Value |

8 rows in set (0.00 sec)

---------------------- -------------------

 

| collation_connection | utf8_swedish_ci |

 

| collation_database | latin1_swedish_ci |

mysql> show variables like "%coll%";

| collation_server | latin1_swedish_ci |

---------------------- -------------------

---------------------- -------------------

| Variable_name        | Value             |

原来如此啊 哈哈 知道错在哪里 剩下的就好办了

---------------------- -------------------

解决方法:

| collation_connection | utf8_general_ci   |

依次执行:

| collation_database   | latin1_swedish_ci |

 代码如下

| collation_server     | utf8_general_ci   |

复制代码

---------------------- -------------------

 

3 rows in set (0.00 sec)

set character_set_database =utf8;

然后将数据库中所有编码方式改为统一:

 

 代码如下

set character_set_results =utf8;

复制代码

 

mysql> set character_set_database=utf8;

set character_set_server =utf8;

Query OK, 0 rows affected (0.00 sec)

 

本文由澳门正规赌博十大网站发布于澳门游戏网站,转载请注明出处:表的字符编码