如果在http请求头中没有设置字符集,我的SOAP服务将使用ISO-8859-1进行响应。
我尝试了以下几点:
但是,在自由日志中,我仍然看到传入消息的头部设置如下:
Encoding: ISO-8859-1
Http-Method: POST
Content-Type: application/soap+xml;action="myWSmethod"我们的最终用户倾向于在请求头中没有字符集的情况下发送请求。我们以前有传统的WAS8,使用UTF-8作为默认的.设置自由也使用UTF-8失败了。
在server.xml中是否有隐藏的选项?
uses使用CXF,它正在拦截传入的消息并设置此标头。为什么它还在使用ISO?
亲切的问候
发布于 2018-09-18 20:10:33
我不会解释您的所有参数,您必须明白,您使用的某些参数是用于客户端编码的,这是您收到的请求,而不是您响应的.
无论如何..。为了澄清8859-1,HTTP/1.1 rfc说:
"charset“参数与一些媒体类型一起使用来定义数据的字符集(第3.4节)。当没有显式字符集时 参数由"text“的发件人、媒体子类型提供。 类型定义为当通过HTTP接收到时,其默认字符集值为"ISO-8859-1“。字符集中的数据,"ISO-8859-1“或 其子集必须用适当的字符集值标记。 一些HTTP/1.0软件将没有字符集参数的内容类型标头解释为“收件人应该猜测”。即使字符集是ISO-8859-1,希望挫败此行为的发件人也可能包含一个字符集参数,并且在知道不会混淆收件人时也应该这样做。
以及应用服务器如何处理编码..。
WebSphere应用服务器的默认行为首先是检查在内容类型标头上是否设置了字符集。如果是,则产品使用内容类型标头进行字符编码;如果不是,则使用系统属性default.client.encoding在服务器上使用字符编码集。如果字符集不存在且系统属性未设置,则产品使用ISO-8859-1。在Web模块上启用autoRequestEncoding会改变默认行为:如果传入请求头上不存在字符集,则产品将检查传入请求的接受语言头,并使用在该标头中找到的第一种语言进行编码。如果内容类型头上没有字符集,也没有接受语言标头,那么该产品使用系统属性default.client.encoding在服务器上使用字符编码集。与默认行为一样,如果字符集不存在且系统属性未设置,则产品使用ISO-8859-1。
https://stackoverflow.com/questions/52334379
复制相似问题