教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL latin1字符集中文乱码解决方案

MySQL latin1字符集中文乱码解决方案

发布时间:2023-05-02   编辑:jiaochengji.com
教程集为您提供MySQL latin1字符集中文乱码解决方案等资源,欢迎您收藏本站,我们将为您提供最新的MySQL latin1字符集中文乱码解决方案资源
出面mysql中文乱码最多的就是数据库编码的问题了,如果我们数据库编码是latin1字符集,但我们直接保存gbk就有可能出现中文乱码了,下面我总结了一些解决办法。

先看我的实例


字符集出现错误解决办法

出现的问题:
  mysql> update users
  -> set username='关羽'
  -> where userid=2;
  ERROR 1366 (HY000): Incorrect string value: 'xB9xD8xD3xF0' for column 'usern
  ame' at row 1

向表中插入中文字符时,出现错误。
  
  mysql> select * from users;
   -------- ----------
  | userid | username |
   -------- ----------
  | 2 | ???? |
  | 3 | ???? |
  | 4 | ?í?ù |
   -------- ----------
  3 rows in set (0.00 sec)


对数据库操作

以下是查看字符集和排序方式的命令,用phpmyadmin可以直接用sql方式运行myql>之后的命令:

mysql> SHOW VARIABLES LIKE 'character_set_%';
————————– —————————-
| Variable_name | Value |
————————– —————————-
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | latin1 |
| character_sets_dir | /usr/share/mysql/charsets/ |
————————– —————————-
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation_%';
———————- ——————-
| Variable_name | Value |
———————- ——————-
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
———————- ——————-
3 rows in set (0.00 sec)


使用php读出数据,需要加入


mysql_query("SET NAMES 'LATIN1'")

此时会发现latin1输出的中文乱码在页面显示已经可以正常(页面的编码是gbk,这时正常就说明读取出来的中文字是gbk编码的了),再插入utf8存储的数据库时因为数据格式不正常,无法正常插入,此时就需要用php来进行数据的转码。


iconv('gbk','utf-8',XXXXX);

这里要注意,如果要导入到utf8字符集的DB中是设定的原先插入到latin1 db中的原始编码格式(本文中的测试后确定为gbk编码)转为utf8,因此用网页的编码方式不断调试输出,直到页面呈现正常的中文字符为止,这种方法可以逆向推出插入db时的中文字符编码格式。

MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)


最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节):

1、在[client]字段里加入default-character-set=utf8,如下:

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

2、在[mysqld]字段里加入character-set-server=utf8,如下:

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

3、在[mysql]字段里加入default-character-set=utf8,如下:

[mysql]
no-auto-rehash
default-character-set=utf8

修改完成后,service mysql restart重启mysql服务就生效。注意:[mysqld]字段与[mysql]字段是有区别的。

您可能感兴趣的文章:
mysql导入导出数据时中文乱码的解决办法
mysql中文乱码解决方法汇总
Mysql字符集设置详解
查看mysql编码方式 mysql数据库编码查看方法
mysql中文乱码原因与解决方法
修改mysql默认编码的方法(windows环境)
mysql编码转换 latin1编码向utf-8转换
mysql字符集设置经验技巧
MySql字符集设置及字符转换(latin1转utf8)总结
mysql数据库编码与ENGINE引擎配置

[关闭]
~ ~