SpringMVC 的服务器,默认响应的字节流用UTF-8编码
。
如果故意改了,编码规则,可要小心乱码问题了。
下面以 apache的HttpClient
和 原始的io流
处理响应做对比,看看原始的io流处理少了什么,导致的乱码。
同样的响应,下面时两种处理方式结果的区别。
HttpClient的响应
原始io流的响应
依赖
<!--http 请求需要的jar包-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.10</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
服务端
package com.web.http.server;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStreamReader;
import java.util.Random;
@Slf4j
@RestController
@RequestMapping("/demo")
public class PostController {
@Resource
protected HttpServletRequest request;
@Resource
protected HttpServletResponse response;
@RequestMapping(value = "/one", method = {
RequestMethod.POST, RequestMethod