jsp 中文乱码问题,求解决

zys5532438 2011-11-28 03:25:35
数据库是mysql编码是:GB2312

JSP页面编码设置:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">

JSP和数据库显示插入的中文都是乱码,应该是JSP页面的问题,已经上网找了好几天了,都不能解决,求大虾指点!
(数据库GB2312和JSP的GBK没冲突,已经过同学实验!无乱码)
...全文
155 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
java爱好者 2011-11-30
  • 打赏
  • 举报
回复
首先将你的jsp页面和数据库编码统一,然后再项目中添加一个过滤器。

做完这些,你就要测试一下前台传到后台的数据中文能不能正常显示。如果能这证明是数据库那段有问题,解决办法是:在连接mysql数据库是在url后面添加useUnicode=true&characterEncoding=GB2312.
如果是前台有问题,那就要修改了最好将表单的提交方式设置为post方式
heartlc 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaoxiao_muyu 的回复:]
可以用写一个中文的过滤器:
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpSer……
[/Quote]
这种方法基本上是必杀
PS:如果你是用Tomcat的话 估计还要修改Tomcat的编码格式
XIAOXIAO_MUYU 2011-11-29
  • 打赏
  • 举报
回复
可以用写一个中文的过滤器:
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req=(HttpServletRequest)request;
if("get".equalsIgnoreCase(req.getMethod())){

Map map=req.getParameterMap();
for (Iterator itr=map.values().iterator();itr.hasNext();){
String[] param=(String[])itr.next();
for (int i=0;i<param.length;i++){
param[i]=new String(param[i].getBytes("ISO-8859-1"),"UTF-8");
}

}

}else{
req.setCharacterEncoding("UTF-8");
}
response.setContentType("text/html;charset=UTF-8");

chain.doFilter(request, response);
}
langyuziyou16 2011-11-29
  • 打赏
  • 举报
回复
mysql 要是 gbk
tianbigao 2011-11-29
  • 打赏
  • 举报
回复
public class ToChinese
{
public String trans(String str)
{
if(str==null)
{
str="";
}
else
{
try
{
str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
}
catch(Exception e)
{
e.printStackTrace(System.err);
}
}
return str;
}
}
chabale 2011-11-29
  • 打赏
  • 举报
回复
修改tomcat的编码格式
在conf下的server.xml
加上一句话: Encoding ="GBK"
xiaozhuangfeng 2011-11-29
  • 打赏
  • 举报
回复
一、直接用plsql插入些数据,然后从页面取出,如果不会乱码,则说明是你从页面插入数据到数据库的时候编码问题,你只要从页面取过来的时候字符串转码一下,再存到数据库中就ok
二、如果一不行,你从数据库中取出来的数据转码
海逸_2018 2011-11-29
  • 打赏
  • 举报
回复
1:写一个过滤器类
2:如用到TOMCAT容器
server.xml
加上一句话: Encoding ="GBK"
紫恋辰轩 2011-11-29
  • 打赏
  • 举报
回复
在你的servlet里的处理方法前加上 request.setCharacterEncoding("UTF-8");
如是我闻2012 2011-11-29
  • 打赏
  • 举报
回复
用这个试试,我以前也是,但后来就用这个解决的。
把tomcat中WEB-INF\classes\filters\下的几个文件拷到你站点相应目录下,
在web.xml中加入
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
EggItayi 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chabale 的回复:]

修改tomcat的编码格式
在conf下的server.xml
加上一句话: Encoding ="GBK"
[/Quote]
这个方法用过没?
dingchunyang 2011-11-29
  • 打赏
  • 举报
回复
tomcat
zys5532438 2011-11-29
  • 打赏
  • 举报
回复
各位大神啊,我方法都试过了,过滤器也还不行,页面和数据库都是gb2312的,不知道为什么,想死的心都有了
demonapple 2011-11-28
  • 打赏
  • 举报
回复
1楼正解 字符编码不同 每次插入取出都转换一下
DemoChen 2011-11-28
  • 打赏
  • 举报
回复
请问你提交的方式是“get”还是“post”?
仙之色兮 2011-11-28
  • 打赏
  • 举报
回复
在插入数据库之前用函数进行转码
public static String codeToString(String str){
String s=str;
try{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}catch(Exception e){
return s;
}
}

81,092

社区成员

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

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