我们需要设置tomcat 8容器字符编码的请求和响应ISO-8859-1的UTF-8 intead,同样的设置我们尝试设置如下所述,https://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q1
但这需要创建过滤器等。有没有任何优雅的方式我们可以更改一些配置集,使其适用于容器级别
Tomcat 8+捆绑了一个过滤器来设置字符编码。
这在Tomcat 8 Container Provided Filters中有描述。
需要在web.xml文件中配置此过滤器以及一些其他更改,如下所示。
以下配置适用于
字符编码过滤器
网嗯
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
JSP页面编码
网嗯
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
JSP页面创建
只能使用标准英文字符,即没有重音字符等
数据库字符类型
表列的所有字符类型都应该是Unicode类型,例如NCHAR,NVARCHAR和NTEXT。
数据库连接字符串
对于具有排序规则“Latin1_General_CI_AS”的SQL Server 2008 R2数据库,似乎不需要将连接字符串设置为使用UTF-8。
的context.xml
<Resource name="jdbc/gtraxDS" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://ctceu-wgc-dv026:45666; databaseName=gtraxd2"
username="myAppUsername"
password="myAppPa55word"/>
严格的Servlet合规性
不要设置'严格的servlet遵从性'。
The default value of URIEncoding attribute for HTTP and AJP connectors has been changed from
"ISO-8859-1" to be "UTF-8" (if "strict servlet compliance" mode is off, which is the default)
文件系统字符编码
迭代并显示以下内容:
System.getProperties();
得到:
...
file.encoding Cp1252
file.encoding.pkg sun.io
...
似乎不需要更改文件编码
字符编码过滤器应该是访问请求参数的过滤器链中的第一个过滤器。
对我来说,设置tomcat的web.inf(/tomcat/8.0.33/conf/web.inf)就足够了,特别是标题。
代替 :
<?xml version="1.0" encoding="ISO-8859-1"?>
我正在使用:
<?xml version="1.0" encoding="UTF-8"?>
我对控制器返回的HTML页面也有同样的问题。在IntelliJ IDEA 2018中运行时没有问题,但在构建war文件并在tomcat中部署之后,HTML页面的编码问题出现在项目静态文件夹中。经过一番搜索后,我找到了this救命答案,并在C:\ apache-tomcat \ conf目录下的tomcat web.xml文件中添加了以下标签,所有内容都像魅力一样。
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>