我正在使用JAX-RS创建一个以JSON格式返回结果的Web(休息)服务.
一切都很好,除了编码.
例如,我得到:
..., parameter:"Dep\u00f3sitos" ,...
Run Code Online (Sandbox Code Playgroud)
代替:
..., parameter:"Depósitos" ,...
Run Code Online (Sandbox Code Playgroud)
我尝试过使用:
@Produces("application/json; charset=UTF-8")
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在.如果我使用以下方式将其作为XML返回:
@Produces("application/xml")
Run Code Online (Sandbox Code Playgroud)
一切都好.
我需要设置什么来生成正确的类型?
我正在尝试确保来自基于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 …
Run Code Online (Sandbox Code Playgroud) 如何在 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();
Run Code Online (Sandbox Code Playgroud)
但是当这个响应被构建并返回到客户端时(并显示一个要求下载文件的弹出屏幕),excel文件的中文内容被狼吞虎咽。
任何建议将不胜感激。
java ×3
jax-rs ×2
rest ×2
content-type ×1
encoding ×1
filter ×1
jersey-2.0 ×1
json ×1
response ×1