windows->Preferences->general->Workspace

往后新建立工程其属性对话框中的Text file encoding即为UTF-8,这个也是安装完Eclipse之后该当急速做的第一件事,但是这种修正只对当前的workspace有效,如果新建或者切换到一个新的workspace下,还是得做同样的步骤。

windows->Preferences->general->Content Types

字符集jsp编码格式Java字符编码设置总结 PHP

点开Text,选择Java Source File,不才面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。
其他java运用开拓干系的文件如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开拓中确需改变编码格式则可以在此指定。

2、Java源文件编码格式指定

先中文件,右键属性打开

指定文件编码格式为UTF-8,浸染:

(1)、当我们用编辑器编写java源文件,程序文件在保存时会采取操作系统默认的编码格式(一样平常我们中文的操作系统采取的是GBK编码格式)形成一个.java文件。
java源文件是采取操作系统默认支持的file.encoding编码格式保存的。
通过System.out.println(System.getProperty(\"大众file.encoding\"大众)); 可以查看系统的file.encoding参数值。

(2)、JDK在编译的时候,如果没有用-encoding参数指定java源程序的编码格式,则javac首先得到操作系统默认采取的编码格式(file.encoding),也即在编译java程序时,若不指定源程序文件的编码格式,JDK首先得到操作系统默认的编码格式,xp是GBK,然后jdk就把java源程序从该编码格式转化为java内部的unicode格式放入内存中。
然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是unicode编码的,它暂放在内存中,紧接着,JDK将此以unicode编码的编译后的class文件保存到操作系统中形成.class文件。
终极得到的.class文件是内容以unicode编码格式保存的类文件,它内部包含源程序中的中笔墨符串,只不过此时它己经由安装系统编码格式转化为unicode格式了。

也便是说,指定源文件编码格式将见告编译器从何种编码格式转为UNICODE,以天生终极的.class,便是说我们常见的.class文件中的内容无论是中笔墨符还是英笔墨符,他们都已经转换为Unicode编码格式了。

3、javac -encoding

见上段描述,如果设置了文件编码格式,就不须要指定了,在windows与linux下编译都不会有问题。

4、JSP编码格式指定

<%@ page language=\公众java\"大众 contentType=\"大众text/html; charset=UTF-8\公众 pageEncoding=\"大众UTF-8\"大众%>

我们知道JSP页面是须要转换为servlet的,在转换过程中肯定是要进行编码的,在上面代码中有两个地方存在编码:pageEncoding、contentType的charset。
个中pageEncoding是jsp文件本身的编码,而contentType的charset是指做事器发送给客户端时的内容编码。

pageEncoding

JVM将JSP编译为.java文件,JVM首先会获取pageEncoding的值,如果该值存在则采取它设定的编码来编译,否则则采取file.encoding编码来编译。

charset

后台经由处理后将结果运送到客户端,如果设置了charset则浏览器就会利用指定的编码格式进行解码,否则采取默认的ISO-8859-1编码格式进行解码处理。

5、Tomcat server.xml中URIEncoding

提交要求到做事器,紧张有GET跟POST两种办法,利用request.setCharacterEncoding(\公众UTF-8\公众);来设置Tomcat吸收要求的编码格式,只对POST办法提交的数据有效,对GET办法提交的数据无效!

要设置GET的编码,可以修正server.xml文件中的配置:

<Connector port=\公众8080\公众 protocol=\"大众HTTP/1.1\"大众

connectionTimeout=\"大众20000\"大众

redirectPort=\"大众8443\"大众 URIEncoding=\公众UTF-8\"大众 />

如果没有设置则会利用默认的ISO-8859-1来解码,如果我们在页面将编码设置为UTF-8,而URIEncoding设置的不是或者没有设置,那么做事器进行解码时就会产生乱码。
这个时候我们一样平常可以通过new String(request.getParameter(\"大众name\"大众).getBytes(\公众iso-8859-1\"大众),\"大众utf-8\"大众) 的形式来获取精确数据。

6、spring过滤器中的编码设置

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

源代码中有以下两行代码:

request.setCharacterEncoding(this.encoding); //用场:设置客户端post过来的数据的编码格式。

response.setCharacterEncoding(this.encoding); //用场:设置做事器将数据发送到客户端时的编码格式,这行代码要在设置forceEncoding为true时才起浸染。

7、java -Dfile.encoding

设置启动JVM进程时系统属性 file.encoding 为 UTF-8,在运行java程序时JVM首先会把保存在操作系统中的class文件读入到内存中,这个时候内存中class文件编码格式为Unicode,然后JVM运行它。
如果须要用户输入信息,则会采取file.encoding编码格式对用户输入的信息进行编码同时转换为Unicode编码格式保存到内存中。
程序运行后,将产生的结果再转化为file.encoding格式返回给操作系统并输出到界面去,如果是servlet以GET或POST的形式来吸收数据,则拜会第5段的解释。

大略的说:源文件编码的格式与java进程的file.encoding编码格式一样,那么在掌握台的输入与输出则不会乱码,对付通过get或post吸收的数据则通过须要过滤器统一设置编码格式,见第5、6段的解释。

我们常见的websphere、weblogic在linux下运行时,常日须要为java进程设置-Dfile.encoding参数便是这个缘故原由。

8、JDBC编码

java程序与数据库的连接都是通过JDBC驱动程序来连接的,而JDBC驱动程序默认的是ISO-8859-1编码格式的,也便是说我们通过java程序向数据库通报数据时,JDBC首先会将Unicode编码格式的数据转换为ISO-8859-1的编码格式,然后在存储在数据库中,即在数据库保存数据时,默认格式为ISO-8859-1,如果数据库做事设定了字符集则会按设定的格式转化,或者在配置jdbc连接串时就须要指定连接的字符编码格式。

以是统一都设置为UTF-8是个好方案。