JSP HTML JAVASCRIPT 中文乱码 解决方案 大全 

JSP的中文字符一直是各位初学者首先要解决的问题,下面进行了总结,也给出了解决办法。
C4.1 HTML中文编码转换
 在JSP文件中的静态文字显示乱码,则需要在<head></head>之间增加中文设置代码,如清单附C-5所示。
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 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片段
<filter>
 <filter-name>SetCharacterEncoding</filter-name>
 <filter-class>chapc.SetCharacterEncoding</filter-class>
</filter>
<filter-mapping>
 <filter-name>SetCharacterEncoding</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>
 方法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片段
<Connector connectionTimeout="20000"
  port="8080"
  protocol="HTTP/1.1"
  redirectPort="8443"
  URIEncoding="UTF-8"/>
 该方法用来解决浏览器地址栏中的传递中文参数导致的乱码问题。浏览器地址栏传递参数(URL传参)一般表现为三种情况:form表单的get方法提交、超链接传参和response传参。
Ø form表单提交方法是get:
<form action="registerProcess.jsp"method="get">
Ø 在超链接中传递中文参数:
<ahref="a.jsp?p=中文参数">超链接传递中文参数测试</a>
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");
%>
<a href="a.jsp?p=<%=p%>">超链接传递中文参数测试</a>
6. JavaScript中如果出现URL传参乱码问题,如:
open("a.jsp?p=中文参数");
请修改成:
<script type="text/javascript">
function openWindow()
{
  var url = "a.jsp?p=中文参数"; 
  url = encodeURI(url);
  open(url);
}
</script>
<input type="button" value="JavaScript中文参数"
  onclick="openWindow();">
以解决乱码问题。
JavaScript中的open方法打开浏览器窗口,传递参数,其本质也是URL传参。一般方法4就可以很好的解决中文参数乱码问题。如果方法4不生效,才考虑方法六。 http://yxhcquedu.blog.163.com/blog/static/58705477200912115045374/

(转)JSP HTML JAVASCRIPT 中文乱码 解决方案 大全的更多相关文章

  1. 转:jsp页面显示中文乱码解决方案

    jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util.*&quo ...

  2. JSP中pageEncoding和charset区别,中文乱码解决方案(转载)

    转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...

  3. JS传值中文乱码解决方案

    JS传值中文乱码解决方案 一.相关知识 1,Java相关类: (1)java.net.URLDecoder类 HTML格式解码的实用工具类,有一个静态方法:public static  String ...

  4. Java中文乱码解决方案

    Java中文乱码解决方案   1.中文乱码解决方案,确保每个文件的默认编码是UTF-8         加入 URIEncoding="UTF-8" 代码中的设置 1>在se ...

  5. Eclipse中文乱码解决方案

    Eclipse中文乱码解决方案 1)第一个设置:window>perferences>general>workspace>text file encoding 2)Jsp编码问 ...

  6. aspx页面,中文乱码解决方案

    由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解 ...

  7. JSP页面的中文乱码

    jsp页面显示中文乱码:    jsp页面的编码方式有两个地方需要设置:   <%@ page language="java" import="java.util. ...

  8. boost::xml——基本操作以及中文乱码解决方案 (续)

    本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...

  9. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

    基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...

随机推荐

  1. 开源一个windows消息队列查看器

    windows消息简单易用,在异步消息发送场景的使用还是比较适合.为了方便查看队列中的消息和删除一些异常消息,开发了一个简单的小工具拿出来分享下. 源码地址:https://gitee.com/eab ...

  2. 修改sharepoint列表样式

    1.将sharepoint 的样式修改为阴影 2.用designer打开列表的AllItems.aspx文件,将下面的样式拷贝到里面     <style type="text/css ...

  3. [计数问题dp]子数列的个数

    http://www.51nod.com/tutorial/course.html#!courseId=15 解题关键:主要是一种思想 $dp[i] = dp[i - 1]*2$ 如果a[i]不在之前 ...

  4. mongodb操作数据集合

    1.创建数据集: a.创建不设置参数的默认数据集(默认数据集自带一个流水id,_id) db.createCollection("mycol") //创建默认集合 b.创建指定参数 ...

  5. Angular14 Visual Studio Code作为Angular开发工具常用插件安装、json-server安装与使用、angular/cli安装失败问题、emmet安装

    前提准备: 搭建好Angular开发环境 1 安装Visual Studio Code 教程简单,不会的去问度娘 2 安装Chrome浏览器 教程简单,不会的趣闻度娘 3 Visual Studio ...

  6. 10、RNA-seq for DE analysis training(Mapping to assign reads to genes)

    1.Goal of mapping 1)We want to assign reads to genes they were derived from 2)The result of the mapp ...

  7. ASP.NET jquery 获取服务器控件ID

    一般方法: jQuery("#txtUserName").val(); 如果页面加载了母版页或者自定义控件:该页面的ID有可能会被篡改(可能是因为避免控件ID冲突的机制),因此强烈 ...

  8. sql server 2008 r2安装

    选择功能(好像报错了-下次重装系统测试)

  9. Ajax.BeginForm 使用过程中遇到的问题

    一.Ajax.BeginForm设置的路由在浏览器中解析不到. 问题截图:在视图中设置"Counter/Index",在浏览器中显示的是"action='/'" ...

  10. nginx设置成开机自动启动服务

    1.nginx的安装目录 /usr/local/nginx 启动nginx cd /usr/local/nginx/sbin./nginx 更改配置重启nginxcd /usr/local/nginx ...