jsp各种乱码问题解决方案
来源:互联网 发布:ftp端口是多少 编辑:程序博客网 时间:2024/05/22 04:25
类型1、浏览器打开一个jsp页面时,页面中的中文出现乱码
有很多IDE默认的jsp文件是iso-8859-1编码,它对中文不能识别,用<%@ pageEncoding="utf-8"%>或者"gb2312"、"gbk"都可解决这个问题,至于他们具体有什么区别,这里就不多讲了,搜百度就可以了,这里只讲方法。
类型2、浏览器调用一个servlet时,页面中出现中文乱码
比如该servlet的一个方法是:
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>this is a servlet</title></head>");
out.println("<body>");
out.println("我不帅");
out.println("</body>");
out.println("<html>");
out.close();
}
当浏览器调用该servlet时,"我不帅"出现乱码,这时把response.setContentType("test/html")改成response.setContentType("text/html;charset=gb2312")即可解决。
类型3、对于post方法提交到另一个jsp或servlet处理并显示提交内容信息,出现文乱码
比如有个jsp文件my.jsp核心代码如下:
<body>
<form method="post" action="display.jsp">
<input type="text" name="username">
<input type="submit" value="提交">
</form>
</body>
display.jsp的核心代码如下:
<body>
The user'name is:<%=request.getParameter("username")>
</body>
用浏览器打开my.jsp,在文本框中输入"锟哥哥",点击提交按钮,把它交给display.jsp处理,这时"锟哥哥"就乱码了。解决方法是在display.jsp代码第一行加一句:<%request.setCharacterEncoding("gb2312"); %>
一般像request请求类的中文乱码问题都用过滤器来解决,也就是用一个servlet来过滤提交时出现的乱码问题。比如这个过滤器为EncodingFilter.java,代码如下:
package ...自拟
import ...自拟
public class EncodingFilter implements Filter
{
private FilterConfig config;
private String encoding="ISO8859-1";
public void init(FilterConfig config) throws ServletException
{
this.config=config;
String s=config.getInitParameter("encoding");
if(s!=null)
{
encoding=s;
}
}
public void doFilter(ServletRequest request,ServletResponse response,FitlerChain chain) throws IOException,ServletException
{
request.setCharacterEncoding(encoding);
chain.doFilter(request,response);
}
public void destroy()
{
config=null;
}
}
该过滤器对应的web.xml配置如下:
<filter>
<fitler-name>EncodingFilter</filter-name>
<filter-class>...自拟,为该类在工程名中的路径所在,比如package1.package2.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name> //与代码中config.getInitParameter("encoding")中的encoding对应
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<fitler-name>EncodingFilter</fitler-name>
<url-pattern>/*</url-pattern> //表示凡是在该项目下只要有request的中文提交都会把提交信息过滤
</filter-mapping>
类型4、对于get提交表单即改写uri时出现的乱码问题
前面提到了对于post方法的处理,但对于get方法,解决方案不能通过修改jsp或者servlet解决,这是只能修改服务器配置文件了。下面说一下这种get方法的中文乱码的表现形式:
与前面那个例子相似,比如有个jsp文件my.jsp核心代码如下:
<body>
<form method="get" action="display.jsp">
<input type="text" name="username">
<input type="submit" value="提交">
</form>
</body>
display.jsp的核心代码如下:
<body>
The user'name is:<%=request.getParameter("username")>
</body>
当我们通过浏览器的域名地址输入:http://localhost:8080/工程名/display.jsp?username=锟哥哥。此时display.jsp页面中显示的"锟哥哥"为乱码。
当我们通过表单以get方法提交时,若在my.jsp中输入"锟哥哥",提交给display.jsp后,页面显示的"锟哥哥"为乱码,而域名地址显示的"锟哥哥"也为乱码。
若遇到get类型的乱码问题时,不能像处理post类型那样,比如在display.jsp代码第一行加入<%request.setCharacterEncoding("gb2312"); %>,这是没有作用的。此时,得修改%tomcat_home%/conf/server.xml的配置信息,在<Connector port="8080" protocol="HTTP/1.1" maxThreads="100" connectionTimeout="10000" redirectPort="8443" />中加入一条URIEncoding="gb2312",然后重启tomcat,这样get类型的乱码问题就解决了。
- jsp各种乱码问题解决方案
- JSP中的各种中文乱码问题解决方案
- jsp乱码问题解决方案
- jsp乱码问题解决方案
- vim各种乱码问题解决方案
- JSP中文乱码问题解决方案
- java jsp乱码问题解决方案
- JSP中文乱码问题解决方案
- jsp,struts中文乱码问题解决方案.
- Java jsp sevlet中文乱码问题解决方案
- js导入jsp页面乱码问题解决方案
- JSP取值到mysql乱码问题解决方案
- jsp include中文乱码问题解决方案
- 解决jsp乱码的各种方案
- JSP向MYSQL读写中文乱码问题解决方案
- JSP读出MYSQL数据库时的乱码问题解决方案
- jsp向action传参乱码问题解决方案
- jsp表单get方法中文参数传递乱码问题解决方案
- 获得jpg文件的实际尺寸
- Java基础:Java Date数据类型
- 连接WEB数据库的ADO性能提高技巧
- 用ASP文件实现CPU的使用率始终保持100%
- 实现ASP文件在线发邮件
- jsp各种乱码问题解决方案
- 网页背景设计全攻略
- PKU 1186 方程的解数
- 网页设计配色应用——色调
- 细谈网页优化和网站优化的几种方式
- 网页设计中实用的制作技巧十三个
- 网页常见可用性错误——布局外观错误
- RSA公钥密码算法的原理及实现(一)
- 获得网页控件方法大全