如何在Xamarin.forms中将emojis转换为unicode?

时间:2018-05-17 07:12:36

标签: xamarin.forms xamarin.ios

我有Xamarin.Forms项目。我有文本框,并有一个按钮,从文本框中获取文本并将其传递给API进行存储。现在关键是当用户从键盘选择任何表情符号时,我想获得表情符号的unicode字符。目前,当我检查它的Text属性时,我会自动获得表情符号。 enter image description here

我想从NewTextValue属性的Text中获取Unicode而不是表情符号。

这篇文章是一样的,但我不明白这个人是如何管理的。 POST

请建议。

在谷歌之后,我尝试了以下内容。

string res = BitConverter.ToString(Encoding.BigEndianUnicode.GetBytes(str)).Replace("-", "");

这是结果res = D83DDE00 我不知道上面的代码是unicode还是没有。

如何转换回原始表情符号,还是有其他方式转换为unicode?

1 个答案:

答案 0 :(得分:0)

我们需要手动将其转换回来。插入" - "每两个字符:

var convertStr = string.Join("-", Regex.Matches(res, @"..").Cast<Match>().ToList());
String[] tempArr = convertStr.Split('-');
byte[] decBytes = new byte[tempArr.Length];
for (int i = 0; i < tempArr.Length; i++)
{
    decBytes[i] = Convert.ToByte(tempArr[i], 16);
}
String str = Encoding.BigEndianUnicode.GetString(decBytes);

此外,在我的测试中,Encoding.UTF32.GetBytes()可能更接近表情符号代码。您可以使用\U0001F600对其进行测试,这是一张微笑图片。用utf32转换后,字节只是改变了它的顺序。