mysql怎样输出中文乱码问题_mysql数据库输出中文乱码问题解决方法

最近在学用jsp+mysql做网站.

跟许多初学者一样,被中文乱码问题弄得焦头烂额.

上网找了很多资料,试了很多方法,还是不管用.

反复折腾了好几天.终于解决了这个问题.

废话不多,下面进入正题.

我遇到的问题是这样的:

数据库里存有一些带中文字符的数据(例如商品名称,商品详细信息等),当我在jsp页面里获得这些数据并输出的时候,例如:

...

ResultSet rs=db.executeQuery("select name from db");

String Name = rs.getString("Name").toString();

...

%>

页面上显示的总是让人抓狂的乱码.

找了几天的资料,我找到以下原因:

1. mysql里的字符集不对.

用以下命令查看:

mysql> show variables like

'%char%';

|

Variable_name

| Value

|......

|

character_set_client

| latin1

|......

-- 客户端字符集

|

character_set_database |latin1|......

-- 数据库字符集

|

character_set_results

| latin1|......

|

character_set_system

| utf8

|......

+--------------------------+-------------------------------------+------

可见里面的多项默字符集都是latin1,这不可是通用字符集,于是将数据库里的字符集修改成utf8.

修改方法:

1.关闭mysql服务器.

2.在mysql根目录下找到my.ini文件,(虽然英文多,但别怕),往下拉,找到:

...

[client]

port=3306

[mysql]

default-character-set=latin1

....

将"default-character-set=latin1",改成"default-character-set=utf8".

3. 按"ctrl+s"保存文件

4.

在MySQLAdministrator.exe里的"启动变量---高级"里"默认字符集设置里,也将"其值改成utf8.之后按"应用更改".

5.开启mysql服务器

修改后便可在命令行里看到:

mysql> show variables like

'%char%';

+--------------------------+-------------------------------------+------

| 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

| D:\MySQL Server 5.0\share\charsets\ |......

+--------------------------+-------------------------------------+------

这样就把mysql数据库里的字符集都变成utf8了.这样做可能在命令行显示里看不到中文字符,但为了传输字符方便,笔者认为这样还是挺好的.

接下来是页面的显示问题了.

我的解决办法是用一个java方法来转化:

....

Name = rs.getString("Name").toString();

Name = new String(Name.getBytes("ISO-8859-1"), "GBK");

//将其字符集转化

...

这样过后,问题就解决了!

后记:

哎.在编程的世界里,除了英文,其他的文字都属于弱势群体,中文也不例外.

字符集不统一,给开发者带来很大的不便.

希望有一天这个问题能得到完满的解决.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值