gpt4 book ai didi

java - 使 Web 应用程序使用 UTF-8

转载 作者:行者123 更新时间:2023-11-30 09:32:00 26 4
gpt4 key购买 nike

我们在使用 Tomcat 7 的生产服务器上,无论出于何种原因,管理员都没有设置 CATALINA_OPTS="-Dfile.encoding=UTF-8"我们的解决方法。

这意味着现在部署 WAR 文件时,Tomcat 返回乱码而不是 Unicode 对应字符。

我们也将此包含在我们的 web.xml 中,无济于事:

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

<filter-mapping>
<filter-name>encoder</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

我们如何在不派人闯入服务器机房并修改配置的情况下进行管理?

最佳答案

首先,了解-Dfile.encoding=UTF-8 的确切作用很重要。这是一个特定于 Sun/Oracle JVM 的设置(因此不一定适用于所有其他 JVM!),它基本上指示 JVM 使用给定编码而不是平台默认一个。因此,设置它只会解决任何可能的 Mojibake由在 Java 类/变量名中使用“特殊字符”或在 Java 类中硬编码 String 值引起的问题(是的,你没看错:只有 Java 类,没有其他文件,因此绝对不是属性文件或 JSF XHTML 文件等)。

老实说,我很难想象这是解决您的具体问题的正确方法。为什么要在 Java 类中直接使用特殊字符?类/变量名应该是全英文的,本地化的文本应该放在资源包文件中。每个自尊的 Java 开发人员都遵守这一约定。

鉴于这一事实,并假设您也根本没有在 Java 类中使用特殊字符,因此我相信您的具体问题是由其他原因引起的。问题症状的描述不够具体(它到底在哪一步失败了?你期望得到哪些字符?等等)来查看具体问题的可能根本原因。我至少可以说你的 Spring 过滤器的 URL 模式是完全错误的。必须映射到/*

<filter-mapping>
<filter-name>encoder</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

(顺便说一句,您不一定需要 Spring,只需 a custom FilterdoFilter() 实现中只有 2 或 3 行已经足够了)

另见:

关于java - 使 Web 应用程序使用 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com