如何将表情符号转换为UTF-32/转义Unicode?
- 作者: 喂-4434642
- 来源: 51数据库
- 2022-10-19
问题描述
我正在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);
感谢任何帮助!!
推荐答案
您的转义unicode字符串在C#中无效。
string unicodeString = "u1F642"; // represents ??
这段代码不代表"微微的笑脸",因为C#只尊重前4个字符--代表UTF-16(有2个字节)。
因此,您实际上得到的是代表1F64的字母,后跟一个简单的2。 http://www.fileformat.info/info/unicode/char/1f64/index.htm因此:?2
如果您想要输入带有4个字节的十六进制并获得相应的字符串,则必须使用:
var unicodeString = char.ConvertFromUtf32(0x1F642);
https://msdn.microsoft.com/en-us/library/system.char.convertfromutf32(v=vs.110).aspx
或者您可以这样写:
uD83DuDE42
这个字符串可以这样解析,以获得您想要的结果,这也是我们开始时使用的十六进制值:
var x = char.ConvertFromUtf32(0x1F642);
var enc = new UTF32Encoding(true, false);
var bytes = enc.GetBytes(x);
var hex = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
hex.AppendFormat("{0:x2}", bytes[i]);
}
var o = hex.ToString();
//result is 0001F642
(结果具有前导零,因为UTF-32始终为4字节)
除了For循环,您还可以使用BitConverter.ToString(byte[])https://msdn.microsoft.com/en-us/library/3a733s97(v=vs.110).aspx结果如下:
var x = char.ConvertFromUtf32(0x1F642); var enc = new UTF32Encoding(true, false); var bytes = enc.GetBytes(x); var o = BitConverter.ToString(bytes); //result is 00-01-F6-42
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
