ISO-8859-15字符集在Weblogic中应用不正确,但在Tomcat中未应用

时间:2017-05-01 12:38:27

标签: java spring-boot encoding weblogic servlet-filters

我有一个简单的表单提交请求。在请求收到Servlet之前,它将通过Filter。在该过滤器中,我将字符集编码设置为“ iso-8859-15 ”,因为此字符集编码请求参数值未正确编码。

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
            FilterChain chain) throws IOException {
        servletRequest.setCharacterEncoding("iso-8859-15");

例如,我的参数值为“1Depósito”,并且错误地编码为“1Depósito”而不是“1Depósito”。因为我的请求参数值中有一些国际语言特殊字符(即“ó”)。

根据我的谷歌研究,输入请求编码是 UTF-8 ,但在过滤器中我们设置不同的编码,即 iso-8859-15 因此它可能不是编码正确。但是,只有在 WebLogic 10 中运行时,我们才能看到此问题。当它在spring-boot嵌入式Tomcat中运行时,相同的代码运行正常

注意:

  1. 如果我在我的过滤器中将字符编码设置为 UTF-8 ,它甚至在WebLogic中也能正常工作但是想知道“iso-8859-15”编码在Tomcat中是如何工作的但不是在Weblogic?
  2. 在WebLogic& Tomcat的输入请求内容类型如下所示:

    • Content-Type:application / x-www-form-urlencoded;字符集= UTF-8
  3. 那么为什么 setCharacterEncoding 仅在WebLogic中而不在Tomcat中失败?

  4. 对于spring-boot嵌入式Tomcat服务器,我们是否有任何默认编码设置?

    如何在我的WebLogic部署中解决此问题?

    期待您的宝贵意见。

    谢谢, BSK

1 个答案:

答案 0 :(得分:0)

迟到总比不到好。

但是这个问题只有在WebLogic 10中运行时才能看到。当在Spring-boot嵌入式Tomcat中运行时,相同的代码运行良好

Web Logic从WebLogic Server系统属性或从weblogic.xml

获取字符集配置

另一方面,嵌入式Tomcat会忽略weblogic.xml

修复

要么在weblogic.xml中提供字符集,要么将其提供为WebLogic Server系统属性。

  • WebLogic Server系统属性
-Dweblogic.webservice.i18n.charset=utf-8
  • weblogic XML配置
    <charset-params>
        <input-charset>
            <resource-path>/*</resource-path>
            <java-charset-name>UTF-8</java-charset-name>
        </input-charset>
    </charset-params>
  • 文档

Internationalizing a WebLogic Web Service
weblogic.xml - charset-params