Android Emoji表情の切り取りが不完全で、文字化けしている

954 ワード

問題の根本
切り取りが不完全で、もともと完全な表情が、2バイトとして切り取られた.表情が境界を切り取ると文字化けします.
解決策
バイト単位で切り取り、文字単位で切り取るように変更します.
   /**
     * Emoji        
     * @param resourse     
     * @param length         ,  Emoji    
     * @return
     */
    public static String subStr(@NonNull String resourse, int length){
        char[] chars = resourse.toCharArray();
        StringBuilder stringBuilder = new StringBuilder();
        int sum = 0;
        for (int i = 0; i < chars.length; i++) {
            if (sum > length - 1) {
                break;
            }
            if (isEmojiCharacter(chars[i])) {
                stringBuilder.append(chars[i]);
                stringBuilder.append(chars[i + 1]);
                i = i + 1;
                sum = sum + 1;
            }else {
                stringBuilder.append(chars[i]);
                sum = sum + 1;
            }
        }
        return  stringBuilder.toString();
    }
}