MySQL中文乱码问题一点笔记
2015-02-11 14:55
288 查看
在做JSP连接MySQL数据库并读取数据信息显示时出现中文乱码问题。
关于字符character,字符集character-set,字符序collation 为什么会出现乱码等,有一帖子http://www.jb51.net/article/30864.htm
显示当前字符集 show variables like 'character%';
得到
我的实际wamp:
1、修改配置:http://www.pc6.com/infoview/Article_63586.html
http://www.jb51.net/article/38122.htm
2、创建数据库时:指定字符集和字符序 例如:CREATE DATABASE
IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
创建表时create
table my_table (name varchar(20) not null default '') default charset utf8;
连接:http://www.jb51.net/article/28678.htm
关于GBK、GB2312、UTF8
UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韩字符的大字符集合
如果是中文的网站 推荐GB2312 GBK有时还是有点问题
为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便
UTF-8可以看作是大字符集,它包含了大部分文字的编码。
使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。
gb2312是简体中文的码
gbk支持简体中文及繁体中文
big5支持繁体中文
utf-8支持几乎所有字符
MySQL中涉及的几个字符集
character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。
character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。
在客户端,如果没有定义character-set-results,则采用character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。
要处理中文,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语言,则设置为UTF8。
关于MySQL的中文问题
解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。
character_set_client:客户端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
设置这三个系统参数通过向MySQL发送语句:set names gb2312
http://www.jb51.net/article/31135.htm
wamp下,mysql默认字符集修改
在my.ini里加入
default-character-set = utf8 -->>
[client]
character_set_server = utf8 -->> [mysqld]
关于字符character,字符集character-set,字符序collation 为什么会出现乱码等,有一帖子http://www.jb51.net/article/30864.htm
显示当前字符集 show variables like 'character%';
得到
我的实际wamp:
1、修改配置:http://www.pc6.com/infoview/Article_63586.html
http://www.jb51.net/article/38122.htm
2、创建数据库时:指定字符集和字符序 例如:CREATE DATABASE
IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
创建表时create
table my_table (name varchar(20) not null default '') default charset utf8;
连接:http://www.jb51.net/article/28678.htm
关于GBK、GB2312、UTF8
UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韩字符的大字符集合
如果是中文的网站 推荐GB2312 GBK有时还是有点问题
为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便
UTF-8可以看作是大字符集,它包含了大部分文字的编码。
使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。
gb2312是简体中文的码
gbk支持简体中文及繁体中文
big5支持繁体中文
utf-8支持几乎所有字符
MySQL中涉及的几个字符集
character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。
character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。
在客户端,如果没有定义character-set-results,则采用character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。
要处理中文,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语言,则设置为UTF8。
关于MySQL的中文问题
解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。
character_set_client:客户端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
设置这三个系统参数通过向MySQL发送语句:set names gb2312
http://www.jb51.net/article/31135.htm
wamp下,mysql默认字符集修改
在my.ini里加入
default-character-set = utf8 -->>
[client]
character_set_server = utf8 -->> [mysqld]
相关文章推荐
- mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)
- mysql 5.0 中文乱码问题 笔记
- 问题解决笔记 -- LINUX 服务器 PHP与MYSQL中文乱码问题最终解决方案
- mysql中文乱码问题(转自网易--网站笔记)
- mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)
- 【MySQL学习笔记】4:解决JDBC连接MySQL的query结果中文乱码问题
- Mysql DBA 高级运维学习笔记-Mysql插入中文乱码问题
- 读取mysql 中文乱码问题
- mysql导入建表sql时中文注释的乱码问题
- MySQL中文乱码问题的解决第1/2页
- java下mysql中文乱码问题的解决
- jsp中使用mysql中文乱码的问题。
- Tomcat5+Mysql中文乱码问题的解决方法
- MySQL中文乱码问题的解决第1/2页
- Mysql与JSP网页中文乱码问题的解决方案
- JSP与mysql之间的中文乱码问题的解答(绝对有效)
- php读mysql中文乱码问题解决方法
- Mysql与JSP网页中文乱码问题的解决方案
- MySQL 乱码问题相关资料汇集 - 第二篇文章:MySQL 4.1 中文乱码的问题
- [原创] Java WebApp 中的 MySql 中文乱码问题