Mysql数据库的乱码、字符集、国际化问题的解决

 Mysql字符集问题不是一个很简单的问题,需要不断的尝试,直到将问题解决。而在真正解决之前很难说问题的答案到底是什么。
在上一部分,我们介绍了常见的字符集修改问题的解决方法。其中的重点部分有:
1show variables like 'collation_%';
用来查看字符集的设置,显示效果是
+----------------------+-----------------+
| Variable_name       | Value          |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server    | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.02 sec)
其中的value将会因数据库的实际设置而有所不同,我们也正是利用这个来检查我们的数据库系统字符
集的设置情况.
2 show variables like 'character_set_%'; 也是用来显示字符集的设置,与上一个的不同之处是本
语句显示的更加详细和具体,显示效果为:
+--------------------------+----------------------------+
| Variable_name          | Value                       |
+--------------------------+----------------------------+
| character_set_client    | utf8                      |
| character_set_connection | utf8                      |
| character_set_database | utf8                      |
| character_set_filesystem | binary                   |
| character_set_results     | utf8                      |
| character_set_server    | utf8                      |
| character_set_system    | utf8                      |
| character_sets_dir        | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)
如果我们要认真分析自己的数据库的字符集问题,还是要用它。
3如果发现其中某一些项目不符合我们的要求甚至是我们的程序发生异常,比如:无法插入中文数据,插入后的数据显示为乱码,这就需要我们对字符集进行修改了,方法较多,有一些可视化软件可以帮我么解决这个问题,但是往往不彻底,最好的方法就是利用DOS环境通过语句来修改,语句格式为
set character_set_*=**;
常用的有:set character_set_client=gbk;
set character_set_connection=gbk;
set character_set_database=gbk;
set character_set_results=gbk;
set character_set_server=gbk;
set character_set_system=gbk;
set collation_connection=gbk;
set collation_database=gbk;
set collation_server=gbk;
然而这几行的使用也大有学问,我应该使用哪个字符集、我应该改其中的几个项、有的为什么改了还是错误。这些需要我们慢慢摸索。
常用的字符集是utf8gbk,这两者需要根据你的项目所使用的字符集来决定,两者要一致,如果是项目是utf8,但是数据库却使用了gbk,那么你的java项目会走得很不爽,经常“耍脾气”。至于应该改那几个项目,我现在还不清楚,经过十几个小时的不断摸索,我的系统运行正常时的设置为
| Variable_name            | Value
     |
+--------------------------+----------------------------------------------------
-----+
| character_set_client     | gbk
     |
| character_set_connection | gbk
     |
| character_set_database   | gbk
     |
| character_set_filesystem | binary
     |
| character_set_results    | gbk
     |
| character_set_server     | gbk
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:Program FilesMySQLMySQL Server 5.1sharechars
ets |

4
alter database mydb character set utf-8; 根据这一条语句的字面意思就可以判断这是建立一个字符集为utf8的数据库 mydb,但是我多次试验发现,此时系统并不认识这个utf-8
好的方法是在建立数据库时采用这样的语句
create table OK(
id int,
name varchar(30)
)DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
总之,字符集问题时一个很复杂的问题,在J2EE体系中很多地方都会出现,以至于在struts框架中将I18Ninternationalilzation)问题进行专门的讨论。假如在web项目中遇到了,不必自认倒霉,不能回避,想方设法干掉她就是了。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值