我有一个简单的表单提交请求。在请求收到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中运行时,相同的代码运行正常
注意:
在WebLogic& Tomcat的输入请求内容类型如下所示:
那么为什么 setCharacterEncoding 仅在WebLogic中而不在Tomcat中失败?
对于spring-boot嵌入式Tomcat服务器,我们是否有任何默认编码设置?
如何在我的WebLogic部署中解决此问题?
期待您的宝贵意见。
谢谢, BSK
答案 0 :(得分:0)
迟到总比不到好。
但是这个问题只有在WebLogic 10中运行时才能看到。当在Spring-boot嵌入式Tomcat中运行时,相同的代码运行良好
Web Logic从WebLogic Server系统属性或从weblogic.xml
另一方面,嵌入式Tomcat会忽略weblogic.xml
修复
要么在weblogic.xml
中提供字符集,要么将其提供为WebLogic Server系统属性。
-Dweblogic.webservice.i18n.charset=utf-8
<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