表单提交后数据库插入数据出现乱码怎么解决

canghong_2012 2012-05-22 04:52:41
在jsp中我是用utf-8编写的。
下面这个是处理乱码的但是数据库那边还是会出现乱码
package cn.com;
public class chStr {
public String chStr(String str){
if(str==null){
str="";
}else{
try{
str=(new String(str.getBytes("iso-8859-1"),"UTF-8")).trim();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str;
}

public String convertStr(String str1){
if(str1==null){
str1="";
}else{
try{
str1=str1.replaceAll("<","<");
str1=str1.replaceAll(">",">");
str1=str1.replaceAll(" "," ");
str1=str1.replaceAll("\r\n","<br>");
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str1;
}
}
...全文
950 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chihuifeng123 2013-09-19
  • 打赏
  • 举报
回复
我也出现过这种错误,把所有的编码全部设为gb2312就好了。
u010589207 2013-05-06
  • 打赏
  • 举报
回复
my921 谢了,三楼的你回答的,我的问题解决了,谢谢啊
canghong_2012 2012-05-23
  • 打赏
  • 举报
回复
怎样查看数据库编码啊??? 有人说数据库不能用"UTF-8"是真的还是假的啊。
canghong_2012 2012-05-23
  • 打赏
  • 举报
回复
怎样查看数据库的编码啊???
有人说数据库不支持“utf-8”是真的还是假的啊
canghong_2012 2012-05-23
  • 打赏
  • 举报
回复
上面两位朋友说在 <Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>加上URIEncoding="UTF-8"我试了一下,加进去后,在重启tomcat但是还是出现一样的情况。

永远的小鱼 2012-05-23
  • 打赏
  • 举报
回复
看看你数据库是什么编码
canghong_2012 2012-05-23
  • 打赏
  • 举报
回复
我在登陆页面的时候有写一句
在servlet中有写System.out.print("登录成功!欢迎"+request.getParameter("username")+"光临本系统!");这么一句,登陆后在Consele显示出来的不是乱码。
这样确定不是传值乱码。
而且我在插入数据之后,在网页上是可以显示我插入的数据,那边也显示也不是乱码。
只有查看数据库的时候那边才显示乱码。
t141wuxy 2012-05-23
  • 打赏
  • 举报
回复
要不要写个过滤器呢?
湖欞 2012-05-23
  • 打赏
  • 举报
回复
补充一下,我给的这个filter-mapping应该放在所有filter-mapping的上面。
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
湖欞 2012-05-23
  • 打赏
  • 举报
回复
要看你的提交方式:
get方式:
在tomcat的service.xml中加一个URIEncoding="UTF-8",如下:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>
post方式:
1.先写一个过滤器类:
package com.idesvo.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodeFilter implements Filter {

private String encoding="";public void destroy() {
// TODO Auto-generated method stub

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}

public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
encoding=config.getInitParameter("encoding");
}
}

2.再在web.xml中建关联这处过滤就OK了:
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.idesvo.filter.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

AngelWings 2012-05-23
  • 打赏
  • 举报
回复
1.表单提交是不是用post方式;
2.有没有用ajax技术提交数据;
3.调教到action或servlet中,在插入到数据库前输出下,看看是否正常;
4.直接在数据库中插入你所提交的内容,看看是否正常;
canghong_2012 2012-05-23
  • 打赏
  • 举报
回复
SQL 2005
assdust110 2012-05-23
  • 打赏
  • 举报
回复
你用的什么数据库,我才能告诉你怎么设置编码啊
aaa8587203 2012-05-23
  • 打赏
  • 举报
回复
数据库跟java后台的编码格式不一样,看看你取出来的是不是乱码,不是的话,就没有很大关系,是的话,再取的时候转下格式。
zgh_mnb 2012-05-22
  • 打赏
  • 举报
回复

<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding=""UTF-8/>

阳二爷 2012-05-22
  • 打赏
  • 举报
回复
tomcat--conf--server.xml
找到<connector port="8080" 后面加上URIEncoding="utf-8" />
fw347969680 2012-05-22
  • 打赏
  • 举报
回复
首先用System.out.println()在Servlet里面输出下中文,如果不是乱码,说明不是jsp向Servlet传值乱码,那就是数据库的原因了。因为数据库中的表也有它的编码方式的。

81,092

社区成员

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

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