我有一个网站和 Unity 项目,它们通过使用 Web 套接字的 Web 服务器相互通信。我正在编码/解码我使用 json 发送的消息。在 Unity 方面,我将 Newtonsoft 用于 json,将 websocketsharp 用于 WebSocket。消息发送正常,一切正常,但现在我正在尝试在 Unity 中实现表情符号以正确显示。我能够创建所有表情符号的精灵表,创建一个字典,其中键是它们的 Unicode,值是它们在精灵表中的位置。问题是当我收到一个表情符号(例如表情符号 Unicode:U+1F910)时,Unity 将其接收为“\uD83E\uDD10”。有没有办法将表情符号作为其 Unicode 的字符串文字发送?如果没有,有没有办法将 c# 解释的 Unicode 解析回原始 Unicode?我发现正则表达式将更常见的符号从上述格式转换回相应的符号,但没有将 Unicode 作为字符串返回给我。这是我目前用来执行此操作的方法:
var result = Regex.Replace(
arrivedMessages[0],
@"\\[Uu]([0-9A-Fa-f]{4})",
m => char.ToString(
(char)ushort.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier)));
使用上面的代码,如果用户要发送一个符号,例如 º,解码后的 json 将读取 \u00ba,但上面的正则表达式会将其转换回 º。当我尝试发送表情符号(例如符号)时,json 将读取“\ud83e\udd10”,正则表达式结果将为空白。正则表达式有问题吗?还是有更好的方法来做到这一点?谢谢!
编辑:
为了简化整个问题:有没有办法将 "\uD83E\uDD10" 转换回 Unicode "U+1F910" 的字符串文字