如何在JBoss 7中正确接收UTF-8字符?

xtupzzrd  于 2022-11-08  发布在  其他
关注(0)|答案(5)|浏览(216)

我使用的是JBoss 7.1.3。

Café

它被服务器接收为

Café

我在网上找到的纠正这一问题的唯一建议是将这些系统属性添加到$JBOSS_HOME/standalone/configuration/standalone.xml中...

<system-properties>
    …
    <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
    <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>

然而,即使在重新启动服务器后,服务器端仍然无法正确接收我的特殊字符。我还能做些什么来正确解释这些字符呢?

jtjikinw

jtjikinw1#

为我修复*JBOSS 7.1.0测试版或更高版本*的 * 编码 * 的方法是将以下行包含到standalone.conf文件中,直接位于bin之下

JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.URI_ENCODING=UTF-8"

在bin**或domain.conf下的standalone.conf**中尝试以下操作(以适合您的为准)

-Dfile.encoding=UTF-8
  • 适用于版本7.1 JBOSS
7cjasjjr

7cjasjjr2#

e-acute是U+00 E9。使用UTF-8编码,得到0xC 3 0xA 9。如果假设您的终端或其他设备使用的是cp 1252或类似格式,则将其转换为é。别这么做。告诉你的老板用UTF-8。

yhxst69z

yhxst69z3#

您是否尝试过以下选项?
设置启动参数,

-Dorg.wildfly.undertow.ALLOW_UNESCAPED_CHARACTERS_IN_URL=true

https://issues.jboss.org/browse/JBEAP-13710

xlpyo6sf

xlpyo6sf4#

请尝试将org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING设置为false
最近也遇到了同样的问题,上述配置是Jboss EAP 6.4.0的核心问题。
看起来不管您在URI_ENCODING中设置什么,如果USE_BODY_ENCODING_FOR_QUERY_STRING设置为true(并且body没有编码),它将默认为ISO-8859-1
就像在tomcat文档中一样:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html(查找useBodyEncodingForURI连接器属性)。

xdyibdwo

xdyibdwo5#

在JBoss 6.4中也有同样的问题。JVM设置正确,显示特殊字符正常,但POST请求以ISO-8859-1编码。
有人把一个过滤器设置的编码没有运气。

request.setCharacterEncoding("UTF-8");

最后的问题是这个过滤器不是第一个被执行的。我做了什么把这个“UTF8过滤器”放在第一个位置,它解决了这个问题。诀窍是第一个过滤器执行设置编码。似乎另一个过滤器确实设置了错误的编码。
该类使用以下代码实现javax.servlet.Filter

public void doFilter(ServletRequest inRequest, ServletResponse inResponse, FilterChain inFilterChain) throws IOException, ServletException {
    inRequest.setCharacterEncoding("UTF-8");
    inFilterChain.doFilter(inRequest, inResponse);
}

相关问题