MySQL数据库编码问题全面解析
2007-01-30 23:20
351 查看
MySQL数据库编码问题全面解析
MySQL数据库的4.1是一个分水岭,4.1直接支持Unicode,以下版本支持的不好。
MySQL JDBC Driver的3.0.16也是一个分水岭,3.0.16版本会取数据库本身的编码,然后按照该编码转换,这种方式和Oracle的JDBC Driver是一样的。例如你的数据库是GBK编码的话,JDBC Driver就会把数据库里面的取出来的字符串按照GBK往unicode转换,送给JVM。因此正确的设置数据库本身的编码就尤为重要。
MySQL JDBC Driver3.0.16以下的版本则不然,它不会那么智能的根据数据库编码来确定如何转换,它总是默认使用ISO8859-1,因此你必须使用 characterEncoding=GBK来强制他把数据库中取出来的字符串按照GBK来往unicode转换。
因此,使用什么数据库版本,不管是3.x,还是4.0.x还是4.1.x,其实对我们来说不重要,重要的有二:
1) 正确的设定数据库编码,MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集)
2) 使用3.0.16以上版本的JDBC Driver,那么你就不需要再写什么characterEncoding=UTF-8
这样,如果,数据库服务器使用的是utf-8,那么,jdbc就会把数据库的内容用utf-8格式传到JVM中。
而,如果数据库服务器中的某个数据库使用的编码是gbk,那么就会发生编码不一致的错误!这时,你可以使?characterEncoding=GBK强制使用gbk编码传递到JVM中。
或者,你也可以把整个MySQL数据库服务器的编码转变为gbk。
在MySQL中,默认使用的是lartin1,也就是ISO8859-1字符集编码。这是一种8位的编码,适用于所有西欧字符。而对于汉字等是不合适的。
最好、最通用的编码格式是utf-8,这时一种8位的Unicode字符集。它对于8位的西欧字符集来说,比较节省空间,而又能够有效地表示汉字等字符。
因此,将MySQL数据库服务器设置为utf-8格式,把所有的MySQL数据库也设置为utf-8格式,这是最佳的选择!全世界所有语言都可以很好的得到支持!
但是,一些常用的MySQL工具无法显示utf-8格式的中文。如,MySQL自带的工具,MySQL-Front等软件。但是,MyManger和命令行下的MySQL是可以正常显示utf-8格式的中文的。
如果,你选择使用gbk,那么就应该把数据库服务器和数据库的编码格式全部转为使用gbk,否则可能会出现问题。
MySQL数据库的4.1是一个分水岭,4.1直接支持Unicode,以下版本支持的不好。
MySQL JDBC Driver的3.0.16也是一个分水岭,3.0.16版本会取数据库本身的编码,然后按照该编码转换,这种方式和Oracle的JDBC Driver是一样的。例如你的数据库是GBK编码的话,JDBC Driver就会把数据库里面的取出来的字符串按照GBK往unicode转换,送给JVM。因此正确的设置数据库本身的编码就尤为重要。
MySQL JDBC Driver3.0.16以下的版本则不然,它不会那么智能的根据数据库编码来确定如何转换,它总是默认使用ISO8859-1,因此你必须使用 characterEncoding=GBK来强制他把数据库中取出来的字符串按照GBK来往unicode转换。
因此,使用什么数据库版本,不管是3.x,还是4.0.x还是4.1.x,其实对我们来说不重要,重要的有二:
1) 正确的设定数据库编码,MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集)
2) 使用3.0.16以上版本的JDBC Driver,那么你就不需要再写什么characterEncoding=UTF-8
这样,如果,数据库服务器使用的是utf-8,那么,jdbc就会把数据库的内容用utf-8格式传到JVM中。
而,如果数据库服务器中的某个数据库使用的编码是gbk,那么就会发生编码不一致的错误!这时,你可以使?characterEncoding=GBK强制使用gbk编码传递到JVM中。
或者,你也可以把整个MySQL数据库服务器的编码转变为gbk。
在MySQL中,默认使用的是lartin1,也就是ISO8859-1字符集编码。这是一种8位的编码,适用于所有西欧字符。而对于汉字等是不合适的。
最好、最通用的编码格式是utf-8,这时一种8位的Unicode字符集。它对于8位的西欧字符集来说,比较节省空间,而又能够有效地表示汉字等字符。
因此,将MySQL数据库服务器设置为utf-8格式,把所有的MySQL数据库也设置为utf-8格式,这是最佳的选择!全世界所有语言都可以很好的得到支持!
但是,一些常用的MySQL工具无法显示utf-8格式的中文。如,MySQL自带的工具,MySQL-Front等软件。但是,MyManger和命令行下的MySQL是可以正常显示utf-8格式的中文的。
如果,你选择使用gbk,那么就应该把数据库服务器和数据库的编码格式全部转为使用gbk,否则可能会出现问题。
相关文章推荐
- MySQL数据库编码问题全面解析
- 中文编码问题全面分析【转】
- android sax 解析xml中文编码问题
- 【视频编码格式】全面解析
- mysql的安装、C++访问mysql数据库、编码设置问题
- 配置mysql数据库的编码问题
- Java HashMap深度解析-面试问题全面解读(1)
- mysql数据库由于启用dns逆向解析导致数据库链接查询过慢的问题
- htmlparser解析网站时服务器返回的文件编码和页面编码不一致问题
- JSP连接MySQL数据库时中文编码问题
- java解析php函数json_encode unicode 编码问题
- javaweb(二):JSP响应数据和浏览器解析数据的编码问题
- css编码问题导致ie6不能正确解析文件内容
- Python解析xml文件遇到的编码解析的问题
- 解析WEB开发编码问题
- 编码问题全解析
- 计算机是如何支持中文的? ――国际化和本地化、字符集和编码等问题解析
- 全面解析《嵌入式程序员应该知道的16个问题》
- mysql数据库用命令的导入导出(同时解决编码问题)
- MySQL数据库编码问题