- 浏览: 457774 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xbyy123:
如果底层原理是这样的话,那么太谢谢了,瞬间明白了spring事 ...
Spring事务原理 -
欢乐逗佛:
盗取一时爽,全家火葬场
java工厂模式三种 -
ananeye:
不错不错不错不错
spring 加载过程 -
ananeye:
写的浅显易懂,不错,赞一个。
Spring事务原理 -
18289753290:
我们平时好像不是这么写的。直接就是service了,servi ...
Spring事务原理
第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特别设置,去系统默认的编码,中文windows为GBK编码。
从.java->.class过程是,先编写.java文件并按莫种编码方式保存,然后用javac方法编译此文件,注意如.java没按系统默认编码保存则要带encoding参数指明实际编码,否则出错,生成的.class文件存为系统默认编码。
从.jsp->.java->.class,先存为某种编码的.jsp文件,然后tomcat根据pageEncoding读取并转化为servlet存为系统默认编码,然后同上面.java->.class过程。
第二,IDE的encoding为对系统下文件打开的解码方式或保存的编码方式。特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,则eclipse会自动存为UTF-8方式,不管eclipse的encoding是什么,这也是eclipse的聪明之处。
第三,
pageEncoding="UTF-8"表示此文件的编码方式,必须与此文件存储方式一致(所以eclipse会首选根据它来存文件),tomcat根据这个来读此.jsp文件并编译为servlet。
contentType="text/html;charset=UTF-8"表示当浏览器得到此文件时以什么方式解码。例如:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>test</title>
</head>
<body>
我是个好人
</body>
</html>
会产生乱码,因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。
至此,页面应为:
<%@ 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>
第四,
request.setCharacterEncoding("UTF-8")是把提交内容的字符集设为UTF-8
response.setCharacterEncoding("UTF-8")可以把页面中的<%@ page contentType="text/html;charset=iso8859-1"%>换为charset=UTF-8,是给告诉浏览器我这个文件的编码方式。
第五,表单提交:无论何种表单提交都可以在后台的java文件中通过String des = new String(s.getBytes("iso8859-1"),"UTF-8");来转换成你想要的UTF-8编码方式。但如果每处都加词句太麻烦,故分post和get两种方式区分提交(tomcat5以后分开处理,之前处理方式一样,即都可以用request.setCharacterEncoding("UTF-8")方法处理,不过tomcat5以后get提交方法用此语句无效)。
1,post提交的数据:
程序加上org.springframework.web.filter.CharacterEncodingFilter过滤器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
因为规范要求浏览器提交数据都要用utf8编码,所以这里设置编码方式为UTF8.
特别注意:
a,这个过滤器只是简单的调用:request.setCharacterEncoding(this.encoding);
在这个语句之前不能调用任何的request.getParameter()方法,否则会设置tomcat的缺省字符集为"ISO-8859-1",并且使setCharacterEncoding的调用失效.所以在这个过滤器之前的过滤器中不能有对getParameter这类方法的调用,比较安全的做法就是把这个过滤器尽量靠前放.
b,在server.xml中不能加上<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
这个value也设置tomcat的缺省字符集为"ISO-8859-1",使setCharacterEncoding的调用失效.可能其他的value也有这个问题,我没有测试过.
如果要观察http请求参数,可以考虑用过滤器或者其他工具,例如ethereal(http://www.ethereal.com/)
2,get提交的数据:
两种情况:
a,如果从地址栏直接输入汉字,则一般编码为"GBK",需要用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出
b,如果是页面超连接连接中带的汉字,则编码根据页面编码的不同而不同,如果页面的
content="text/html; charset=utf-8",则在tomcat/conf/server.xml中的配置文件中:
<!-- 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" />
加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正确内容.
如果content="text/html; charset=GBK",需用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出,其他情况类似.
总结:
1,所有页面使用utf8编码,
2,服务器加上过滤器,
3,server.xml中不要使用
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
4,server.xml文件加上useBodyEncodingForURI="true"
这样应该可以搞定大多数前台的中文问题.至于地址栏输入中文,不支持也罢,一般的程序很少要求
从这里输入.
第六,连接数据库
1、mysql配置文件:
修改mysql在windows\my.ini里default-character-set=utf-8
2、mysql里数据库和表也都设为utf8_unicode_ci
3、数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
注意,关键就在于此:此句中间是'&'不是'&'这是因为数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中需要用&
对于Web容器来说,如果你不设置,默认是ISO8859-1
String des = new String(s.getBytes("iso8859-1"),"UTF-8");都可以使用这个 不论哪里,有乱码就是用
从.java->.class过程是,先编写.java文件并按莫种编码方式保存,然后用javac方法编译此文件,注意如.java没按系统默认编码保存则要带encoding参数指明实际编码,否则出错,生成的.class文件存为系统默认编码。
从.jsp->.java->.class,先存为某种编码的.jsp文件,然后tomcat根据pageEncoding读取并转化为servlet存为系统默认编码,然后同上面.java->.class过程。
第二,IDE的encoding为对系统下文件打开的解码方式或保存的编码方式。特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,则eclipse会自动存为UTF-8方式,不管eclipse的encoding是什么,这也是eclipse的聪明之处。
第三,
pageEncoding="UTF-8"表示此文件的编码方式,必须与此文件存储方式一致(所以eclipse会首选根据它来存文件),tomcat根据这个来读此.jsp文件并编译为servlet。
contentType="text/html;charset=UTF-8"表示当浏览器得到此文件时以什么方式解码。例如:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>test</title>
</head>
<body>
我是个好人
</body>
</html>
会产生乱码,因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。
至此,页面应为:
<%@ 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>
第四,
request.setCharacterEncoding("UTF-8")是把提交内容的字符集设为UTF-8
response.setCharacterEncoding("UTF-8")可以把页面中的<%@ page contentType="text/html;charset=iso8859-1"%>换为charset=UTF-8,是给告诉浏览器我这个文件的编码方式。
第五,表单提交:无论何种表单提交都可以在后台的java文件中通过String des = new String(s.getBytes("iso8859-1"),"UTF-8");来转换成你想要的UTF-8编码方式。但如果每处都加词句太麻烦,故分post和get两种方式区分提交(tomcat5以后分开处理,之前处理方式一样,即都可以用request.setCharacterEncoding("UTF-8")方法处理,不过tomcat5以后get提交方法用此语句无效)。
1,post提交的数据:
程序加上org.springframework.web.filter.CharacterEncodingFilter过滤器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
因为规范要求浏览器提交数据都要用utf8编码,所以这里设置编码方式为UTF8.
特别注意:
a,这个过滤器只是简单的调用:request.setCharacterEncoding(this.encoding);
在这个语句之前不能调用任何的request.getParameter()方法,否则会设置tomcat的缺省字符集为"ISO-8859-1",并且使setCharacterEncoding的调用失效.所以在这个过滤器之前的过滤器中不能有对getParameter这类方法的调用,比较安全的做法就是把这个过滤器尽量靠前放.
b,在server.xml中不能加上<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
这个value也设置tomcat的缺省字符集为"ISO-8859-1",使setCharacterEncoding的调用失效.可能其他的value也有这个问题,我没有测试过.
如果要观察http请求参数,可以考虑用过滤器或者其他工具,例如ethereal(http://www.ethereal.com/)
2,get提交的数据:
两种情况:
a,如果从地址栏直接输入汉字,则一般编码为"GBK",需要用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出
b,如果是页面超连接连接中带的汉字,则编码根据页面编码的不同而不同,如果页面的
content="text/html; charset=utf-8",则在tomcat/conf/server.xml中的配置文件中:
<!-- 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" />
加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正确内容.
如果content="text/html; charset=GBK",需用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出,其他情况类似.
总结:
1,所有页面使用utf8编码,
2,服务器加上过滤器,
3,server.xml中不要使用
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
4,server.xml文件加上useBodyEncodingForURI="true"
这样应该可以搞定大多数前台的中文问题.至于地址栏输入中文,不支持也罢,一般的程序很少要求
从这里输入.
第六,连接数据库
1、mysql配置文件:
修改mysql在windows\my.ini里default-character-set=utf-8
2、mysql里数据库和表也都设为utf8_unicode_ci
3、数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
注意,关键就在于此:此句中间是'&'不是'&'这是因为数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中需要用&
对于Web容器来说,如果你不设置,默认是ISO8859-1
String des = new String(s.getBytes("iso8859-1"),"UTF-8");都可以使用这个 不论哪里,有乱码就是用
发表评论
-
Tomcat 乱码设置
2012-11-13 12:17 1100第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特 ... -
Session原理机制
2012-10-16 09:58 912这个jsessionid是session的一个标识。 ... -
Post与Get区别
2012-10-15 11:40 846一、 在Form里面,可以 ... -
http协议
2012-10-15 11:01 1024HTTP协议是什么? 简单 ... -
servlet 介绍
2012-10-15 10:42 8481、Servlet简介 Java Servle ... -
tomcat精华配置-包括单点登录
2012-09-13 11:05 10601、配置系统管理(Admin Web application) ... -
tomcat的虚拟目录和热部署
2012-08-24 17:27 1179虚拟目录的设置 一种:把项目文件放到tomcat的安装路径的相 ... -
web.xml加载详解
2012-08-10 11:42 1070一 1、启动一个WEB项目的时候,WEB容器会去读取它的配 ... -
webservice-axis2安装
2012-07-19 11:11 9401.下载 Myeclipse Axis2 插件 http:/ ... -
tomcat虚拟目录配置
2012-07-18 16:44 1055Tomcat虚拟目录设置 重 ... -
Session cookie 原理
2011-07-28 14:50 1008我们来看个例子 ... -
Session 工作原理
2011-07-28 14:39 1265在java WEB开发中,session既是重点又是难点,很多 ... -
localhost和127.0.0.1的区别
2011-04-18 10:29 1193一. localhost也叫local ,正确的解释是:本地服 ... -
Tomcat的web应用程序部署方法
2011-04-12 21:00 1112一. 在tomcat中的conf目录中, 在server.xm ... -
Tomcat5 与Tomcat6的区别
2011-04-12 17:07 18981. 目录结构 tomcat5 有9个目录(bin, conf ... -
Tomcat启动一闪而过(控制台报错了)
2011-04-12 16:57 2140tomcat启动时如果执行startup.bat一闪而过 ... -
Tomcat 不通版本下数据源的配置
2011-04-12 16:18 1171一. Tomcat中数据源的配置,不同的版本方法略有不同 ... -
Tomcat启动流程与配置详解
2011-04-01 18:55 10631. Tomcat5.0 的目录结构 共有9个目录 bin, ... -
Tomcat 5目录结构解释介绍(转载)
2011-04-01 17:00 1041tomcat5下有9个目录,分别是bin,common,con ...
相关推荐
tomcat编码格式设置,通过设置编码,解决网页中数据传输乱码问题
tomcat7,已经设置utf-8编码,这个tomcat已经设置了utf-8的编码了,不需要再次设置
一般我们所装的linux服务器,是中文版的,所以系统环境的编码是gbk,然而我们项目的编码是UTF-8,这就必须在tomcat的server.xml文件中修改,在两个地方添加 URIEncoding="UTF-8",具体代码如下:
5,TOMCAT配置数据库 6,TOMCAT监控软件安装 7,TOMCAT环境变量 8,TOMCAT和JVM的配置 9,TOMCAT基于名称的虚拟主机 10,TOMCAT IP访问控制 11,TOMCAT访问日志记录 12,TOMCAT状态验证 13,TOMCAT设置SSL访问 14...
tomcat6设置内存(catalina.sh) 设置用户(tomcat-users.xml) 设置编码(server.xml)
5,TOMCAT配置数据库 6,TOMCAT监控软件安装 7,TOMCAT环境变量 8,TOMCAT和JVM的配置 9,TOMCAT基于名称的虚拟主机 10,TOMCAT IP访问控制 11,TOMCAT访问日志记录 12,TOMCAT状态验证 13,TOMCAT设置SSL访问 14...
5,TOMCAT配置数据库 6,TOMCAT监控软件安装 7,TOMCAT环境变量 8,TOMCAT和JVM的配置 9,TOMCAT基于名称的虚拟主机 10,TOMCAT IP访问控制 11,TOMCAT访问日志记录 12,TOMCAT状态验证 13,TOMCAT设置SSL访问 14...
apache-tomcat-8.0.33,针对有些项目的前端页面中,又有UTF-8,又有GBK,但是开发工具只配置了一种编码,导致其他页面出现部分乱码,并且更改该文件的编码也无效。而该工具可以自动解决UTF-8和GBK乱码的问题。 使用...
主要给大家介绍了关于tomcat服务器如何配置字符集为utf-8彻底解决中文乱码问题的相关资料,文中先对字符集进行了简单的介绍,然后给大家详细介绍了解决的方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习...
MyEclipse下的字符编码和外部编辑器和Tomcat配置.pdf
MyEclipse下的字符编码和外部编辑器和Tomcat配置.doc
1.首先要分清是tomcat日志编码,与idea的日志显示控制台编码 2.tomcat日志编码:cmd内 “cd /d tomcat根目录” “bin\catalina.bat run” 运行,”chcp65001″切换cmd为utf8,”chcp 936″切换cmd为gbk,确定tomcat...
MyEclipse下的字符编码和外部编辑器和Tomcat配置[整理].pdf
解决tomcat下中文乱码问题, 在tomcat_home\conf\server.xml 中的Connector元素中设置URIEncoding属性为合适的字符编码
apache-tomcat配置 for jsp安装配置* 设置开发环境的字符集编码和虚拟机内存:: 系统环境变量:: JAVA_OPTS -Xms512m -X
主要介绍了tomcat设置gzip压缩的原理及配置方法,需要的朋友可以参考下
tomcat 7.0.103添加了tomcat的默认编码,设置成为utf-8,解决了不同服务器之间tomact编码不同造成中文乱码的情况。
最新的中间件部署工具,tomcat8.0版本,已设置好编码的格式,能够处理日志乱码
pager-taglib是个非常好用的分页jar包,但是不爽的是使用中文参数查询时会出现乱码,哪怕设置了filter用utf-8编码,jsp也用utf-8编码,我修改了jar包中的一个参数,使用它应该可以解决乱码问题。