【发布时间】:2017-11-27 11:09:42
【问题描述】:
我正在开发 WPF 中的聊天应用程序,我想在其中使用表情符号。我正在开发 WPF 应用程序。我想阅读来自 Android/iOS 设备的表情符号并显示相应的图像。
在 WPF 上,我得到一个黑色表情符号,看起来像 。我不知何故得到了一个表情符号图标库,这些图标用相应的十六进制/转义的 unicode 值保存。 所以,我想把这些表情符号转换成UTF-32/转义的unicode,这样我就可以直接用它们替换相关的表情符号了。
我曾尝试将表情符号转换为其 unicode,但最终得到一个不同的字符串,其中包含几个符号,它们具有不同的 unicode。
string unicodeString = "\u1F642"; // represents ????
Encoding unicode = Encoding.Unicode;
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
char[] unicodeChars = new char[unicode.GetCharCount(unicodeBytes, 0, unicodeBytes.Length)];
unicode.GetChars(unicodeBytes, 0, unicodeBytes.Length, unicodeChars, 0);
string asciiString = new string(unicodeChars);
感谢任何帮助!
【问题讨论】:
-
“来自 Android/iOS 设备的表情符号”是什么意思?我绝对认为你会在 unicode 中得到它们,而不是作为图像或你在说什么?!?
-
Char.ConvertFromUtf32(0x1F642) 将为您提供 UTF-16 表示/正确的 C# Unicode 字符串
-
@RandRandom 实际上该应用程序是跨平台的,因此它从 Android 和 iOS 设备接收表情符号,我想在 WPF 客户端中检测到。
-
是的,得到了那部分,但我相信你没有得到我。您的问题是“如何将表情符号转换为其 UTF-32/转义 unicode”,我告诉您,除了 UTF-32/转义 unicode 方式之外,我不相信您会以任何其他方式从 Android/iOS 接收聊天消息。我的猜测是你已经收到类似“你好,亲爱的。我希望不会通过测试。\u1F642”所以我的问题是,如果是这种情况,你为什么需要/想要将其转换为字节数组而不是再次转换为字符串,当你拥有你想要的东西时......
-
@RandRandom 不,我在我的问题中分割了一张微笑的图像。我收到了那种格式的表情符号。在 WPF 中,它被转换为代表微笑的符号,请参考我的问题,我在哪里分割图像。所以问题是我得到了一个符号,它出现在 WPF 的“Segoe UI Emoji”字体系列中,而没有得到 UTF-32 代码。所以我想知道有什么办法可以将这些符号转换为 UTF-32 /escape unicode ?
标签: c# wpf unicode emoji emoticons