全是UTF8,还是中文乱码问题...

jerrycool 2007-01-24 01:06:53
昨天试了一天,还是搞不定.

症状:
入库时,如果有中文在库里则显示为乱码
从库里取出数据,如果有中文,用JB断点调试也显示为乱码

我用JB2006开发的.
源文件/HTML/JS/CSS文件/项目属性/数据库编码全为UTF8
过滤器里,所有请求和响应也全是UTF8
JDBC URL:jdbc:mysql://localhost:3306/forum?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
(我用的连接池,在XML文件里存储配置信息,所以&换成了&,具体的不说了,大家知道为什么)
看一遍又一遍的JDBC文档和MySql文档,没得觉得哪里有错啊.可就是中文乱码.

断点调试从客户端Post来的数据时,是UTF8,且不乱码.
直接在EMS for mysql manager的query里直接用sql录入带有中文的数据一切OK!
用程序入库时乱码,我是用EMS查看到的,EMS版本为最新的Lite版,因为没有Pro版的破解[哪位有发给我喔,多谢啦:)]
EMS的客户端编码为default,我看了,好象没有UTF8选,晕死....不知道是不是Lite版没有.但是数据库我肯定是UTF8!
...全文
7007 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷月心凝 2009-02-04
  • 打赏
  • 举报
回复
顶顶顶,遇到了同样的问题,有幸看到本文章,希望有用挖!
jerrycool 2007-02-28
  • 打赏
  • 举报
回复
现在用Eclipse开发,全用UTF8,一切正常!
marvion 2007-02-28
  • 打赏
  • 举报
回复
我也遇到了这个问题
hanhongmin 2007-02-19
  • 打赏
  • 举报
回复
MARK
jerrycool 2007-01-31
  • 打赏
  • 举报
回复
昨天已经把JB做的转到了Eclipse上了...入库/出库/请求/响应,一切正常!
mysql管理工具也改为Navicat了,字符显示正常!

在控制台里查看时:
如果不作设置 select出来的数据显示为乱码
如果设置为 set names 'utf8'; select出来的数据显示为乱码
如果设置为 set names 'gbk'; select出来的数据显示正常

以上select的表里,有中文也有英文数字.中文乱码,英文数字正常.某个字段里也是!
比如:????11fasdf32???
jerrycool 2007-01-31
  • 打赏
  • 举报
回复
mysql> show variables like "%character%";
+--------------------------+----------------------------------------------------
-----+
| 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:\Program Files\MySQL\MySQL Server 5.2\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.02 sec)
yuanmingaaa 2007-01-31
  • 打赏
  • 举报
回复
用GB2312试试 我以前自己做的一个论坛就是用UTF-8.然后突然全是乱码.最后把页面全改成GB2312了就好了..不行你在servlet里面取一下编码方式看看是不是UTF-8.
zjntche_cn 2007-01-31
  • 打赏
  • 举报
回复
那就在控制台显示一下系统变量:show variables like "%character%",如果有不是utf8的字符集,就用set命令修改字符集,然后再查询数据瞧瞧,当然重启mysql服务之后,字符集还会回到原来的状态,所以要注意一下!
zjntche_cn 2007-01-31
  • 打赏
  • 举报
回复
还是用MySQL Query Browser呵呵!
jerrycool 2007-01-31
  • 打赏
  • 举报
回复
set names utf8这步可以不用了,我的项目全是UTF8,数据库也是.在连接时也指定了utf-8.现在正常了...

刚才看了控制台属性.确实是GBK936,原来是这样子...

兄弟们都用什么管理mysql啊?navicat比较好,但没有破解文件.晕!
ems不知道是否支持UTF8数据库
zjntche_cn 2007-01-31
  • 打赏
  • 举报
回复
在控制台里查看时:
如果不作设置 select出来的数据显示为乱码
如果设置为 set names 'utf8'; select出来的数据显示为乱码
如果设置为 set names 'gbk'; select出来的数据显示正常

