锁定老帖子 主题:MySQL4.1的字符集讲解
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2005-01-26
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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-01-27
robbin 写道 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 谢谢Robbin 项目中两次使用mysql都为encoding的事情困扰 当时就觉得mysql各种版本对encoding的支持不一样 但是由于换个版本就好了,所以一直没有细究 看来这就是靠实力编程和靠运气编程的差别 |
|
返回顶楼 | |
发表时间:2005-02-01
robbin 写道 1) 正确的设定数据库编码,MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集) 2) 使用3.0.16以上版本的JDBC Driver,那么你就不需要再写什么characterEncoding=UTF-8 在linux上怎么设置utf-8?在/etc/my.cnf设置似乎不起作用。 |
|
返回顶楼 | |
发表时间:2005-02-01
"在linux上怎么设置utf-8?在/etc/my.cnf设置似乎不起作用."
在linux就容易了. 最彻底的方法就是用mysql 的source直接编译成支持gbk的, 还可以自己定制 优化mysql的性能. |
|
返回顶楼 | |
发表时间:2005-02-01
winterwolf 写道 "在linux上怎么设置utf-8?在/etc/my.cnf设置似乎不起作用."
在linux就容易了. 最彻底的方法就是用mysql 的source直接编译成支持gbk的, 还可以自己定制 优化mysql的性能. 照你的意思,我图省事直接用rpm包的是不是没有戏? 还有支持gbk和utf-8一样吗?发现数据库里的数据存储的是gbk,但希望是utf-8。 |
|
返回顶楼 | |
发表时间:2005-02-02
"照你的意思,我图省事直接用rpm包的是不是没有戏?
还有支持gbk和utf-8一样吗?发现数据库里的数据存储的是gbk,但希望是utf-8" 1 rpm包没有戏 2 用utf-8会也有问题 只有用gbk才更避免不必要的转换. |
|
返回顶楼 | |
发表时间:2005-02-05
数据库,我不是很熟悉,但我很想知道的一点,数据库和应用之间的
编码转换是不是对资源的开销很大? |
|
返回顶楼 | |
发表时间:2005-03-11
版主,这篇应该加精华吧?
|
|
返回顶楼 | |
发表时间:2005-11-11
请问mysql 4.1以上怎么手动设置字符集,我用的是windows免安装版。
|
|
返回顶楼 | |
发表时间:2005-11-12
引用 请问mysql 4.1以上怎么手动设置字符集,我用的是windows免安装版。
打开你的系统服务MySQL,查看你的服务中的可执行文件路径内容: 1、可执行文件路径仅有%MySQL%/4.1/bin/mysqld-nt.exe的话,修改系统路径下的my.ini 即%WINNT%\my.ini文件,设置字符集 default-character-set=GBK 或 default-character-set=UTF8 2、如果可执行文件路径是%MySQL%/4.1/bin/mysqld-nt.exe -- xxxx/my.ini的话,就去修改xxxx/my.ini 重启你的MySQL服务。 |
|
返回顶楼 | |