很多人想到的是android:maxLength="20" 这种形式,但这种仅仅是计算个数,中文也计算为1个,并不能满足需求。
那么我们就需要从字节入手,常规的editable.toString().getBytes()拿到的中文,默认UTF-8是1个中文计算3个字节长度。
现在要解决的就是怎么让他转为我们通用的1个中文计算2个字节长度。方法很简单,如下:
byte[] bytes = editable.toString().getBytes("GBK");
这个计算出来的就是1个中文计算为2个字节长度了。
因遇到这个问题,搜了一下百度,要么方法很复杂,要么结果不正确的,所以特在此记录。