我正在使用JBoss 7.1.3。目前,当我向服务器提交具有特殊字符的请求时,例如
Café
它被服务器接收为
Café
我在网上找到的唯一建议就是将这些sysmte属性添加到$ 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>
但是,即使重新启动我的服务器后,我的特殊字符仍然在服务器端未正确接收。我还能做些什么才能正确理解角色?
答案 0 :(得分:0)
为 JBOSS版本7.1.0 beta或更高版本 修复编码的事情是将以下行包含在standalone.conf
直接在文件夹
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.URI_ENCODING=UTF-8"
或强>
在standalone.conf
直接在bin 或domain.conf
下以适合您的方式尝试以下内容
-Dfile.encoding=UTF-8
*适用于版本 7.1 JBOSS
答案 1 :(得分:0)
e-acute是U + 00E9。 使用UTF-8进行编码,得到0xC3 0xA9。 如果你转换它假设你的终端或其他什么使用cp1252或类似,你得到é。解决方案:不要这样做。告诉你的jboss使用UTF-8。
答案 2 :(得分:0)
您尝试过以下选项吗?
设置启动参数
-Dorg.wildfly.undertow.ALLOW_UNESCAPED_CHARACTERS_IN_URL=true
答案 3 :(得分:0)
尝试将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(并且正文没有编码),它将默认为 ISO-8859-1 。
与tomcat文档一样:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html(查找useBodyEncodingForURI
连接器属性)。
答案 4 :(得分:0)
在 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);
}