JSP的charset为UTF-8到gb2312的转换

chan10 2010-11-11 04:15:01
现状:
一、因为是两个应用之间的参数传递,所以页面的编码格式不一样。
二、应用A的JSP的
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

应用B的JSP的
<%@ page contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>

可能页面本身编码和charset没关系,但是现在参数传递确实面临这个问题。

三、现在,想要解决的是UTF-8的请求数据,到gb2312的乱码问题。

本人在应用B的JSP中做了,
new String(utf8_name.getBytes(), "gb2312");
new String(utf8_name.getBytes("iso-8859-1"), "gb2312");
new String(utf8_name.getBytes("UTF-8"), "gb2312");

等转码处理,都不能成功,
加了request.setCharacterEncoding("gb2312");段也不行
上网查了下,有的说是按照上面做的,有的是给了一大串的代码。
问:
现在不明白要怎么搞,请教各位遇到这种问题如何处理啊?
...全文
387 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chan10 2010-11-14
  • 打赏
  • 举报
回复
setCharacterEncoding:
用来规范请求页面传递过来的数据编码。

之前的理解偏差太大了。
chan10 2010-11-14
  • 打赏
  • 举报
回复
12#的那段我加进去试了下,确实乱码解决了,

<%request.setCharacterEncoding("UTF-8"); %>

然后结合13#的,问题不在过滤器上。

让我郁闷的是,我之前也加了这块,但是最后的参数是
【gb2312】
,没理解这个方法的含义,我瞎搞了。。。
chan10 2010-11-14
  • 打赏
  • 举报
回复
12#,
你的代码,是加了

<%request.setCharacterEncoding("UTF-8"); %>

这个之前实验了,现在结合13#的,我把web.xml的过滤器去掉,
用最简单的代码来测试下,看下效果。
fq1798 2010-11-14
  • 打赏
  • 举报
回复
晕了,我做了个简单的测试 ,咋没有出现乱码呢? 奇怪,你是不是两个jsp中间 通过某个类处理了?在详细点描述一下

一般情况下。utf-8--》GB2312
1、utf-8——》unicode--》gb2312 就是 new String(utf8_name.getBytes(), "gb2312");
2、new String(utf8_name.getBytes("iso-8859-1"), "gb2312");

你都测试过了,还是没有解决,那么我想肯定涉及到第三个东西,如web.xml中定义的过滤器,某个类等等
magong 2010-11-14
  • 打赏
  • 举报
回复
要多一点代码的意思是并不是这一行代码对整个事情起作用。
既然你不方便给,我的这两个页面你参考一下吧。
a.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="b.jsp" method="post">
<input type="text" name="hello" />
<input type="submit" />
</form>
</body>
</html>

b.jsp:

<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<%request.setCharacterEncoding("UTF-8"); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>Insert title here</title>
</head>
<body>
${param.hello}<br/>
</body>
</html>
chan10 2010-11-14
  • 打赏
  • 举报
回复
模拟了一个,不在两个不同应用间跳转页面。
直接在同一个应用下,两个不同的JSP间,
用post方法,传递参数。

A.JSP的charset是utf-8。
如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

B.JSP的charset是gb2312。
如下:

<%@ page contentType="text/html; charset=gb2312" pageEncoding="gb2312" buffer="50k"%>


在B.jsp中,输出A.jsp传递过来的参数,
用以上的转码方式后还是乱码。
chan10 2010-11-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 magong 的回复:]
问2个问题
1. A中的页面是post过来的?
2. B中JSP的代码能不能全一点。

回答之前,可以拿
new String(utf8_name.getBytes("GB2312"), "UTF-8");
先试一下
[/Quote]
问题1:确实是Post传递的。
问题2:给部分吧,太多了。

//UTF-8编码传过来的参数
String utf8_city_name = request.getParameter("city_name");
//我认为的UTF-8到gb2312的转码方法,不行。
String city_name = new String(utf8_city_name.getBytes("UTF-8"), "gb2312");

第三:刚才你给的代码,我试了下,不行。而且,我也没理解你代码的意思,呵呵。
望指教。。。
magong 2010-11-14
  • 打赏
  • 举报
回复
问2个问题
1. A中的页面是post过来的?
2. B中JSP的代码能不能全一点。

回答之前,可以拿
new String(utf8_name.getBytes("GB2312"), "UTF-8");
先试一下
sytu_ckx 2010-11-14
  • 打赏
  • 举报
回复
JAVA编码确实比较难以掌握,总是碰到这样那样的乱码问题。

new String(utf8_name.getBytes("UTF-8"), "gb2312");

这也是我首先能想到的解决方案,但不行。
chan10 2010-11-11
  • 打赏
  • 举报
回复
everybody,人呢?
chan10 2010-11-11
  • 打赏
  • 举报
回复
我现在要做的,只是在应用A和应用B间,搭个接口JSP,将应用A的数据能够搞到应用B来。
chan10 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crazylaa 的回复:]

引用 3 楼 chan10 的回复:

引用 2 楼 crazylaa 的回复:

请求之前先用gb2312 encode一下。


这个是别的应用A传过来的值,我不能改变应用A的参数的。


那你为什么不把你的应用B改成UTF8编码?
[/Quote]

这个。。
应用B,我只是添加一块功能。
crazylaa 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chan10 的回复:]

引用 2 楼 crazylaa 的回复:

请求之前先用gb2312 encode一下。


这个是别的应用A传过来的值,我不能改变应用A的参数的。
[/Quote]

那你为什么不把你的应用B改成UTF8编码?
chan10 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 crazylaa 的回复:]

请求之前先用gb2312 encode一下。
[/Quote]

这个是别的应用A传过来的值,我不能改变应用A的参数的。
crazylaa 2010-11-11
  • 打赏
  • 举报
回复
请求之前先用gb2312 encode一下。
TearsStoneJava 2010-11-11
  • 打赏
  • 举报
回复
很久都没遇到了!

81,122

社区成员

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

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