firefox英文版:JSP HTML JAVASCRIPT 中文乱码 解决方案 大全

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 12:08:53
JSP的中文字符一直是各位初学者首先要解决的问题,下面进行了总结,也给出了解决办法。

C4.1 HTML中文编码转换

 在JSP文件中的静态文字显示乱码,则需要在之间增加中文设置代码,如清单附C-5所示。



 charset指定UTF-8字符集,当然也可以指定其他支持中文的编码,如GBK和GB2312。但是整个Web应用中一定要统一一种编码,本书推荐统一为UTF-8编码。

C4.2 JSP中文编码转换

  针对Tomcat下动态内容的中文乱码问题,有以下几个解决办法:

1. 在每个JSP文件的开头增加如下代码:

<%@ page language="java" contentType="text/html;charset=UTF-8"

  pageEncoding="UTF-8"%>

2. 设置编码参数:

request.setCharacterEncoding("UTF-8");

3. 使用编码过滤器。创建过滤器类SetCharacterEncoding,源码如清单附C-5所示。

清单附C-5 SetCharacterEncoding.java

package chapc;

 

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 SetCharacterEncoding implements Filter {

 

  @Override

  public void destroy() {  

  }

 

  @Override

  public void doFilter(ServletRequest request, ServletResponseresponse,

  FilterChain chain) throws IOException, ServletException{

  //设置字符编码

  request.setCharacterEncoding("UTF-8");

  //将控制传到下一个过滤器,如果没有过滤器则传到被调用者

  chain.doFilter(request, response);

  }

 

  @Override

  public void init(FilterConfig arg0) throws ServletException{

  }

}

 过滤器类还需要在web.xml中进行配置,设定要过滤哪些请求。过滤器在web.xml中的配置如清单附C-6所示。

清单附C-6 web.xml片段



 SetCharacterEncoding

 chapc.SetCharacterEncoding





 SetCharacterEncoding

 /*



 方法1、方法2和方法3经常需要使用,但它们一般不是独立使用,而是两两结合:1和2结合;1和3结合。附录A中的示例用到了1和2的结合。第四章Hibernate中的信息发布系统用到了1和3的结合。

4.修改Tomcat根目录中conf子目录下的server.xml文件,在中加入URIEncoding="UTF-8",如清单附C-7所示。

清单附C-7 server.xml片段


  port="8080"

  protocol="HTTP/1.1"

  redirectPort="8443"

  URIEncoding="UTF-8"/>

 该方法用来解决浏览器地址栏中的传递中文参数导致的乱码问题。浏览器地址栏传递参数(URL传参)一般表现为三种情况:form表单的get方法提交、超链接传参和response传参。

Ø form表单提交方法是get:

ion="registerProcess.jsp"method="get">

Ø 在超链接中传递中文参数:

超链接传递中文参数测试

5. 如果是调用response.sendRedirect传递中文参数产生的乱码,如:

response.sendRedirect("a.jsp?p=中文参数");

请修改成如:

<% //引入URLEncoder %>

<%@pageimport="java.net.URLEncoder"%>

<%

String p = "中文参数";

//对中文参数编码

p = URLEncoder.encode(p, "UTF-8");

response.sendRedirect("a.jsp?p=" + p);

%>

以解决乱码问题。

  如果方法4还不能解决某些超链接传参乱码问题,请使用方法5,如下:

<%@pageimport="java.net.URLEncoder"%>

<%

String p = "中文参数";

//对中文参数编码

p = URLEncoder.encode(p, "UTF-8");

%>

超链接传递中文参数测试

6. JavaScript中如果出现URL传参乱码问题,如:

open("a.jsp?p=中文参数");

请修改成:



cript中文参数"

  onclick="openWindow();">

以解决乱码问题。

JavaScript中的open方法打开浏览器窗口,传递参数,其本质也是URL传参。一般方法4就可以很好的解决中文参数乱码问题。如果方法4不生效,才考虑方法六。