文档章节

MySQL学习笔记 - 字符编码

wqli
 wqli
发布于 2012/09/07 23:30
字数 1344
阅读 5K
收藏 6

精选30+云产品,助力企业轻松上云!>>>

如何向mysql5数据库插入中文 ———— JAVA学习室(http://www.java3z.com)

向mysql5数据库正常插入中文,操作如下: 
1.把字符集设定为能支持中文的gbk(在my.ini文件中改)
2.把数据库的Client Characterset和Conn. Characterset的字符集都设定为gbk;
        SET character_set_client=gbk; 
        SET character_set_connection=gbk;
之后再尝试向数据库插入中文,这时插入没有出错,但查询显示是乱码。最后再更改;
        SET character_set_results=gbk;
这样之后,所有的问题都解决了,能正常插入也能正常显示了。
如果还不正常,可以在创建数据库时指定编码gbk, 如下所示
(1)create database if not exists test default character set gbk;
注意:有些人可能会问,建立数据库表时候还没设置编码呢?其实,如果你容器编码是gbk的,则表也是gbk,如下设置表编码为gbk:
CREATE TABLE IF NOT EXISTS test( 
test_id int auto_increment, 
test_name varchar(50) 
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
(2)连接设置编码为gbk 
dao.drivername=com.mysql.jdbc.Driver 
dao.url=jdbc:mysql://localhost:3306/asking?useUnicode=true&characterEncoding=gbk 
dao.username= 
dao.passwd=

MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,下面汇总了有关查看 MySQL 字符集的命令。包括查看 MySQL 数据库服务器字符集、查看 MySQL 数据库字符集,以及数据表和字段的字符集、当前安装的 MySQL 所支持的字符集等。

一、查看 MySQL 数据库服务器和数据库字符集。
mysql> show variables like '%char%';
包括客户端和服务器字符集,以及数据库存储的字符集
+--------------------------+--------------------------------
| Variable_name                 | Value                               |......  
+--------------------------+--------------------------------
| character_set_client          | utf8                                |...... 
| character_set_connection  | utf8                                |......  
| character_set_database     | utf8                                |......
| character_set_filesystem   | binary                              |......  
| character_set_results        | utf8                                |......  
| character_set_server         | utf8                                |......
| character_set_system        | utf8                                |......  
| character_sets_dir            | D:\MySQL\share\charsets\ |......  
+--------------------------+---------------------------------

二、查看 MySQL 数据表(table)的字符集。
mysql> show table status from java3z_chinajsp like '%article%'; (article为表名)

三、查看 MySQL 数据列(column)的字符集。
mysql> show full columns from article;
四、查看当前安装的 MySQL 所支持的字符集。
mysql> show char set; //charset, or character set
五、通过MySQL命令行修改字符集:
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 character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
要想知道远程主机上mysql服务器使用的字符集,可先连接到远程主机上的MYSQL。

假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -u root -p abce123;(注:u与root之间可以不用加空格)
退出MYSQL命令:exit(回车)

 

MySQL正常插入并显示中文数据需满足的条件 —— 网易博客

MySQL数据库默认编码已经是utf8了, default-character-set = utf8,可是向数据库中表中插入中文时,却老是出现 ....\xB5\xA5\xD1\xA1 for column...这样的错误,经过查阅网上类型的错误后,发现一个很奇妙的现象,接下来我们就来开始介绍。

一、在安装数据库时就设定字符集编码为utf8的环境下

在当前字符集编码为:

Server characterset: utf8
Db characterset: utf8 
Client characterset: utf8 
Conn. characterset: utf8

创建数据库:

(1)插入中文数据,操作不能成功。

(2)修改字符集编码为:

Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk

插入中文数据,显示正常。

二、在安装数据库时就设定字符集编码为gbk的环境下

1. 当前字符集编码是:

Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk

创建数据,插入中文数据,操作正常,显示正常。

2. 当前字符集编码为utf8:

Server characterset: gbk
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8

3. 当前字符集编码为utf8:

Server characterset: gbk
Db characterset: gbk
Client characterset: utf8
Conn. characterset: utf8

插入中文数据,操作不能执行。

结论:向数据库正常插入中文,必须满足以下条件:

1. 要把字符集设定为能支持中文的gbk或则utf8;

2. 把数据库的Client Characterset和Conn. Characterset的字符集都设定为gbk;

根据上面的提示 ,我更改了:

SET character_set_client=gbk;
SET character_set_connection=gbk; 


之后再尝试想数据库插入中文,这时没有出错,能插入可是查询出来是乱码。

最后再更改;

SET character_set_results=gbk;

这样之后,所有的问题都解决了,能正常插入也能正常显示了。

关于MySQL数据库正常插入中文数据并能正常显示的条件就介绍到这里,希望通过本次的介绍能够带给您一些收获吧!

 

修改mysql数据库编码 —————— www.cnblogs.com

修改my.ini文件,在其中添加:
default-character-set=gb2312
设置数据库字符集格式:
alter database da_name default character set 'charset'
1)设置数据库编码 /etc/my.cnf 
[mysqld] 
default-character-set=gbk 
... 
[client] 
default-character-set=gbk 
--------------------------------------- 
2)按字符集导出 
$mysqldump -u root -p dbname --default-character-set=gbk > a.sql; 
3)查看SQL文件的编码 
> file a.sql 
a.sql: UTF-8 Unicode ... 
> iconv -f utf-8 -t gbk a.sql > a2.sql 
> file a2.sql 
a2.sql: Non-ISO extended-ASCII English text 这时已经是gbk的编码了 
3)导入数据
查看数据库服务和客户端字符集 
mysql> status; 
Server characterset: gbk 
Db characterset: gbk 
Client characterset: latin1 
Conn. characterset: latin1 
mysql> set names 'gbk';
mysql> status; 
Server characterset: gbk 
Db characterset: gbk 
Client characterset: gbk 
Conn. characterset: gbk 
这时才能导入数据 
mysql> source a.sql; 
---------------------------------------------------------------------------------- 
单独设置某个数据库: 
alter database testdb character set ‘utf8’; 
查看mysql支持的编码:
show character set;
查看系统的字符集:
SHOW VARIABLES LIKE ''character_set_%'';

