易信公众号回复的文本消息长度限制详解
发送的文本消息内容过长时,易信将不做任何响应。那么到底易信允许的文本消息的最大长度是多少呢?我们又该如何计算文本的长度呢?
可以看到,接口文档中写的很明确:回复的消息内容长度不超过2048字节。那为什么很多人测试反应消息内容长度在1300多字节时,易信就不响应了呢?我想这问题应该在这部分人没有搞清楚到底该如何计算文本的字节数。
计算文本(字符串)所占字节数,大家第一个想到的应该就是String类的getBytes()方法,该方法返回的是字符串对应的字节数组,再计算数组的length就能够得到字符串所占字节数。其实我们忽略了一个问题:对于不同的编码方式,中文所占的字节数也不一样!
也就是说采用ISO8859-1编码方式时,一个中/英文都只占一个字节;采用GB2312或GBK编码方式时,一个中文占两个字节;而采用UTF-8编码方式时,一个中文占三个字节。
用getMsgContent()方法返回的内容最大值,即采用UTF-8编码方式时,文本消息内容最多支持2047个字节,也就是易信公众平台接口文档里所说的回复的消息内容长度不超过2048字节,即使是等于2048字节也不行,你可以试着将getMsgContent()方法里的内容多加一个英文符号,这个时候易信就不响应了。
同时,我们也发现,如果采用gb2312编码方式来计算getMsgContent()方法返回的文本所占字节数的结果是1365,这就是为什么很多朋友都说易信的文本消息最大长度好像只支持1300多字节,并不是接口文档中所说的2048字节,其实是忽略了编码方式,只是简单的使用了String类的getBytes()方法而不是getBytes("utf-8")方法去计算所占字节数。