也是乱码问题,头疼啊,请教各位!

cy_angel 2005-10-17 11:17:22
我用的jdk1.5+tomcat5.5+mysql5.0,数据库的字符集是utf8,jsp页面字符集也是utf8,现在我遇到这样的问题:数据库中只要是中文的,就全部都是乱码,但从页面读出来是正常的;从页面中写中文,数据库中是乱码,但从页面读出来是正常的;直接在MYSQL Command Client中写insert语句,插入的中文显示正常,但读到页面是乱码。我有两个问题需要请教。1、如何把数据库中的乱码转换成正常的,因为数据库中现有的数据不能丢失。2、如何解决从页面写数据库乱码问题?
请各位大侠帮忙解决,谢谢!谢谢!
...全文
370 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
killwin 2006-02-18
  • 打赏
  • 举报
回复
我的刚好有LZ相反,数据库中为中文的JSP显示正确(用mysql工具直接写入),通过网页传入数据库的数据为乱码,也显示为乱码。
我的JSP服务器为LINUX,感觉可能和你的JSP服务器操作系统有关,建议换个试试!
大健 2005-11-07
  • 打赏
  • 举报
回复
我的解决了。
其实也不算是解决。只是换了一个mysql的客户端工具--phpMyAdmin从原来的2.4升级到2.6。
它多了“connection collation”这样一个选项

楼主可以试试
xnake 2005-10-28
  • 打赏
  • 举报
回复
用jb的db pilot插入
lee3f 2005-10-21
  • 打赏
  • 举报
回复
我也受这种情况困扰
gaoan 2005-10-21
  • 打赏
  • 举报
回复
帮楼主顶下..
gaoan 2005-10-20
  • 打赏
  • 举报
回复
怪了,我写到数据库的的中文数据全是UNICODE的编码。

页面上设置的CHARSET是utf-8,MYSQL设置的字符集也是utf-8.


怎么来正常显示中文呢?
大健 2005-10-19
  • 打赏
  • 举报
回复
我也遇到了同样的问题。初步怀疑是jdbc这一层帮我转码了

强烈关注!
loveflea 2005-10-18
  • 打赏
  • 举报
回复
1、数据库中只要是中文的,就全部都是乱码,但从页面读出来是正常的;从页面中写中文,数据库中是乱码,但从页面读出来是正常的;
utf8编码一个字符3-4个字节(mysql中现在3个),你的客户端不支持utf8,所以看起来是乱码

2、直接在MYSQL Command Client中写insert语句,插入的中文显示正常,但读到页面是乱码。

如果你的操作系统是中文版的windows,进入mysql后首先执行命令:set names gbk;
然后插入中文,应该就可以在页面是正常的了
cy_angel 2005-10-18
  • 打赏
  • 举报
回复
问题还是没有解决,郁闷中~~~~~
请各位高手继续帮我分析啊,谢谢!
hy2003fly 2005-10-17
  • 打赏
  • 举报
回复
我用的数据库编码和写JSP页面都是用UTF-8!你用如下命令检查一下:
mysql> show variables like "%char%";
+--------------------------+--------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+--------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 4.1\share\cha
ets/ |
+--------------------------+--------------------------------------------------
-----+
7 rows in set (0.00 sec)

mysql> show variables like "%colla%";
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

我的设置就如上面所示,我在mysql query browser下,一切正常.
如果你的不是,修改一下的my.ini文件的default charset
我从页面取下数据,一般经过如下操作,写入数据库就不会出现乱码.

String CityName=new String(request.getParameter("CityName").getBytes("ISO-8859-1"),"utf8");
..........................
String str="Insert into Cities(CityName) values(?)";
PreparedStatement stmt = con.prepareStatement(str);
stmt.setBytes(1,CityName.getBytes("utf8"));
........................


coolstr 2005-10-17
  • 打赏
  • 举报
回复
1、

set names 'utf-8'

inser into
2、
没遇到过,你可以试一下用第一个问题的方法。
cy_angel 2005-10-17
  • 打赏
  • 举报
回复
to hy2003fly():目前我的程序量太大了,我想通过不修改程序的办法来解决,否则要改的地方太多了。谢谢!
今天试了一下过滤器,用了过滤器后,向数据库中插入“我们”,在数据库中显示“鎴戜滑”,而从页面读出来是两个问号,即“??”,没有加过滤器之前,数据库中“我们”是这样一串“忙聢聭盲禄卢”,但页面上显示是正常的。请教各位在用过滤器时有没有出现这种情况?怎么解决?谢谢!
hy2003fly 2005-10-17
  • 打赏
  • 举报
回复
不好意思,刚才没有看清楚!你没有源文件的话,就自己写一个转换的类吧.到web->jsp那里找一下(就是"数据库开发"下的),我看过有高手在那里贴过类似的代码.
hy2003fly 2005-10-17
  • 打赏
  • 举报
回复
你有没有bean的源文件?有的话,先备份一份,然后按照我所说的去修改一下,看看行不行?
tartar 2005-10-17
  • 打赏
  • 举报
回复
mark
cy_angel 2005-10-17
  • 打赏
  • 举报
回复
hy2003fly(),谢谢,我的设置和你的一模一样,但我对数据库的操作都是用的别人已经写好了的bean ,我没有源文件,所以这种办法对我来说不可行啊。有没有别的办法啊?谢谢!

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