收藏
回答

微信公众号模板消息中文乱码怎么解决?

/**
 * 发送服务号/公众号模板通知
 * @param appid 服务号appid,默认null
 * @param secret 服务号secret,默认null
 * @param wxMssVo 模板消息内容
 */
public static void templateSend(String appid,String secret,WxMssVO wxMssVo){
    String SEND_INFO_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
    // 1、获取 接口调用凭证
    RestTemplate restTemplate = new RestTemplate();
    JSONObject json = getAccessToken(appid,secret);
    log.info("获取微信公众号token返回结果:"+JSON.toJSONString(json));
    String accessToken=json.getString("access_token");
    String url =  SEND_INFO_URL  + accessToken;
    wxMssVo.setData(getSendData(wxMssVo));
    System.out.println("请求微信公众号参数:"+JSON.toJSONString(wxMssVo));
    ResponseEntity<String> responseEntity =
            restTemplate.postForEntity(url, JSON.toJSONString(wxMssVo), String.class);
    log.info("发送微信公众号通知返回结果:"+responseEntity.getBody());
}

public static void main(String[] args) throws IOException {
  WxMssVO wxMssVO=new WxMssVO();
  Map<String,Object> map=new HashMap<>();
  map.put("character_string1","/order/detail/upgradeCourse/523");
  map.put("time2", DateUtils.getTime());
  String msg="缺少课程包id:请前往班级管理-关联课程包绑定班级消耗的课程包";
  map.put("thing3",msg.length()<=20?msg:msg.substring(0,17)+"...");
  wxMssVO.setData(map);
  wxMssVO.setTemplate_id("xxxxxx");
  wxMssVO.setTouser("xxxxxx");
  templateSend(null,null,wxMssVO);
  }
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2023-07-27
    restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
    
    j加行代码再试试
    
    2023-07-27
    有用
    回复 1
    • DoubleXu
      DoubleXu
      2023-08-09
      牛逼,可以了!!
      2023-08-09
      回复
登录 后发表内容