黑马程序员技术交流社区
标题:
jsp乱码问题
[打印本页]
作者:
Jomes
时间:
2013-6-8 12:36
标题:
jsp乱码问题
jsp页面获取中文
String name = request.getAtrriubt("userName");
name = new String(name.getByte("ISO-8859-1"),"gb2312")
还有别的简便方法解决乱码吗
作者:
张歆明
时间:
2013-6-8 12:54
我知道的解决办法
<1>.适用于任何提交方式的乱码:
new String(s.getBytes("不识别中文的字符编码"), "识别中文的字符编码"); 这就是你提到的方法
但是 这种方式只能进行局部解决问题 那个字符串可能出现乱码的时候 就这么重构一下即可 不是一种全局的方式
<2>.如果是post请求出现乱码:response.setCharacterEncoding("识别中文的字符编码");
<3>.如果是get请求出现的乱码:如果你的服务器是Tomcat的话 可以找到server.xml标签 修改里面的Connector标签 将其URIEncoding设置为UTF-8
<4>.还有一种比较麻烦的方式 就是在web.xml中配置过滤器来处理字符编码
举例子:
package com.filter;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 对页面和所有的Servlet进行页面的中文转码
*
*/
public class EncodingFilter implements Filter {
private String encoding = null;
private FilterConfig config = null;
public void destroy() {
// 销毁
this.config = null;
this.encoding = null;
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// 过滤器
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
// 设置整个项目的编码方式
// 客户端的编码方式
request.setCharacterEncoding(this.encoding);
// 服务器的编码方式
response.setContentType("text/html;charset=" + this.encoding);
// 执行过滤
arg2.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
// 初始化
this.config = arg0;
// 从配置文件中获取编码方式
this.encoding = this.config.getInitParameter("en");
}
}
复制代码
配置相应的web.xml:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.filter.EncodingFilter</filter-class>
<init-param>
<param-name>en</param-name>
<param-value>GBK</param-value><!--这个地方可以改成别的识别中文的字符编码-->
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern><!--所有访问到这个Web工程的URL请求都要先走这个过滤器 而这个过滤器本身就设置的是字符编码 这样 每一个请求 都在真正处理之前 就做了编码的设置 -->
</filter-mapping>
复制代码
作者:
杨增坤
时间:
2013-6-11 00:38
<%
request.setCharacterEncoding("utf-8");//接受参数的编码方式
response.setCharacterEncoding("utf-8");//传送和显示的编码方式
%>
用这个可以解决乱码方式,编码方式也可以是gbk 和gb2312都是解决中文的编码方式。!
希望能够解决你的问题!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2