中文转码难题

response.setContentType("text/xml;charset=UTF-8");然后用response生成一个XML文档,文档中的信息是中文的,当在j... response.setContentType("text/xml;charset=UTF-8");
然后用response生成一个XML文档,文档中的信息是中文的,
当在jsp中显示该信息时,出现乱码。
我把response分别设置成了UTF-8,gb2312,GBK编码类型,依旧
是乱码。哪位高手指点我下,拜谢。
我JSP页面的编码类型也修改成和response一样的了,还是不行

代码如下:
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
String message="用户名已存在或格式错误";

if(passed){
message="用户名可用";
}
out.println("<response>");
out.println("<passed>"+Boolean.toString(passed)+"</passed>");
out.println("<message>"+message+"</message>");
out.println("</response>");
out.close();

jsp中的部分代码如下:
<%@page contentType="text/html;charset=UTF-8" %>

。。。。。。。
展开
 我来答
程序那点事
2009-04-05 · TA获得超过6140个赞
知道大有可为答主
回答量:3253
采纳率:59%
帮助的人:1342万
展开全部
你可以写个过滤器
也可以这样
String title = new String(request.getParameter("title").getBytes("ISO8859-1"), "GBK");
接收参数时作这样的转换

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;
import javax.servlet.UnavailableException;

/**
* Example filter that sets the character encoding to be used in parsing the
* incoming request
*/
public class SetCharacterEncodingFilter implements Filter {

/**
* Take this filter out of service.
*/
public void destroy() {
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {

request.setCharacterEncoding("GBK");

// 传递控制到下一个过滤器
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {
}
}
配置web.xml
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
黑Q鸟人
2009-04-05 · TA获得超过197个赞
知道答主
回答量:328
采纳率:0%
帮助的人:117万
展开全部
把代码贴出来吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
菠萝小子
2009-04-05 · TA获得超过2365个赞
知道小有建树答主
回答量:1912
采纳率:50%
帮助的人:833万
展开全部
最近在编程的时候,发现分别用get和post发送中文数据,后者可以得到正确结果,
前者却是乱码。查了些资料,发现服务器对post和get请求的数据的编码处理是不一样的。
现把tomcat下get和url直接发送请求乱码的解决办法列举如下:
方法1.
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK")
方法2.
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK" />

或者将useBodyEncodingForURI参数设置为true,这个据说是可以,但我测试的时候没有成功,
估计是哪一块设置还有问题,好烦,算了,有一种方法能用就行了。
2)重启tomcat,一切OK。

另外,如果用url发送请求,请求的数据中含有%号,resin得到的是乱码,tomcat得

到的是空值,我的解决办法是把%改成%25,应该还有其他办法,欢迎补充。

这种 :

String keyword = new String(request.getParameter("keyword").getBytes("iso8859-1")) ;

在web.xml中添加:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.SetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吉生绚忆大唐2450
2009-04-05 · 超过20用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:57.6万
展开全部
<%@page contentType="text/html;charset=GBK" %>

别的有UTF=8的地方都改成GBK试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户64730
2009-04-05 · TA获得超过192个赞
知道答主
回答量:627
采纳率:0%
帮助的人:242万
展开全部
o
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式