jsp jsp页面传递json数据数据出现中文乱码

20:38 提问
jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?
jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?我在doGet方法中设置了response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");所有的编码方式都是utf-8,其他地方都没出现乱码,可是就这里传递的参数是中文时会出乱码,请问是什么原因,怎么解决?
按赞数排序
中文先编码,urlencode
你看下 你的 jsp 页面的显示 编码方式
&%@ page import="java.util.*" pageEncoding="UTF-8" contentType="text/charset=UTF-8"%& 这样的?
还有 可以写一个filter
或者在 tomcat 的修改端口的那个 xml里面修改 URIEncoding = UTF-8
contextType:text.charset=utf-8
后台转码 URLDecoder.decode(需要转码的字符串, "UTF-8")
可以用SpringMVC来做,就几行代码
其他相似问题查看:8787|回复:3
对于初步接触jsp开发的程序员来说,中文乱码往往是令人头疼的。今天,我就向大家介绍一下我常用的方法。
& &&&首先,我们以一个简单的例子来介绍:
& && &例:
& &1. 第一个jsp页面index.jsp
& && & &%@ page language=&java& import=&java.util.*& contentType=&text/charset =utf-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
& & &base href=&&%=basePath%&&&
& & &title&My JSP 'index.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&& &
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
& &&&String name=&我是谁&;
& &&a href=&show.jsp?name=&%=name %&&&跳转&/a&
&&2.跳转到页面show.jsp& &代码如下:
&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
& & &base href=&&%=basePath%&&&
& & &title&My JSP 'show.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&& &
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
& & String name=request.getParameter(&name&);
& &&%=name %&
以上页面是把index.jsp页面中的name的值通过超链接传递到show.jsp页面中:
& &运行程序,我们发现:
&&在show.jsp页面中输出是 :& & ae??ae??è°?
这就出现了中文乱码,如何解决呢?
下面我介绍2种方法:
& && && &(1)& &在index.jsp页面中用jquery 或js 把超链接路径转换一下
& && && && && &&&代码如下:
&&&%@ page language=&java& import=&java.util.*& contentType=&text/charset =utf-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
& & &base href=&&%=basePath%&&&
& & &title&My JSP 'index.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&& &
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
&&&script type=&text/javascript& src=&js/jquery-1.7.2.min.js&&&/script&&/head&
& &&&String name=&我是谁&;
& &&a href=&show.jsp?name=&%=name %&&&跳转&/a&
& & var href=$(&a&).attr(&href&);
& &&&href = encodeURI(href);
& &&&href = encodeURI(href);
& &&&$(&a&).attr(&href&,href);
& && & (2).在show.jsp页面中用java.net.URLDecoder.decode()方法进行转化.
& && && & 代码如下:
& &&&&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
& & &base href=&&%=basePath%&&&
& & &title&My JSP 'show.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&& &
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
& & String name=request.getParameter(&name&);
& & name = java.net.URLDecoder.decode(name,&UTF-8&);
& &&%=name %&
再次运行程序,发现不在乱码了,问题也解决了 。但是,细心一点会发现 以上用到了jquery ,有点麻烦,有没有更好的方法呢?我们看另外一个方法:
& & 二 只需在show.jsp 页面中把得到的name进行转码
& && &1 index.jsp 页面代码:
& && &&%@ page language=&java& import=&java.util.*& contentType=&text/charset =utf-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
& & &base href=&&%=basePath%&&&
& & &title&My JSP 'index.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&& &
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
& &&&String name=&我是谁&;
& &&a href=&show.jsp?name=&%=name %&&&跳转&/a&
& && && & 2 show.jsp页面代码:
& && &&&&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
& & &base href=&&%=basePath%&&&
& & &title&My JSP 'show.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&& &
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
& & String name=request.getParameter(&name&);
& &name= new String(name.getBytes(&ISO-8859-1&),&utf-8&);
& &&%=name %&
& && &&&运行,发现问题也解决了& && && &
& && &&&建议大家使用第二种方法
& && &&&谢谢大家!
最有价值午饭
人工置顶一下,希望新人可以看一下。
注意字符集的问题
IT瞎掰群:,欢迎你!
顶一下,对于新手,编码问题也算是比较常见也比较麻烦的错误了
哈哈,解决了,十分感谢!最后一个方法很实用啊jsp和Servlet之间传值出现乱码的解决方案 -
- ITeye技术网站
博客分类:
jsp+Servlet的形式,在jsp页面向后台发送的请求里包含中文时,后台采用
String name = request.getParameter("name")接收到的是乱码,我在网上找了很多资料,有网友说request.getParameter是默认采用ISO8859-1来编码的,必须进行转换:
我总结了一下,解决中文乱码大概有以下几种方式:
1、采用decode()方法
java.net.URLDecoder.decode(s)
2、采用设置字符集的方式
request.setCharacterEncoding("utf-8");
3、在页面上定义charset的字符集
&%@ page language="java" contentType="text/ charset=utf-8"
pageEncoding="utf-8"%&
&meta http-equiv="Content-Type" content="text/ charset=utf-8"&
4、在web.xml文件里定义编码,同时在CoreFilter类里定义编码为utf-8
&filter-name&encodingFilter&/filter-name&
&filter-class&com.demo.filter.CoreFilter&/filter-class&
&init-param&
&param-name&encoding&/param-name&
&param-value&utf-8&/param-value&
&/init-param&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
5、在form表单里定义编码
accept-charset="utf-8" onsubmit="document.charset='utf-8';"
6、更改ContentTypes的值
改变myeclipse里ContentTypes的值为utf-8
7、改变tomcat字符集
通过改变server.xml文件里的字符集来接收中文
&Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/&
8、采用转码的方式
nameCode = new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
补充:如果是Servlet向页面发送的数据中包含中文,可以采用如下方式解决:
response.setContentType("text/charset=utf-8");
浏览: 111080 次
来自: 北京
无论如何要谢谢你,试了很多办法,你的这个才是终极解决办法 ...
芳姐,我过来溜达溜达,,,嘿嘿。。。
mikey_5 写道没办法啊,这个是全局问题,买个防毒口罩吧, ...
没办法啊,这个是全局问题,买个防毒口罩吧,朋友Jsp页面跳转传值,出现中文乱码 - 雄关漫道真如铁,而今迈步从头越 - ITeye技术网站
博客分类:
当前页跳转到页面 search.jsp
js代码
var userName=document.getElementById("name").
url="search.jsp?name="+encodeURI(userName);
页面跳转成功后,在后台对userName转码
java代码
String name=request.getParameter("userName");
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
此时name便可正常使用了
luyao123127
浏览: 153372 次
来自: 成都
感谢感谢,用得着啊
有的,我研究了下你的程序,把你的struts部分改为JSON输 ...
jackyrong 写道想问下,我的是struts2+uplo ...
想问下,我的是struts2+uploadfit 3.1,文件 ...
灰常感谢,分享精神值得学习!jsp页面传值中文乱码问题解决_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
jsp页面传值中文乱码问题解决
上传于|0|0|暂无简介
大小:850.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 jsp页面传值中文乱码 的文章

 

随机推荐