2019-02-26 12:32
使用上面的方法后会报另一个错 java.nio.charset.MalformedInputException: Input length = 1
后面发现主要是字符串截取问题,表情符号会占用两个字符,String 截取时(String .substring(start,end),如果刚好截到表情符号的一个字符,而另一个字符没有截取进来,Enjoy会抛出,java本身的话不抛出,会直接用一个?代替。
修改字符串截取方式后,问题解决
private static String subByUtf32(String s, int reqNum) throws UnsupportedEncodingException{
byte[] bts = s.getBytes("utf-32");
int index = reqNum * 4;
index = index > bts.length ? bts.length : index;
return new String(bts, 0, index, "utf-32");
}