乱码问题集合--关于jsp和servlet中的乱码问题,传参等
来源:互联网 发布:mac如何查看隐藏照片 编辑:程序博客网 时间:2024/05/12 14:14
在jsp和servlet的开发中,今天自己做的一个小例子中出现了中文乱码问题,用了许多方法,发现还是解决不了。最后我用了过滤器,才算终结。
此方法总结如下:在jsp页面中使用<%@ page pageEncoding="GB2312"%> ,这里的pageEncoding是GB2312,那么我们在过滤器web.xml中所使用的<param-value>GB2312</param-value>也为GB2312。总之一条:就是上述两者一致即可,比如同为UTF-8
我将过滤器的java代码和web.xml的配置写
//--------------java代码部分:CharsetFilter .java
package com;
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;
public class CharsetFilter implements Filter {
private String charset = "GB2312";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
request.setCharacterEncoding(charset);
arg2.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
charset = arg0.getInitParameter("charset");
System.out.println("字符过滤器开启,当前状态:"+charset);
}
}
//--------------web.xml部分(以下部分可以直接复制粘贴到WEB.XML下)
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>com.CharsetFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在struts中的中文乱码解决的一点体会:
一般出现中文乱码是下边几个方面:
1.页面显示中文乱码
2.传递参数中文乱码
3.国际化中文乱码
解决方法:整体上一个思想 :jsp页面建议编码方法统一(以前做的项目统一为UTF-8)
1.页面显示中文乱码解决方法:在页面加%@page pageEncoding="utf-8"
2.传递参数中文乱码:修改server.xml
<connector port=''8080" protocol="HTTP/1.1"
maxThreads='"150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
然后编写过滤器(Filter)过滤器的编写见文章上部分。
3.国际化中文乱码:a。用JDK的native2ascii工具对资源文件进行转换
b。使用ResourceBundle Editor插件
另外的一些乱码总结:
1、数据库乱码
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:
在数据库连接字符串中加入编码字符集
String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
并在页面中使用如下代码:
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
2、中文作为参数传递乱码
当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:
在参数传递时对参数编码,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)
然后在接收参数页面使用如下语句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
String title=new String(request.getParameter("bname").getBytes("iso-8859-1"),"GBK");
3、JSP页面乱码加这句?
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %>
4.AJAX向servlet传参:
假设
keyWord ='中文字符串';
url="play.jsp? keyWord ="+ keyWord
若按照上述的地址直接访问,则中文会变成乱码。必须使用encodeURI('风声')进行两次编码。如下:
url="play.jsp? keyWord ="+encodeURI(encodeURI( keyWord ))
服务器通过以下方式获取值:
keyWord =URLDecoder.decode( keyWord ,"utf-8");
- 乱码问题集合--关于jsp和servlet中的乱码问题,传参等
- jsp和Servlet中的乱码问题
- JSP/Servlet中的乱码问题
- JSP和Servlet乱码问题
- 关于servlet中的乱码问题
- 解析关于jsp和servlet中的乱码问题-JSP编程教程
- JSP+Servlet乱码问题
- jsp/servlet乱码问题
- 关于servlet 和 JSP 中文乱码的问题
- 关于java、jsp、servlet、ajax乱码问题
- 关于servlet/jsp的中文乱码问题
- JSP+servlet中的中文乱码问题
- servlet和jsp的乱码问题总结
- servlet中的乱码问题
- servlet中的乱码问题
- servlet中的乱码问题
- 关于jsp乱码问题
- 关于jsp乱码问题
- 一位工作10余年的电子工程师的忠告
- 论坛,引用功能
- 错误"存取器不是参数存取器"的解决方法
- 为什么要在性能测试中设置考虑时间
- 性能测试中考虑时间(Thinking Time)的计算方法
- 乱码问题集合--关于jsp和servlet中的乱码问题,传参等
- 内核启动后停止的一些错误总结
- Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定
- linq to sql取出随机记录/多表查询/将查询出的结果生成xml
- (Zz)三十分钟掌握STL
- (Zz)STL 简介,标准模板库(list)
- 分页与查询优化
- say hello
- JAVA设计模式