Android 上的 Unicode 表情符号
Unicode to Emoji on Android
给定一个 String
的值是 "U+1F601"
(例如,它可以是任何其他表情符号), 的 Android 的正确方法是动态的 将其转换为对应表情符号的可视化表示? (不允许硬编码,必须是动态的,因为这是服务器数据)。我知道理论上我可以将它映射到 0x1F601
,但这没有用,因为它不能在运行时完成。
我已经检查了关于这个主题的所有可用问题,但 none 的答案似乎解决了我的问题。
提前致谢。
注意:请记住,表情符号可以由 N 个 Unicode 值(例如 U+1F468, U+200D, U+1F468, U+200D, U+1F467, U+200D, U+1F466
)组成,并具有肤色修饰符。
tl;博士
表情符号没有什么特别的。每个表情符号只是一个文本字符。将您的文本解析为该字符的 Unicode code point 数字,并构建一个 String
.
new StringBuilder()
.appendCodePoint(
Integer.decode(
"U+1F601".replace( "U+" , "0x" )
)
)
.toString()
详情
将输入字符串中的“U+”替换为“0x”。
使用 Integer.decode
将该十六进制文本转换为整数。
使用 StringBuilder
将整数解析为放入 String
对象中的 Unicode 字符的代码点。
String input = "U+1F601".replace( "U+" , "0x" ) ;
int x = Integer.decode( input ) ;
String y = new StringBuilder().appendCodePoint( x ).toString() ;
System.out.println ( x ) ;
System.out.println ( y ) ;
看到这个 code run live at IdeOne.com。
128513
注意我们没有使用过时的char
类型。该类型现在已经过时,甚至无法表示 Unicode 中定义的一半字符。相反,使用整数作为每个字符的代码点。
给定一个 String
的值是 "U+1F601"
(例如,它可以是任何其他表情符号), 的 Android 的正确方法是动态的 将其转换为对应表情符号的可视化表示? (不允许硬编码,必须是动态的,因为这是服务器数据)。我知道理论上我可以将它映射到 0x1F601
,但这没有用,因为它不能在运行时完成。
我已经检查了关于这个主题的所有可用问题,但 none 的答案似乎解决了我的问题。
提前致谢。
注意:请记住,表情符号可以由 N 个 Unicode 值(例如 U+1F468, U+200D, U+1F468, U+200D, U+1F467, U+200D, U+1F466
)组成,并具有肤色修饰符。
tl;博士
表情符号没有什么特别的。每个表情符号只是一个文本字符。将您的文本解析为该字符的 Unicode code point 数字,并构建一个 String
.
new StringBuilder()
.appendCodePoint(
Integer.decode(
"U+1F601".replace( "U+" , "0x" )
)
)
.toString()
详情
将输入字符串中的“U+”替换为“0x”。
使用 Integer.decode
将该十六进制文本转换为整数。
使用 StringBuilder
将整数解析为放入 String
对象中的 Unicode 字符的代码点。
String input = "U+1F601".replace( "U+" , "0x" ) ;
int x = Integer.decode( input ) ;
String y = new StringBuilder().appendCodePoint( x ).toString() ;
System.out.println ( x ) ;
System.out.println ( y ) ;
看到这个 code run live at IdeOne.com。
128513
注意我们没有使用过时的char
类型。该类型现在已经过时,甚至无法表示 Unicode 中定义的一半字符。相反,使用整数作为每个字符的代码点。