mysql不识别生僻字_MySQL生僻字(不常用字)的完整解决方案
查看 MySQL 数据库服务器和数据库字符集
show variables like '%char%';
查看 MySQL 数据表(table) 的字符集
show table status from sqlstudy_db like '%countries%';
查看 MySQL 数据列(column)的字符集
show full columns from countries;
查看当前安装的 MySQL 所支持的字符集
show charset;
show char set;
MySQL的字符编码设置可以划分为三个层次,依据具体情况可以在数据库、数据表和字段三个级别进行实验:
SET utf8 COLLATE utf8_general_ci
SET gbk COLLATE gbk_chinese_ci
1、MySQL数据库字符编码全局设置;
语句:ALTER DATABASE `数据库名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
2、MySQL数据表字符编码设置;
语句:ALTER TABLE `表名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
3、MySQL数据表字段字符编码设置;
语句:ALTER TABLE `表名` CHANGE `字段名` `字段名` 字段类型(长度) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL
注意:请在执行查询之前,执行:SET NAMES gbk
//
第一次采用MySQL作为业务应用的数据库,由于经验不够丰富,在安装数据库的时候选择了GB2312编码。
起先用的也算得心应手,然而后续发现了生僻字不能显示的情况,把我搞得焦头烂额。经过好几天的摸索、
学习,终于把问题解决了。记下解决步骤,与跟我一样的新手分享。
步骤一: 分析出现乱码的原因
由于GB2312字符集只收录了6763个汉字,导致一些生僻字无法正常显示。
步骤二:确定解决方法
把字符集由GB2312改成GBK。但是由于不能丢弃之前的数据,如何修改MySQL的字符集成了关键。
步骤三:字符集的修改
a. 先导出表结构
mysqldump -u root -p --default-character-set=gbk -d 数据库名 > createdb.sql
其中参数-d表示只导出表结构,不导出数据。
b. 打开createdb.sql,手工把gb2312替换成gbk。
c. 导出所有记录
mysqldump -u root -p --quick --no-create-info --extended-insert --default-character-set=gb2312 数据库名 > data.sql
其中参数--no-create-info表示不生成建表语句;--default-character-set=gb2312表示按照原来字符集导出所有数据。
d. 打开data.sql,手工把SET NAME gb2312改成SET NAME gbk。
注意:如果data.sql很大,可能需要找一些替换工具来完成替换操作,否则可以直接用UltraEdit之类的编辑工具打开修改。
e. 在新的服务器上创建表,执行createdb.sql。
mysql -u root -p 数据库名 < createdb.sql
f. 导入数据,执行data.sql
mysql -u root -p 数据库名 < data.sql
g. 创建数据库用户。
到这儿已经完成了数据库字符集从gb2312到gbk的修改,接下去可以登录数据库,手工把显示为"?"的乱码字重新更新一下。
看看是不是大功告成了!
///
这几天查找了很多关于mysql对中文字符编码的处理,读了各种零散的文章,最后做了全面的总结,现和大家分享:
字符编码
MySQL字符编码 GBK、GB2312、UTF8区别:http://kongjian.baidu.com/wangzhe1945/blog/item/4a69226d4a095cf0421694e1.html
1.系统编码
>show variables like '%character%';
mysql> show variables like '%collation%';
改变系统编码:修改my.cnf(/etc/my.cnf)中默认的编码选项[mysqld]下添加default-charcter-set=utf8 mysql 5.5以上版本换成了character-set-server=utf8 重新启动mysql
命令形式 mysql> SET NAMES 'utf8'; 重新启动mysql的时候所有的设置将失效
2.数据库编码
查看数据库编码: mysql> show create database db_name;
修改数据库编码: mysql> ALTER DATABASE db_name ####这里修改整个数据库的编码
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci;
在在建数据库的时候指定编码:
mysql> CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci ;
3.数据库表和字段编码
查看数据库表和字段编码: mysql> show create table table_name;
>ALTER TABLE table_name DEFAULT CHARACTER SET utf8;
修改字段编码: mysql> ALTER TABLE `table_name` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 该命令就是将MYSQL数据库table_name表中 dd的字段编码改为utf8
4.命令行下插入汉字时指定编码:mysql> set names utf8; 有时候这一句很关键!
mysql> insert into test(name) values('王东伟');
总之,不管采用那一种编码方式,只要做到完全统一将能达到相应的效果。
mysql不识别生僻字_MySQL生僻字(不常用字)的完整解决方案相关推荐
- mysql不识别生僻字_MySQL生僻字插入失败怎么办
业务方反馈有个别用户信息插入失败,报错提示类似"Incorrect string value:"\xF0\xA5 ..... " 看这个提示应该是字符集不支持某个生僻字造 ...
- mysql不识别生僻字_MySQL生僻字插入失败怎样办
软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...
- mysql不识别生僻字_MySQL生僻字插入失败的处理方法
最近,业务方反馈有个别用户信息插入失败,报错提示类似"Incorrect string value:"\xF0\xA5 ..... " 看这个提示应该是字符集不支持某 ...
- mysql数据库存储生僻字_mysql 生僻字存储
@皮总 @红薯###### 第一问:使用mysqlimport导入数据.最好不要使用insert into. 第二问:如果存储是{char(15), unsigned tinyint }, Utf8( ...
- mysql触发器 生僻字_MySQL生僻字插入失败的处理方法(Incorrect string value)
最近,业务方反馈有个别用户信息插入失败,报错提示类似"Incorrect string value:"\xF0\xA5 ..... " 看这个提示应该是字符集不支持某个生 ...
- mysql触发器 生僻字_mysql 生僻字亂碼
發一下牢騷和主題無關: Incorrect string value: '\xF0\xA1\xBF\xA8\xE9\x82...' for column 'last_name' 這個問題出在mysql ...
- 汉字-生僻字:生僻字目录2
ylbtech-汉字-生僻字:生僻字目录2 1.返回顶部 1. 1.1 佀[sì] 佀,姓氏,为华夏八大古姓之一,始祖为大禹.<史记·五帝本纪>中记载"帝禹为夏后而别氏,姓姒氏& ...
- 读书有益——》生僻字、叠字
推荐: 总结-->[读书有益] 读书有益-->生僻字.叠字 读书有益-->生僻字.可能念错的字 – – – 赑 bì 传说中的一种动物,像龟 毳 cuì 会意,本义:鸟兽的细毛 掱 ...
- mysql查询名字中第2个字为丽,数据库技术课程复习5---MySQL语言(2)(单表查询)
0.学习前言 单表查询理解起来是比较简单的,关键要注意格式化指令的使用方法,一起加油鸭! 1.语句格式 语句格式 SELECT [ALL|DISTINCT] [,] - FROM [, ] - [ W ...
最新文章
- 火力发电厂与变电站设计防火规范_建筑内部装修设计防火规范-GB 50222-2017
- ES shrink ——一般是结合rollover一起使用的,一开始没有看懂官方shrink文档,当看了这个之后就明白了...
- 极路由+NETGEAR 传输无线网络
- 使用T-SQL导入多个文件数据到SQL Server中一文的疑惑
- cumsum在matlab中,matlab中cumsum函数和sum函数详解
- 【Linux】3_基本权限UGO的命令(chmod和chown)
- smark和openfire即时通信代码
- 20170125小测
- 1033 旧键盘打字 (20 分)(c语言)
- Python+Opencv实现模板匹配
- 2019腾讯广告算法大赛完美收官,算法达人鹅厂“出道”
- 再谈贝叶斯学派与频率学派的区别
- onlyoffice中文字体下载
- CNC精雕机加工需要牢记的22个常识,一起来学习
- 守护线程Deamon
- ode45解微分方程(组)
- 演出节目名字_【时空文化集团演出公司承制】山东港口首届道德模范、最美家庭颁奖典礼成功举办!...
- 日常英语精彩短句集锦
- QQ邮箱邮件被拦截该怎么办?邮件被拦截的三种解决办法
- 关于PostgreSQL执行计划中的Bitmap Heap Scan、Bitmap Index Scan、Recheck Cond
热门文章
- 计算机英语 病毒 教案,计算机病毒及其防治教案.doc
- 计算机应用专业教学进度表,《计算机应用基础》教学计划 附:教学进度表.doc...
- 消息称谷歌杀手Cuil永久性关闭
- SAP OOALV 动态设置单元格可否编辑
- mysql 存储数据时,报错Cause: java.sql.SQLException: Incorrect string value: '\xF4\x80\xB3\x81\xE8\xAE...'
- 网络设置巨形帧_网络 – 升级到千兆网络 – 启用巨型帧
- 学习bash第二版-前言
- HBase常见面试题
- 怎么看电脑配置?电脑配置好不好?详细教程来了!
- 34.14. 切换字符集