请教高手,jsp里request.getParameter()中文乱码的解决方法

liveaspx 2012-06-01 03:54:16
我是新手,自己用个测试页面,页面编码是GBK的 index.jsp?name=中文测试

但是name参数我用request.getParameter接收后打印出来的是乱码
在网上搜了一堆资料,也试过转换一下编码

Strinng a = request.getParameter("name");
out.println(new String(a.getBytes("ISO-8859-1"), "gbk"));

但还是不行,找了一整天的资料,都快逼疯了,求高手指点


页头
contentType="text/html; charset=gbk"
pageEncoding="gbk"

都加了,request.setCharacterEncoding("gbk") 也加了,但总是显示乱码
...全文
1435 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liveaspx 2012-06-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用楼主 的回复:
我是新手,自己用个测试页面,页面编码是GBK的 index.jsp?name=中文测试

但是name参数我用request.getParameter接收后打印出来的是乱码
在网上搜了一堆资料,也试过转换一下编码

Strinng a = request.getParameter("name");
out.println(new String(a.getByt……
[/Quote]

谢谢哦,不过这样子的话每次都得去转一下编码吗??
jueshengtianya 2012-06-02
  • 打赏
  • 举报
回复
你如果是post提交的话request.setCharacterEncoding("gbk");这句话有作用
但是你如果用get提交的话只能用out.println(new String(a.getBytes("ISO-8859-1"), "gbk"));
并且还用看一看你的页面使用啥提交过来的编码,这样就不会出现乱码问题
youhuiqq 2012-06-02
  • 打赏
  • 举报
回复
在Eclipse中右键看Properties中的Resource,看你的项目的默认编码是多少?这个编码级别也是你java文件的编码,页面希望能和你的java文件保持同一个编码,如果项目是UTF-8,而你的页面时GBK必然乱码。
liztclaim 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我是新手,自己用个测试页面,页面编码是GBK的 index.jsp?name=中文测试

但是name参数我用request.getParameter接收后打印出来的是乱码
在网上搜了一堆资料,也试过转换一下编码

Strinng a = request.getParameter("name");
out.println(new String(a.getBytes("ISO-8859-……
[/Quote]



对请求的url进行encodeURI(encodeURI(url));

Strinng a = request.getParameter("name");
a = URLDecoder.decode(a,"UTF-8");

这样就OK了。

r280881872 2012-06-01
  • 打赏
  • 举报
回复
看是不是 get 提交的,
如果是改成post
liveaspx 2012-06-01
  • 打赏
  • 举报
回复
<%@ page language="java" import="java.util.*" pageEncoding="gbk" contentType="text/html; charset=gbk"%>
<%
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");

out.println(new String(request.getParameter("name").getBytes("ISO-8859-1"), "gbk"));
%>


怕是我现在在测试的页面的代码,调试的时候老是乱码
Never_say_mind 2012-06-01
  • 打赏
  • 举报
回复
看看页面编码是不是也设的是中文的
rorom 2012-06-01
  • 打赏
  • 举报
回复
把服务器的配置编码也改一致.
如tomcat下的server.xml
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
/>
古布 2012-06-01
  • 打赏
  • 举报
回复
js 的<metadata ...charset加了吗?
ylovep 2012-06-01
  • 打赏
  • 举报
回复

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

还有确保页面编码格式也是UTF-8
zwl175369 2012-06-01
  • 打赏
  • 举报
回复
一个文件也有编码;有时会页面上的编码跟你项目编码不一致;也会导致乱码;一般要是编码一致的话;后台取出值的时会在转码下是不会有问题的;
完美灬缺陷 2012-06-01
  • 打赏
  • 举报
回复
把你页面内容贴出来吧,
liveaspx 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你页面编码有没有跟后台java的编码有一致;保证一致的情况下转码就不会有问题!
[/Quote]
我整个项目就一个文件而已的,而且这个文件什么也没做,就单单getParame一下,然后打印而已
zwl175369 2012-06-01
  • 打赏
  • 举报
回复
你页面编码有没有跟后台java的编码有一致;保证一致的情况下转码就不会有问题!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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