我正在使用JAX-RS创建一个以JSON格式返回结果的Web(休息)服务.
一切都很好,除了编码.
例如,我得到:
 ..., parameter:"Dep\u00f3sitos" ,...
代替:
 ..., parameter:"Depósitos" ,...
我尝试过使用:
@Produces("application/json; charset=UTF-8")
但问题仍然存在.如果我使用以下方式将其作为XML返回:
@Produces("application/xml")
一切都好.
我需要设置什么来生成正确的类型?
我正在尝试确保来自基于Jersey的java应用程序的所有JSON响应都在其ContentType标头中附加了UTF-8字符编码参数.
所以,如果它是一个JSON响应,我想响应报头的Content-Type要
Content-Type:application/json; charset = UTF-8
EDIT: I know I can do this on a case by case basis, but I'd like to do it globally, so it affects all content responses that have a content type of "application/json".
如果我只是尝试在我的过滤器中设置字符编码,无论内容类型如何,它都可以正常工作.但是我只想在ContentType为"application/json"时设置字符编码.我发现response.getContentType()方法总是返回null,除非我先调用chain.doFilter.但是如果我在此之后尝试更改字符编码,它似乎总是会被覆盖.
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ws.rs.core.MediaType;
public class EnsureJsonResponseIsUtf8Filter implements Filter
{
    private class SimpleWrapper extends HttpServletResponseWrapper
    {
        public SimpleWrapper(HttpServletResponse response)
        {
            super(response);
        }
        @Override
        public String getCharacterEncoding()
        {
            return "UTF-8";
        }
    }
    @Override
    public void …如何在 Excel 文件中正确生成支持中文字符编码的“javax.ws.rs.core.Response”(待返回)?
为了澄清,我有一个包含一些中文内容的文件(CSV excel),我需要返回一个 javax 响应,然后正确显示文档中的中文字符(在客户端)。
目前我正在做以下事情:
return Response.status( 200 )
        .header( "content-disposition", 
                 "attachment;filename=SampleCSV.csv;charset=Unicode" )
        .entity( result )
        .build();
但是当这个响应被构建并返回到客户端时(并显示一个要求下载文件的弹出屏幕),excel文件的中文内容被狼吞虎咽。
任何建议将不胜感激。
java ×3
jax-rs ×2
rest ×2
content-type ×1
encoding ×1
filter ×1
jersey-2.0 ×1
json ×1
response ×1