我们继承了使用Apache CXF编写的Web服务。响应中的文本字段包含单引号和“en”短划线(ascii 150)等字符。这些在响应中显示为正方形(使用SoapUI)或问号。
该文本来自Oracle数据库,该数据库设置为WE8MSWIN1252字符集。我想我需要将Web服务响应的编码/字符集设置为匹配(即Windows-1252),但找不到这样做的地方。
我可以对文本进行XML编码(例如,这些破折号显示为–)。但是,如果可以使用一个本地支持这些字符的字符集似乎更合适,对吗?
知道如何改变SOAP响应的编码吗?
答案 0 :(得分: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");
答案 1 :(得分:0)
您可以在返回的响应中设置编码:
MyResponse response = new MyResponse();
//.... some code here
return Response.ok(response).encoding("Cp1252").build();