使用ApacheCXF的RESTWebService中的java UTF8编码字符串
我正在使用CXF 3.0.2在Tomcat 6上的2.5 Web应用程序上设置REST Web服务。 webservice接收一个不带参数的POST请求,并返回一个带有国际字符(如é、è、è、…)的JSON字符串
问题是调用应用程序似乎接收到未以UTF-8编码的字符串。 我尝试使用SoapUI,但“原始视图”(JSON视图)也有类似的问题
我真的不知道有什么问题。 事实上,我不知道调用的应用程序是否没有读取UTF-8或CXF发送非UTF-8编码的响应
Java REST Web服务:
package test; @Path("/TestService") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") public class TestService { @Path("/indicateurs") @POST public String indicateurs() { return "iiérrràr_îttt"; } }
cxfservlet。xml:
lt;bean id="testService" class="test.TestService"/> <jaxrs:server id="testRestService" address="/TestService"> <jaxrs:serviceBeans> <ref bean="testService"/> </jaxrs:serviceBeans> <jaxrs:providers> <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> <property name="dropRootElement" value="true" /> <property name="supportUnwrapped" value="true" /> </bean> </jaxrs:providers> </jaxrs:server>
SoapUI JSON视图:
iiérrràr_îttt
SoapUI原始视图:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Date: Tue, 09 Dec 2014 10:54:52 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: close iiérrrà r_îttt
# 1 楼答案
我设法找到了问题所在
正如《鲁克森》所说,制片人还行
调用代码是一个使用json-smart库的Java中间件,它与UTF-8:https://code.google.com/p/json-smart/issues/detail?id=48有一个问题