Web编码规范中文乱码解决方案

Web编码规范

IDEeclipse 4.2.2

项目构建工具:maven 3

框架:Srping MVC

统一编码:UTF-8

1 文本编码

1.1 Eclipse编码

Eclipse的默认编码方式与计算机环境有关,在window下默认的为GBK,我们这里统一改成UTF-8,这里有两种方式来进行一种是整个eclipse的所有文本编码,另外一种是单项目的。

1、eclipse编码格式设置:windows->preferences->General->WorkSpace

 

2、项目编码格式设置:项目右击->properties->resources

 

1.2 JSP编码

在eclipse中新建jsp文件时,会自动帮你设置好编码,不过默认的情况下会设置成ISO-8859-1这不是我们想要的,所以设置成UTF-8。

Windows->preferences-web->jsp File

 

       <%@ page language="java" pageEncoding="utf-8"%>就是JSP翻译成servlet时所指定的编码方式。

1.3 Maven编码

1、maven编译文件的编码设置

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

2、maven资源文件编码设置

    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
        </plugin>

    如果不设置的话会用本地操作系统的编码来编译文件。这里主要设置就是<encoding>这个节点

2 浏览器和服务器间传输数据的编码设置

2.1 浏览器端编码

1、一般有服务端告诉浏览端该如何解码。如果JSP作为视图的话,用下面的方式设置。

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

2、浏览器在接收或发送数据时,会对URL和参数会进行URL解码(接收)或编码(发送)

  <%@ page language="java" contentType="text/html; charset=utf-8" %>

2.2 服务器端编码

浏览器默认使用ISO-8859-1进行编码数据,然后将数据传输到服务器,因此我们默认只需要将浏览器发送过来的数据转换为我们需要的编码即可。

1、过滤器编码设置web.xml

    <filter>
        <filter-name>SpringCharacterEncodingFilter</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>
    </filter>

2、GET编码方式解决

TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决。理论上,这样设置好之后,filter也可以不用配置。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

3、eclipse中server编码设置

在开发项目的过程中,我们一般会直接用eclipse里面的tomcat,这样也方便调试。这个时候,我们也需要对eclipse里面的tomcat进行配置。如果,你新建一个server时,就会多一个Servers的项目直接在里面配置就好了。

PS:现在还只研究了一部分,肯定还是问题多多,希望后面的过程中不断补充。大家有什么地方需要规范的,也希望告诉我。 

原文地址:https://www.cnblogs.com/wukenaihe/p/3066593.html