做项目的过程中,遇到了在调取第三方接口时,参数里面有中文,传输的过程中出现了中文乱码问题。
出现原因:在传输的参数中,有一个参数是需要其他几个参数里面的数据进行加密生成的。所以在这里我进行了对字符串二进制的转换,但因为转换的过程中没有指定编码,所以就出现了乱码问题。解决办法就是指定编码就行。
String date = "中文";
byte[] signBytes = date .getBytes("utf-8");
还有一种可能就是httpPost.setEntity(new StringEntity(data, “UTF-8”));时,没有指定编码。
public static String post(String url, String data) {
CloseableHttpClient httpClient = null;
CloseableHttpResponse httpResponse = null;
String result = "";
// 创建httpClient实例
httpClient = HttpClients.createDefault();
// 创建httpPost远程连接实例
HttpPost httpPost = new HttpPost(url);
// 配置请求参数实例
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
.setConnectionRequestTimeout(35000)// 设置连接请求超时时间
.setSocketTime