转自 百度空间A Man 的日志
Servlet 编码问题Servlet 2010-07-31 16:06:43 阅读45 评论0 字号:大中小 订阅
一、静态中文展示
servlet做页面
response.setContentType("text/html;charset=utf-8/gbk/gb2312");
二、动态传递中文参数:可以将中文参数进行单的类型转换(注意:字符编码与参数的元字符编码和参数的目标字符编码要一致)
*get传参:直接修改tomcat服务器中连接期的默认字符编码为utf-8/gbk/gb2312(在servlet.xml文件,连接器<Connector>中增加属性 URIEncoding="utf-8")
*post传参
在servlet获取参数之前调用如下方法,对所有的封装到requset中的参数的字符编码同义转换 request.setCharacterEncoding("utf-8/gbk/gb2312");(关键的代码)
假如页面很多,这种方式就不实用
通过过滤器servlet来调用以上方法,对用户发出请求时的以post方式的传递的中文参数进行统一的字符编码转换
过滤器属于servlet的一种,其加载的优先级高于所有的控制器servlet。其在web容器中的注册信息必须放在所有的控制器servlet注册信息之前。
操作:
1.在配置文件里面
<!-- 注册过滤器 -->
<filter>
<filter-name>myfilter</filter-name>
<filter-class>com.qulx.filter.MyFilter</filter-class>
<!-- 设置过滤器使用的字符编码 -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<!-- 设置过滤行为是否调用 -->
<init-param>
<param-name>enable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- 设置过滤器映射名 -->
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意如果只想对针对其中的某些参数进行字符编码的转换,可以修改虚拟目录的名称,修改<url-pattern>/虚拟目录/*</url-pattern>
可以把想过滤的内容放在一个虚拟子目录中。
2.在过滤器中写入,需要实现Filter接口
public class MyFilter implements Filter {
private String encoding ="";
private boolean enable = false;
public void init(FilterConfig arg0) throws ServletException {
this.encoding = arg0.getInitParameter("encoding");
String able = arg0.getInitParameter("enable");
if(able.equals("true")){
this.enable = true;
}
}
public void destroy() {
// TODO Auto-generated method stub
}
//执行过滤行为的方法
//FilterChain 负责释放控制权
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//将request中封装的所有的中文参数统一进行字符编码转换
if(this.enable){
request.setCharacterEncoding(this.encoding);
}
//释放控制权
chain.doFilter(request, response);
}
}
*对post传参和get传参,都能进行字符编码转换,请求的参数.getBytes("iso-8859-1","")
eg :String name = request.getParameter("name");
name = new String (name.getBytes("gbk"));
分享到:
相关推荐
在Java EE的Web开发中,Servlet编码问题是一个常见的困扰,特别是在处理中文字符时。这个问题主要涉及到请求参数的编码、响应内容的编码以及文件上传等环节。以下是对这一主题的详细解释。 1. **请求参数编码**:当...
在 Web 开发中,使用 AJAX 通过 URL 传参数给 Servlet 时,经常会遇到乱码问题,即使使用了统一的字符编码也没用。下面我们来探讨这个问题的解决方案。 问题描述 当我们使用 AJAX 通过 URL 传参数给 Servlet 时,...
通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...
知识点:Servlet输出JS乱码问题解析与...总之,处理Servlet输出JS乱码问题的关键在于正确设置字符编码,保证数据在传输过程中的编码一致性。这不仅涉及到Servlet内部的编码设置,还涉及到整个Web应用的编码管理策略。
总结来说,解决Servlet中的中文乱码问题,关键在于明确字符编码的设定,确保请求和响应的编码一致。在开发过程中,应避免依赖系统或浏览器的默认编码,而是明确指定使用UTF-8或其他兼容性好的编码格式。同时,理解...
### Tomcat与Servlet乱码问题解析及解决方案 #### 一、引言 在Web开发过程中,经常遇到的一个问题就是字符编码的问题,特别是在处理中文字符时,如果编码设置不当,很容易出现乱码的情况。本文主要围绕Tomcat服务器...
10. **调试技巧**:在排查乱码问题时,可以使用`System.out.println`或日志记录工具打印出原始的非编码字符串,以便查看乱码是否在传输过程中就已经产生。 通过以上步骤,你应该能够有效地解决Servlet页面的乱码...
Java、JSP 和 Servlet 乱码问题是一个常见的开发难题,主要涉及到字符编码的不一致,导致数据在不同阶段出现解码错误。以下是一些解决乱码问题的关键知识点: 1. **页面编码设置**: - 静态HTML页面可以通过`...
这是servlet出现乱码,以及乱码出现时的解决办法。
### servlet输出中文乱码问题详解 #### 一、问题背景 在进行Web开发时,特别是使用Java Servlet处理HTTP请求的过程中,经常会遇到输出中文字符时出现乱码的问题。这不仅会影响用户体验,还会对项目的正常运行造成...
### Servlet过滤器解决乱码问题 在Web应用开发过程中,字符编码问题经常出现,尤其是在处理中文等多字节字符时。如果不正确地设置字符编码,可能会导致页面显示乱码。本文将详细介绍如何通过Servlet过滤器来解决这...
特别是在处理非英文字符时,如中文字符,很容易遇到编码不匹配导致的乱码问题。本文主要针对JSP (Java Server Pages) 和 Servlet 中汉字编码问题的解决方法进行详细阐述。 #### 二、字符编码基础知识 1. **字符集*...
本文将深入探讨JSP和Servlet中文乱码问题的根源、解决方案以及预防策略。 ### JSP和Servlet中的中文乱码问题根源 中文乱码问题通常源于字符编码不一致或配置错误。在Web应用中,数据流经多个环节,包括客户端...
总结一下,Servlet编码过滤器的作用是统一处理请求和响应的编码,防止因为编码不一致导致的乱码问题。实现编码过滤器需要实现`Filter`接口,并在`web.xml`中配置。在实际开发中,我们可以根据需求自定义过滤器的逻辑...
解决servlet中文乱码问题1的描述是指,如何通过正确的配置和编码设置来解决servlet中文乱码问题。这个问题的解决方案包括了在页面输入中文时,请求页面后不出现乱码的方法,以及获取中文属性不出现乱码的方法。 ...
jsp 传参 servlet 接收中文乱码...在解决 jsp 传参 servlet 接收中文乱码问题需要我们了解 HTTP 请求和响应的编码机制,并且掌握正确的编码转换方法。只有这样,我们才能正确地传递中文字符,并且避免乱码问题的出现。
然而,处理中文字符时,Servlet经常会出现乱码问题,这通常是由于字符编码设置不正确导致的。本篇文章将深入探讨如何解决Servlet中的中文乱码问题,以及如何在GBK、UTF-8和ISO-8859-1之间做出合理的选择。 首先,...
然而,在处理中文字符时,由于编码不一致或者处理不当,可能会出现中文乱码问题。这个问题困扰了很多开发者,但通过了解编码原理和采用正确的方法,可以有效地解决。下面将详细阐述servlet和jsp中文乱码的处理方式。...
乱码问题在Web开发中是一个常见的挑战。Servlet过滤器可以有效地解决这个问题。例如,我们可以通过在过滤器中设置请求和响应的编码方式来确保正确的字符编码。以下是一个简单的例子: ```java public void doFilter...