wqli
粉丝 4
博文 76
码字总数 70382
作品 0
长宁
私信 提问
加载中
此博客有 2 条评论,请先登录后再查看。
与数据库的第一次邂逅

下面是小凰凰的简介,看下吧! 💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活 💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习中) 💗您的点赞、收藏、关...

angel_Beat
07/02
0
0
使用sqlmap中的tamper脚本绕过waf

使用sqlmap中tamper脚本绕过waf 脚本名:0x2char.py 作用:用UTF-8全角对应字符替换撇号字符 作用:用等价的CONCAT(CHAR(),...)对应替换每个(MySQL)0x <hex>编码的字符串 测试对象: ...

osc_k0sclxgn
2018/06/13
12
0
MySQL 学习笔记 - 字符集问题

字符集 1. 常规字符集和校对 字符集 是一套符号和编码。校对规则 是在字符集内用于比较字符的一套规则。 # 列出可以用的字符集mysql> Show Character Set; 任何一个给定的字符集至少有一个校...

城门虾米
2013/07/03
90
0
SQL学习笔记之MySQL中真假“utf8” 问题

0x00 MySQL中UTF8报错 最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误: Incorrect string value: ‘xF0x9Fx98x8...

osc_u90juso0
2018/07/18
2
0
koa2实现mysql数据库分页

1,nodejs6.x版本不支持ES6 nodejs6下使用koa2 http://www.cnblogs.com/dojo-lzz/p/6870106.html 2,windows下mysql5.7版本更改默认字符编码 mysql修改charactetsetserver编码为utf8 http:/......

飞翔的熊blabla
2018/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

唐山5.1级地震 百度人工智能技术帮上忙:成都减灾所提前30秒让北京、天津市民收到预警

本文作者:y****n 7月12日6时38分在河北唐山市古冶区发生5.1级地震,成都高新减灾研究所与应急管理部门联合建成的大陆地震预警网成功预警该地震,给唐山市提前3秒预警,给天津市提前33秒预警...

百度开发者中心
昨天
20
0
如何使用PHP发送POST请求? - How do I send a POST request with PHP?

问题: Actually I want to read the contents that come after the search query, when it is done. 实际上,我想阅读搜索查询之后的内容,完成之后。 The problem is that the URL only a......

javail
50分钟前
14
0
如何从Java读取文件夹中的所有文件? - How to read all files in a folder from Java?

问题: 如何通过Java读取文件夹中的所有文件? 解决方案: 参考一: https://stackoom.com/question/7jt2/如何从Java读取文件夹中的所有文件 参考二: https://oldbug.net/q/7jt2/How-to-rea...

富含淀粉
今天
25
0
主机“ xxx.xx.xxx.xxx”不允许连接到该MySQL服务器

问题: This should be dead simple, but I cannot get it to work for the life of me. 这本来应该很简单,但是我无法让它在我的一生中发挥作用。 I'm just trying to connect remotely to......

技术盛宴
今天
18
0
OSChina 周二乱弹 —— 附近居民接连失踪,你们有什么头绪吗

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《伤离别(原版)》- 黄霑 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :睡...

小小编辑
今天
46
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部