中文转码难题
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" %>
。。。。。。。 展开
然后用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" %>
。。。。。。。 展开
展开全部
你可以写个过滤器
也可以这样
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>
也可以这样
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>
展开全部
把代码贴出来吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最近在编程的时候,发现分别用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>
前者却是乱码。查了些资料,发现服务器对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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<%@page contentType="text/html;charset=GBK" %>
别的有UTF=8的地方都改成GBK试试
别的有UTF=8的地方都改成GBK试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
o
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询