收藏
回答

batchget_material 有部分问号怎么办?

请看乱码的样子

文档:batchget_material 有部分乱码怎么办.n...

链接:http://note.youdao.com/noteshare?id=9b4f0ee0172ea1fae61be574d0db03cf&sub=C6E3D706D0DD4A24ADD5071D84EEE0FE

小程序端好像说是标题的第六个字就会是问号,这感觉好像也不是乱码,只要标题增减了字,他一定是第6个字是问号,这种是什么东西呢?怎么解决呢?

不是 emoji 不是 生僻字,其他字都正常,我觉得也不太可能是编码问题吧。。

附上代码 忘记哪里抄的了


import com.alibaba.fastjson.JSON;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class ArticalUtil {
    public static synchronized String getContentList(String token,Map<String, Object> paramsMap ) throws IOException {
        String path = " https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" + token;
        URL url = new URL(path);
//        batchget_material 有一些乱码
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setRequestProperty("content-type", "application/json;charset=utf-8");
        connection.connect();
        // post发送的参数
//        Map<String, Object> map = new HashMap<>();
//        map.put("type", "news"); // news表示图文类型的素材,具体看API文档
//        map.put("offset", 0);
//        map.put("count", 1);
        // 将map转换成json字符串
        String paramBody = JSON.toJSONString(paramsMap); // 这里用了Alibaba的fastjson

        OutputStream out = connection.getOutputStream();
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
        bw.write(paramBody); // 向流中写入参数字符串
        bw.flush();

        InputStream in = connection.getInputStream();
        byte[] b = new byte[100];
        int len = -1;
        StringBuffer sb = new StringBuffer();
        while((len = in.read(b)) != -1) {
            sb.append(new String(b,0,len));
        }

        in.close();
        return sb.toString();
    }
}


最后一次编辑于  2021-10-12
回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容