Java、JSP、HTML、XML编写都要符合以下编码规则
2012-03-27 16:16
666 查看
1 所有的 .java|.jsp|.html|.xml 源文件均使用utf-8编码格式保存到系统磁盘。
如:在Eclipse中编辑文件,选中文件打开右键菜单选择属性,将文本文件编码设置为其他并选择UTF-8;也可以在
Eclipse——首选项——常规——内容类型中设置各种文件的缺省编码,这样以后所有的文本文件都使用统一编码。
2 在页面显示中文方面 .jsp文件中必须将文件编码格式pageEncoding、<@page>指令中contentType编码格式、<html>的<meta>标签编码格式都设置为utf-8。
如:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>中文问题</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
</html>
注意: META标签中的编码字符必须是"utf-8",如果不加中划线,则在ie下出现乱码情况,但ie的原文件查看却是中文!
3 把表单提交内容的字符集设为utf-8,在jsp、servlet或者filter中使用request.setCharacterEncoding("utf-8");
此行代码必须写在最前面,如果在此前进行任何request.getPragrmber()方法都会使字符转换失效!
4 页面超连接连接中带的汉字如中文目录"/系统/页面/首页.jsp",则在tomcat/conf/server.xml中的配置文件中加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正确内容。如:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />
注:如果使用get方法提交中文参数如"?name=张三",则必须使用encode编码转换为百分号表示来传递,如:
"?name=%E5%BC%A0%E4%B8%89",注意长度不要超过连接字符串最大长度。
编码方法:[JavaScript] encodeURIComponent("中文");
[Java&JSP] java.net.URLEncoder.encode("中文");
解码方法:[JavaScript] decodeURIComponent("%E4%B8%AD%E6%96%87");
[Java&JSP] java.net.URLDecoder.decode("%E4%B8%AD%E6%96%87");
5 连接MySQL数据库时修改mysql在windows\my.ini里default-character-set=utf-8,并将mysql里数据库和表也都设为utf8_unicode_ci。
6 数据库连结url:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8
注意,关键就在于此:此句中间是'&'不是'&'这是因为数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中才需要用&
7 使用AJAX方式提交请求时必须为XMLHttpRequest添加头声明
注意:如果已经存在已此名称命名的http头,则覆盖之。此方法必须在open方法后调用。
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;ch
arset=UTF-8");
Tomcat乱码问题:Get方法的处理
tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。
打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="UTF-8"。修改后的Connector设置为:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
; connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
* 注意修改后重新启动tomcat才能起作用
如:在Eclipse中编辑文件,选中文件打开右键菜单选择属性,将文本文件编码设置为其他并选择UTF-8;也可以在
Eclipse——首选项——常规——内容类型中设置各种文件的缺省编码,这样以后所有的文本文件都使用统一编码。
2 在页面显示中文方面 .jsp文件中必须将文件编码格式pageEncoding、<@page>指令中contentType编码格式、<html>的<meta>标签编码格式都设置为utf-8。
如:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>中文问题</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
</html>
注意: META标签中的编码字符必须是"utf-8",如果不加中划线,则在ie下出现乱码情况,但ie的原文件查看却是中文!
3 把表单提交内容的字符集设为utf-8,在jsp、servlet或者filter中使用request.setCharacterEncoding("utf-8");
此行代码必须写在最前面,如果在此前进行任何request.getPragrmber()方法都会使字符转换失效!
4 页面超连接连接中带的汉字如中文目录"/系统/页面/首页.jsp",则在tomcat/conf/server.xml中的配置文件中加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正确内容。如:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />
注:如果使用get方法提交中文参数如"?name=张三",则必须使用encode编码转换为百分号表示来传递,如:
"?name=%E5%BC%A0%E4%B8%89",注意长度不要超过连接字符串最大长度。
编码方法:[JavaScript] encodeURIComponent("中文");
[Java&JSP] java.net.URLEncoder.encode("中文");
解码方法:[JavaScript] decodeURIComponent("%E4%B8%AD%E6%96%87");
[Java&JSP] java.net.URLDecoder.decode("%E4%B8%AD%E6%96%87");
5 连接MySQL数据库时修改mysql在windows\my.ini里default-character-set=utf-8,并将mysql里数据库和表也都设为utf8_unicode_ci。
6 数据库连结url:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8
注意,关键就在于此:此句中间是'&'不是'&'这是因为数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中才需要用&
7 使用AJAX方式提交请求时必须为XMLHttpRequest添加头声明
注意:如果已经存在已此名称命名的http头,则覆盖之。此方法必须在open方法后调用。
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;ch
arset=UTF-8");
Tomcat乱码问题:Get方法的处理
tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。
打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="UTF-8"。修改后的Connector设置为:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
; connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
* 注意修改后重新启动tomcat才能起作用
相关文章推荐
- Java、JSP、HTML、XML编写都要符合以下编码规则!
- [JAVA]自动抽取用 HTML、XML 和 Java 编写的信息
- 关于html:css:js:xml:jsp:mysql:oracle:java注释的符号
- HTML/JavaScript/CSS/XML/PHP/JSP/Java 注释符号
- JAVA_SE基础——编码规范&代码编写规则
- Eclipse所有编码格式修改位置(项目、文件、css、sql、xml、jsp、html等)
- MyEclipse/Eclipse 修改jsp XML java HTML 每行代码长度限制
- 转!! 关于jsp编码设置 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- 配置Eclipse编写JAVA/JS/HTML/XML自动提示
- Eclipse下编写HTML/CSS/JS/JSP/Java代码时,自动提示代码
- 基于 Web 的数据挖掘--自动抽取用 HTML、XML 和 Java 编写的信息
- 配置Eclipse编写JAVA/JS/HTML/XML自动提示
- 1、 编写一个方法(名字自定,但要符合Java编码规范),方法内打印一字符串,并在main()方法内调用它。
- 基于 Web 的数据挖掘 (自动抽取用 HTML、XML 和 Java 编写的信息)
- 在Eclipse下编写HTML/CSS/JS/JSP/Java代码时,代码自动提示的相关设置
- Eclipse 修改jsp、XML、 java、 HTML 每行显示的字数
- 在Eclipse下编写HTML/CSS/JS/JSP/Java代码时,代码自动提示的相关设置
- 在JSP+JAVA+XML+HTML下写的WEB图片验证码
- Eclipse自动提示:java/html/jsp/js/xml文本,mybatis xml自动提示
- Eclipse中java、jsp以及xml编辑界面字体设置