1. 程式人生 > >企業微信除錯傳送訊息介面只能傳送5箇中文字元問題

企業微信除錯傳送訊息介面只能傳送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;
}