linux,jsp,tomcat,mysql乱码,高分求助

yangfeitarena 2010-10-19 10:48:20
1。mysql数据编码是utf8,
2。连接时也带上&useUnicode=true&characterEncoding=utf-8&autoReconnect=true,
3。页面编码全是utf-8
4。filter过滤器也设置成了utf-8
5. 用servlet存进去中文(用jdbc:insert into tb_user values("中文")),再取出来在页面上显示,全是乱码!
6。我在mysql中用select查,也是乱码

高手请指点!存数据库的代码想必大家都知道怎么存的了,显示的时候,通过webwork的一个action取数据,然后转向显示页面,如下:

ToUserListAction.java

public class ToUserListAction implements Action {
private Logger log = Logger.getLogger(ToUserListAction.class);
List<User> users=new ArrayList<User>();

public String execute() throws Exception {
ServletActionContext.getRequest().setCharacterEncoding("utf-8");
String className="[ToUserListAction]";
LoginManager lm=new LoginManager();
users=lm.getUsers();
//跳转
return SUCCESS;
}


UserList.jsp:

<%
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");

OgnlValueStack ov = (OgnlValueStack) request.getAttribute("webwork.valueStack");

List<User> us = (List<User>) ov.findValue("users");
%>
<html>
<head>
<title>login_show.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table>
<caption>
<tt>Name</tt>
<tt>PassWord</tt>
</caption>
<%for(int i=0;i<us.size();i++){ %>
<tr>
<td><%=us.get(i).getUserName() %></td>
<td><%=us.get(i).getUserPass() %></td>
<td><%=new String(us.get(i).getUserName().getBytes("ISO-8859-1")) %></td>
<td><%=new String(us.get(i).getUserName().getBytes("utf-8")) %></td>
<td><%=new String(us.get(i).getUserName().getBytes("gbk")) %></td>
<td><%=new String(us.get(i).getUserName().getBytes("gb2312")) %></td>
<td><%=new String(us.get(i).getUserName().getBytes("latin1")) %></td>
<td><%=new String(us.get(i).getUserName().getBytes("ISO-8859-1"),"utf-8") %></td>
<td><%=new String(us.get(i).getUserName().getBytes("ISO-8859-1"),"gbk") %></td>
<td><%=new String(us.get(i).getUserPass().getBytes("ISO-8859-1"),"gb2312") %></td>
<td><%=new String(us.get(i).getUserName().getBytes("latin1"),"utf-8") %></td>
<td><%=new String(us.get(i).getUserName().getBytes("latin1"),"gbk") %></td>
<td><%=new String(us.get(i).getUserName().getBytes("latin1"),"gb2312") %></td>
<td><%=new String(us.get(i).getUserName().getBytes("utf-8"),"gb2312") %></td>
<td><%=new String(us.get(i).getUserName().getBytes("gbk"),"gb2312") %></td>
</tr>
<%} %>
</table>
</body>
</html>

...全文
148 19 点赞 打赏 收藏 举报
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dinghw521 2010-10-19
tomcat中conf目录下的server.xml文件

<Connector
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" ENCODING="UTF-8"/>

红色部分字母拼写的可能不对,你可以在网上查下等号前面的字母字母拼写,值就是你所要的字符集

你试试
  • 打赏
  • 举报
回复
zn85600301 2010-10-19
2。连接时也带上&useUnicode=true&characterEncoding=utf-8&autoReconnect=true,
LZ配过了,现在就是要单步看到底那一步开始出现乱码 就好解决了
  • 打赏
  • 举报
回复
qqq320320 2010-10-19
我已经也出现过类似问题。

lz 你直接打开数据库看,相信是乱码的,也就是说,你进入数据的时候就已经是乱码,取出来当然是乱码的

解决办法 设置jdbc.url=jdbc:mysql://127.0.0.1:3306/数据库名?characterEncoding=utf8 OK搞定
  • 打赏
  • 举报
回复
zn85600301 2010-10-19
哪就是 你insert前 获得的数据的问题 你看看到底是那一步乱码了?估计是从页面传过来就有问题
JSP 和工程 编码统一 基本上不用额外转码

