企业微信调试发送消息接口只能发送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;
}