好象是因为DOS窗口使用了gbk字符集,在DOS窗口字符集标题栏上点击右键查看属性,会发现“当前代码页 936 (ANSI/OEM 简体中文 GBK)”的字样。
我个人认为有以下几个步骤:
1、设置mysql的默认字符集为utf8:
[mysqld]default-character-set=utf8
2、建表采用utf8:
create table tablename (cloumns) default character set utf8 collate utf8_general_ci;
3、在MySQL Query Browser中插入数据之前先set names utf8
4、设置tomcat的server.xml文件,添加URIEncoding="utf-8":
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" />
5、在JSP文件头上设置utf-8:
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6、保存JSP文件的时候采用utf-8字符集
经过以上几步,应该能够保证utf-8字符集环境下中文显示正常!
当然这只是select数据,如果insert数据的时候可能还要设置request对象!
laochake 2007-01-31
  • 打赏
  • 举报
回复
数据量不大的话,可以先用 mysqldump 把数据库dump下来
然后用文本编辑工具打开那个文件,仔细研究一个文件,应该会有对你有帮助的信息
jerrycool 2007-01-30
  • 打赏
  • 举报
回复
绝对是!

昨天用Eclipse试了,可以入库!取数据时,全部数据取出来了,没问题,但后面还跟了些乱码.今天看看是什么东西...

莫非是JB出问题了?不就是在项目属性那里设置为UTF8就成了嘛
jerrycool 2007-01-30
  • 打赏
  • 举报
回复
zjntche_cn(蛋蛋)

MYSQL服务器应该是UTF8,安装完后的配置我选的是中间的(按那个英文说就是UTF8,还是推荐的!)
控制台客户端要怎么确定是否UTF8呢?

现在控制台虽然不能正常显示,但是程序里取出数据来,显示到客户端是UTF8,不乱码!
zjntche_cn 2007-01-30
  • 打赏
  • 举报
回复
首先是MySQL服务器端是不是UTF-8,如果是则检查客户端是不是UTF-8,如果都采用的UTF-8,且MySQL控制台UTF-8显示正常,那就好好检查一下建表和字段的时候是不是用了UTF-8,如果是就再继续向上查,MySQL客户端是不是tomcat的问题,request是不是UTF-8编码,JSP文件是不是UTF-8编码,说这么多说到底就是确保数据保存的格式,到提取出来的数据,到显示的数据都为统一的UTF-8编码,而将客户端数据保存起来都是统一的UTF-8解码!
jerrycool 2007-01-30
  • 打赏
  • 举报
回复
感谢各位!!!

Eclipse一切正常!
应该是JB编译时,按本地操作系统的字符编码来进行的吧.我用XP

哎...以后用MyEclipse算了.反正差不多,Eclipse还小一点.好象比JB反应快点.

EMS管理MYSQL时,显示还是?号,应该是编码不正确吧...
sunangle 2007-01-30
  • 打赏
  • 举报
回复
先看mysql数据库默认是不utf-8,数据库是不是utf-8,再试
jerrycool 2007-01-29
  • 打赏
  • 举报
回复
我是楼主!

对不起楼上各位了,昨天终于会用mysql控制台了...原来要用;结尾.昏!!!!
在控制台里用insert语句插入时,有时可以(估计是乱码长度刚好在限定内),select出来显示为乱码,set names gbk后,显示正常!就是插入时的中文数据.
可能这个问题得重新认识了...
jerrycool 2007-01-29
  • 打赏
  • 举报
回复
mysql> SHOW VARIABLES LIKE 'character_set_system';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_system | utf8 |
+----------------------+-------+
1 row in set (0.00 sec)
jerrycool 2007-01-29
  • 打赏
  • 举报
回复
mysql> show create database my_test;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| my_test | CREATE DATABASE `my_test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.16 sec)
加载更多回复(40)

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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