总结--解决 mysql 中文乱码
2023-09-14 08:58:56 时间
首先分析一下导致mysql 中文乱码的原因:
1、建表时使用了latin 编码
2、连接数据库的编码没有指定
3、写入时就已经乱码(这种情况需要自己检查源数据了)
解决方法总结:
1.创建库时指定编码:
create database testdb default charset utf8
2.修改库的编码:
ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
3.修改表的编码:
ALTER TABLE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
4.修改字段的编码:
ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
是将MYSQL数据库tablename表中 dd的字段编码改能够该为utf8
诊断过程:
1、SHOW CREATE TABLE testtable; 使用建表语句查看当前表的编码如果是拉丁latin编码,则可以使用
ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
进行更改表的编码
2、再次使用show create table 命令查看,表编码
如果发现当前列中编码也不正确,那么使用
ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
进行更扆dd这一列的编码
3、如果还是正确,那么查看下你的代码里的连接方式是否正确
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
我这里是java方面的连接,这里指定了连接的编码utf-8
到这里应该就可以了
4、修改系统默认编码
mysql> SHOW VARIABLES LIKE 'character%'; mysql> SET character_set_client = utf8 ; mysql> SET character_set_connection = utf8 ; mysql> SET character_set_database = utf8 ; mysql> SET character_set_results = utf8 ; mysql> SET character_set_server = utf8 ; mysql> SET collation_connection = utf8 ; mysql> SET collation_database = utf8 ; mysql> SET collation_server = utf8 ;
参考文章:
1、http://www.2cto.com/database/201307/227538.html
2、http://zhidao.baidu.com/link?url=WtACC0jMIsOAk6eX6kJk8qjQhga28VgsYpNPY4Oc9sWH5fgU2OQm1An-IGiV4yZ-PE80VJ5ZB-YxrAVW3Jo8ua
相关文章
- win10 mysql数据库中文乱码
- Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- MySQL高可用性之Keepalived+Mysql(双主热备)
- 【资料整理】MySQL -- SHOW TABLE STATUS
- Mysql一个非常有用的内置函数今天碰到要把MySQL数据库中的varchar转换成date类型进
- mysql 源码包 有的版本 可能没有 CMakeCache.txt
- Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
- MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]
- Mysql索引数据结构有多个选择,为什么一定要是B+树呢?_面试 (MySQL 索引为啥要选择 B+ 树)
- 设置mysql的字符编码解决中文乱码问题
- MySQL添加中文记录报错解决方法
- Java实现获得MySQL数据库中所有表的记录总数可行方法
- MySQL 聚簇索引和非聚簇索引 & mysql 索引为啥用b 树
- ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 5
- C# 操作 MySql
- Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- MySQL远程连接报错2003-cant connection to mysql server on ‘IP’(10061 unknown error)
- 【项目实战】MySQL中union和union all的相同点与不同点