锁定老帖子 主题:MySQL4.1的字符集讲解
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-10
想请教一下:
本人过去使用mysql3.*.**数据库,使用characterEncoding=GBK的方式存取了中文数据。现将数据库移植到mysql5.*.*的数据库上,可是,无论是将数据库设置为GBK还是latin1字符集,使用原来的程序都无法显示正常,请问,如何解释?如何解决? |
|
返回顶楼 | |
发表时间:2006-01-10
airbird 写道 想请教一下:
本人过去使用mysql3.*.**数据库,使用characterEncoding=GBK的方式存取了中文数据。现将数据库移植到mysql5.*.*的数据库上,可是,无论是将数据库设置为GBK还是latin1字符集,使用原来的程序都无法显示正常,请问,如何解释?如何解决? [client] default-character-set=gbk [mysqld] default-character-set=gbk skip-character-set-client-handshake skip-character-set-client-handshake 是由于 4.1 的 BUG 引入的设置。 5.x 版本还不太清楚是否有此问题。 |
|
返回顶楼 | |
发表时间:2006-06-28
robbin 写道 MySQL JDBC Driver的3.0.16也是一个分水岭,3.0.16版本会取数据库本身的编码,然后按照该编码转换,这种方式和Oracle的JDBC Driver是一样的。例如你的数据库是GBK编码的话,JDBC Driver就会把数据库里面的取出来的字符串按照GBK往unicode转换,送给JVM。因此正确的设置数据库本身的编码就尤为重要。
因此,使用什么数据库版本,不管是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 这个真的在各位的应用中都有用?我的DB和JDBC Driver版本都是更新的(mysql5.0.9-beta-nt,JDBC Driver:3.1.6),我们采用的是缺省的latin字符集(旧数据是如此),为什么页面中还会有乱码的?我们是用一个转换方法来实现的汉字的.只是比较麻烦.是不是要正常显示还和别的什么有关系呢?比如页面编码什么的?不是说页头设定的字符集.和web.xml设置有什么要求? |
|
返回顶楼 | |
发表时间:2006-07-11
mysql的字符集好几次让我吃了苦头
|
|
返回顶楼 | |
发表时间:2006-07-11
对于MySQL4.1系列,注意下面两点:
一、创建数据库的时候指定默认字符集: CREATE DATABASE test DEFAULT CHARACTER SET utf8; 二、然后JDBC的数据库连接URL指定字符编码方式: test?useUnicode=TRUE&characterEncoding=UTF8 这样不用考虑MySQL服务器的配置,就总是能得到正确的结果。 |
|
返回顶楼 | |