  • 打赏
  • 举报
回复
yangfeitarena 2010-10-19
是乱码[Quote=引用 4 楼 zn85600301 的回复:]

你数据库的数据 是不是乱码?
[/Quote]
  • 打赏
  • 举报
回复
zn85600301 2010-10-19
你数据库的数据 是不是乱码?
  • 打赏
  • 举报
回复
yangfeitarena 2010-10-19
没通过url,我直接在servlet中就用insert插入了[Quote=引用 1 楼 zn85600301 的回复:]

6。我在mysql中用select查,也是乱码
你还是看 你为什么存的时候都是乱码 是不是url传参了
[/Quote]
  • 打赏
  • 举报
回复
xiaochengfu1 2010-10-19
每天回帖即可获得10分可用分!
  • 打赏
  • 举报
回复
zn85600301 2010-10-19
6。我在mysql中用select查,也是乱码
你还是看 你为什么存的时候都是乱码 是不是url传参了
  • 打赏
  • 举报
回复
地狱咆哮者 2010-10-19
路过,混点分,呵呵
  • 打赏
  • 举报
回复
binwenstars 2010-10-19
数据库的编码方式设置一下:gbk 在MySQL中有一个myini文件,找到3306这个数,设置编码方式就在附近,设置成GBK或者GB18030应该就行了
  • 打赏
  • 举报
回复
voice1122 2010-10-19
希望这个帖子对你有用:
http://topic.csdn.net/u/20101015/23/31e2f2cb-40ef-4014-b2fb-2a0ac8e85f29.html

还有这个:
http://topic.csdn.net/u/20101014/16/a09736c7-f477-4ecd-8e3e-681f52f3aa12.html


如果其他都没有问题,你的这句:
<td><%=new String(us.get(i).getUserName().getBytes("ISO-8859-1"),"gbk") %></td>
应该是有用的。
  • 打赏
  • 举报
回复
jypapgl 2010-10-19
另外 mySQL 好像有个 myini的文件吧 里面也设置一下
  • 打赏
  • 举报
回复
岁月之梦 2010-10-19
写过滤器了 难道也不行?
  • 打赏
  • 举报
回复
jypapgl 2010-10-19
9L办法可以一试
  • 打赏
  • 举报
回复
waitdream 2010-10-19
[Quote=引用 9 楼 dinghw521 的回复:]
tomcat中conf目录下的server.xml文件

<Connector
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connect……
[/Quote]

好像是URIEncoding吧?
  • 打赏
  • 举报
回复
yshao81710 2010-10-19
这是由于,你入库的时候就是乱码
  • 打赏
  • 举报
回复
zn85600301 2010-10-19
[Quote=引用 10 楼 yangfeitarena 的回复:]

现在是我不在页面之间传,我在servelt中直接insert into tb_user values("中文"),这样就乱码!没传参数啊引用 9 楼 dinghw521 的回复:

tomcat中conf目录下的server.xml文件

<Connector
port="8080" maxThreads="150" minSpareThreads="25"……
[/Quote]
额 这都乱码。。。 感觉是DB和程序的字符集不一样吧
你直接在MYSQL 里面insert 不会乱码吧 你select出来看下 如果还乱码 那就是程序字符集的问题
  • 打赏
  • 举报
回复
yangfeitarena 2010-10-19
现在是我不在页面之间传,我在servelt中直接insert into tb_user values("中文"),这样就乱码!没传参数啊[Quote=引用 9 楼 dinghw521 的回复:]

tomcat中conf目录下的server.xml文件

<Connector
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCo……
[/Quote]
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-10-19 10:48
社区公告
暂无公告