更改CXF Web服务上的响应字符集

时间:2013-03-20 16:03:11

标签: java web-services cxf

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

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

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

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

2 个答案:

答案 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();