0

我们继承了使用 Apache CXF 编写的 Web 服务。响应中的文本字段包含单引号和“en”破折号 (ascii 150) 等字符。这些在响应中显示为正方形(使用 SoapUI)或问号。

文本来自设置为 WE8MSWIN1252 字符集的 Oracle 数据库。我想我需要将 Web 服务响应的编码/字符集设置为匹配(即 Windows-1252),但找不到这样做的地方。

我可以对文本进行 XML 编码(例如,这些破折号显示为 –)。但是,如果可以使用原生支持这些字符的字符集,这似乎更可取,对吧?

知道如何更改 SOAP 响应的编码吗?

4

2 回答 2

1

请尝试将以下代码添加到您的 Apache CXF Web 服务方法中。

import org.apache.cxf.message.Message;
import org.apache.cxf.phase.PhaseInterceptorChain;

Message message = PhaseInterceptorChain.getCurrentMessage(); 
message.put(Message.ENCODING, "Cp1252"); 
于 2013-03-20T16:59:44.043 回答
0

您可以在返回的响应中设置编码:

MyResponse response = new MyResponse();
//.... some code here
return Response.ok(response).encoding("Cp1252").build();
于 2014-07-29T14:06:02.100 回答