论坛首页 综合技术论坛

MySQL4.1的字符集讲解

浏览 32627 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-01-10  
想请教一下:
本人过去使用mysql3.*.**数据库,使用characterEncoding=GBK的方式存取了中文数据。现将数据库移植到mysql5.*.*的数据库上,可是,无论是将数据库设置为GBK还是latin1字符集,使用原来的程序都无法显示正常,请问,如何解释?如何解决?
0 请登录后投票
   发表时间: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 版本还不太清楚是否有此问题。
0 请登录后投票
   发表时间: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设置有什么要求?
0 请登录后投票
   发表时间:2006-07-11  
mysql的字符集好几次让我吃了苦头
0 请登录后投票
   发表时间:2006-07-11  
对于MySQL4.1系列,注意下面两点:
一、创建数据库的时候指定默认字符集:
CREATE DATABASE test DEFAULT CHARACTER SET utf8;
二、然后JDBC的数据库连接URL指定字符编码方式:
test?useUnicode=TRUE&characterEncoding=UTF8
这样不用考虑MySQL服务器的配置,就总是能得到正确的结果。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics