(转)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 中文乱码 解决方案 大全的更多相关文章
- 转:jsp页面显示中文乱码解决方案
jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util.*&quo ...
- JSP中pageEncoding和charset区别,中文乱码解决方案(转载)
转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...
- JS传值中文乱码解决方案
JS传值中文乱码解决方案 一.相关知识 1,Java相关类: (1)java.net.URLDecoder类 HTML格式解码的实用工具类,有一个静态方法:public static String ...
- Java中文乱码解决方案
Java中文乱码解决方案 1.中文乱码解决方案,确保每个文件的默认编码是UTF-8 加入 URIEncoding="UTF-8" 代码中的设置 1>在se ...
- Eclipse中文乱码解决方案
Eclipse中文乱码解决方案 1)第一个设置:window>perferences>general>workspace>text file encoding 2)Jsp编码问 ...
- aspx页面,中文乱码解决方案
由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解 ...
- JSP页面的中文乱码
jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util. ...
- boost::xml——基本操作以及中文乱码解决方案 (续)
本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...
- 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...
随机推荐
- TS学习之泛型
可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据 不适用泛型的函数 function myfn(args: number): number { return args; } functi ...
- popup的简单应用举例
一.首先说一下自执行函数 1. 立即执行函数是什么?也就是匿名函数 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 2.popup的举例 点击,弹出一个新的窗口.保存完事,页面不刷新数据就返 ...
- DNS服务器的配置与管理
安装DNS服务器: 在"服务器管理器"-"角色"-"添加角色"中安装DNS服务器. 选择DNS服务器 点下一步安装,然后安装 固定服务器IP ...
- http相关理解
http://blog.csdn.net/generon/article/details/73920945
- 全文检索技术---solr
1 Solr介绍 1.1 什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr可以独立运行在Jetty.Tom ...
- C++经典题目:约瑟夫环问题
问题描述: 有n个人围成一圈,顺序排号.从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号. 分析: 首先由用户输入人数n,然后对这n个人进行编号[因为如果不编号的话 ...
- js中的cookie的设置获取和检查
设置cookiefunction setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime()+(exdays* ...
- cookie 、Session 和自定义分页
cookie cookie的由来 大家都知道Http协议是无状态的. 无状态的意思 是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系, 他不会受前面的请求响应情况直接影响, ...
- 为什么ps中CPU占用率会有超出%100的现象?
前面的关于ps中的%CPU的含义一文已经介绍了CPU占用率的含义,那么为什么有时会在ps的输出中看到CPU占用率超出%100的现象呢?我们知道在/proc目录下每个进程都会有一个以它的PID以名字的目 ...
- NULL 与 ""
char *str1 = NULL; //str1为空 char *str2 = ""; //str2为一个空字符串 NULL没有分配空间,""分配了空间.