如何从Android中的表情符号中获取unicode?

时间:2015-01-03 18:18:02

标签: android

如何从android中的emoji获取unicode?例如,我有一个文本“嗨(张开嘴笑脸)”我希望字符串为“hi \ ud83d”。我试图将其转换为字节,然后转换为字符串。但没有希望。

3 个答案:

答案 0 :(得分:4)

你可以获得表情符号的unicode

StringEscapeUtils.escapeJava();

并将其解码回表情符号,您可以使用

StringEscapeUtils.unescapeJava();

答案 1 :(得分:2)

在我的情况下,所有消息在符号&之后消失。 +当我使用StringEscapeUtils.escapeJava()方法时。所以,这段代码适合我:

private String encodeMessage(String message) {
    message = message.replaceAll("&", ":and:");
    message = message.replaceAll("\\+", ":plus:");
    return StringEscapeUtils.escapeJava(message);
}

private String decodeMessage(String message) {
    message = message.replaceAll(":and:", "&");
    message = message.replaceAll(":plus:", "+");
    return StringEscapeUtils.unescapeJava(message);
}

答案 2 :(得分:1)

最后我得到了答案

我不知道我是在正确的道路上。任何知道更好答案的人都会受到欢迎

public static String escapeJavaString(String st){
        StringBuilder builder = new StringBuilder();
        try {
            for (int i = 0; i < st.length(); i++) {
                 char c = st.charAt(i);
                 if(!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)&& !Character.isWhitespace(c) ){
                     String unicode = String.valueOf(c);
                     int code = (int)c;
                     if(!(code >= 0 && code <= 255)){
                         unicode = "\\\\u"+Integer.toHexString(c);
                     }
                     builder.append(unicode);
                 }
                 else{
                     builder.append(c);
                 }
            }
            Log.i("Unicode Block", builder.toString());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return builder.toString();
    }

public static String escapeJavaString(String st){ StringBuilder builder = new StringBuilder(); try { for (int i = 0; i < st.length(); i++) { char c = st.charAt(i); if(!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)&& !Character.isWhitespace(c) ){ String unicode = String.valueOf(c); int code = (int)c; if(!(code >= 0 && code <= 255)){ unicode = "\\\\u"+Integer.toHexString(c); } builder.append(unicode); } else{ builder.append(c); } } Log.i("Unicode Block", builder.toString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return builder.toString(); }