相关疑难解决方法(0)

谁在S​​pring MVC中设置响应内容类型(@ResponseBody)

我在我的Annotation驱动的Spring MVC Java Web应用程序中运行在jetty Web服务器上(目前在maven jetty插件中).

我试图用一个控制器方法做一些AJAX支持,只返回String帮助文本.资源采用UTF-8编码,字符串也是如此,但我的服务器响应是随附的

content-encoding: text/plain;charset=ISO-8859-1 
Run Code Online (Sandbox Code Playgroud)

即使我的浏览器发送

Accept-Charset  windows-1250,utf-8;q=0.7,*;q=0.7
Run Code Online (Sandbox Code Playgroud)

我正在以某种方式使用弹簧的默认配置

我发现了一个提示将这个bean添加到配置中,但我认为它只是没有使用,因为它说它不支持编码,而是使用默认编码.

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我的控制器代码是(请注意,此响应类型的更改对我不起作用):

@RequestMapping(value = "ajax/gethelp")
public @ResponseBody String handleGetHelp(Locale loc, String code, HttpServletResponse response) {
    log.debug("Getting help for code: " + code);
    response.setContentType("text/plain;charset=UTF-8");
    String help = messageSource.getMessage(code, null, loc);
    log.debug("Help is: " + help);
    return help;
}
Run Code Online (Sandbox Code Playgroud)

java web-applications spring-mvc character-encoding

122
推荐指数
7
解决办法
24万
查看次数

Java中的json-simple utf-8解析

我正在尝试使用 json-simple-1.1.1 解析 JSON

public static void main(String[] args) throws ParseException, IOException{

    BufferedReader buff = new BufferedReader(new FileReader("src/qqqqqqqq/json"));

    String line = null;

    while((line = buff.readLine()) != null){

        JSONParser parser = new JSONParser();
        Object obj = (Object) parser.parse(line);
        JSONObject jsonObj = (JSONObject) obj;

        System.out.println((String)jsonObj.get("name"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 JSON 源文件使用没有 BOM 的 UTF-8

{"name":"?"}
{"name":"?"}
{"name":"?"}
{"name":"?"}
{"name":"?"}
{"name":"ó"}
Run Code Online (Sandbox Code Playgroud)

来自 println 的输出:

Ä…
ć
?„
??
??
??
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

java parsing json utf-8

5
推荐指数
1
解决办法
1万
查看次数

Spring Boot集成测试-TestRestTemplate如何将响应Content-Type设置为UTF-8

我尝试集成测试 Spring Boot 应用程序,现在遇到一个问题

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.http.ResponseEntity] and content type [application/x-json;charset=iso-8859-1]

    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109)
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:917)
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:901)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:655)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:613)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:531)
    at org.springframework.boot.test.web.client.TestRestTemplate.exchange(TestRestTemplate.java:735)
Run Code Online (Sandbox Code Playgroud)

如果我做如下

    @Before
    public void init() {
        List<HttpMessageConverter<?>> converters = restTemplate.getRestTemplate().getMessageConverters();
        for (HttpMessageConverter converter : converters) {
            if (converter instanceof MappingJackson2HttpMessageConverter) {
                MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter;
                jsonConverter.setObjectMapper(new ObjectMapper());
                jsonConverter.setSupportedMediaTypes(ImmutableList
                        .of(new MediaType("application", "x-json", Charset.forName("iso-8859-1"))));
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我向 MappingJackson2HttpMessageConverter 添加了 application/x-json 和 iso8859-1 支持,它可以很好地工作。这是一种解决方法,但我想知道为什么响应内容类型是 application/x-json;charset=iso-8859-1?我的控制器中有生产配置 …

content-type spring-test resttemplate spring-boot

5
推荐指数
0
解决办法
2964
查看次数