zoukankan      html  css  js  c++  java
  • 企业微信调试发送消息接口只能发送5个中文字符问题

    调试了两天的问题总算发现问题所在

    情况:通过调用企业微信接口给用户发送消息发送英文正常,但是发送中文就会返回

              "errcode":44004,"errmsg":"empty content  错误的提示,提示说参数当中没有文本,但是json串中肯定是有内容的

    一开始以为是编码问题,调试了很久的编码都无法解决,通过编码后的中文到企业微信客户端上就是编码后的内容

    然后想到了发送一个中文字试试,居然成功了,然后一个个中文字增加,直到5个中文的时候就又发送不成功了,又返回

          "errcode":44004错误,但是发送英文不管多少都可以成功的,又一次陷入了沉思

    第二天调试过程中,猛然想到了发送的headers头部有这么一个参数

    'Content-Length': postData.length   就想会不会是和这个发送的消息内容长度有关系

    通过调试单独打印英文和中文的消息内容长度发现,中文的确实是计算长度有错误

    百度找到以下计算方法后,发送的长度正确后就所有中文字符都能发送了

    https://blog.csdn.net/xing_____/article/details/46828603

    function checkLength(str){
    var len = 0;
    for (var i=0; i<str.length; i++) {
    var c = str.charCodeAt(i);
    if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
    len++;
    } else {
    len+=3;
    }
    }
    return len;
    }

  • 相关阅读:
    函数指针与变长参数列表
    Finding intersection and union of two sets.
    依赖注入
    可达性分析算法
    java 虚拟机栈
    Java 堆
    java虚拟机>>程序计数器
    Java方法区(Method Area)
    Java 运行时常量池
    java引用
  • 原文地址:https://www.cnblogs.com/gtsup/p/10150927.html
Copyright © 2011-2022 走看看