微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在字符串中定义4字节UTF-16字符

我已经阅读了 a question about UTF-8,UTF-16 and UCS-2,几乎所有的答案都说明UCS-2已经过时,C#使用的是UTF-16.

但是,我在C#中创建4字节字符U 1D11E的所有尝试都失败了,所以我实际上认为C#仅使用UTF-16的UCS-2子集.

有我的尝试:

string s = "\u1D11E"; // gives the 2 character string "ᴑE",because \u1D11 is ᴑ
string s = (char) 0x1D11E; // won't compile because of an overflow
string s = Encoding.Unicode.GetString(new byte[] {0xD8,0x34,0xDD,0x1E}); // gives 㓘ờ

C#字符串真的是UTF-16还是它们实际上是UCS-2?如果它们是UTF-16,我怎样才能将小提琴谱号放入我的C#弦中?

解决方法

使用大写U代替:
string s = "\U0001D11E";

你忽略了大多数机器都是小端的:

string t = Encoding.Unicode.GetString(new byte[] { 0x34,0xD8,0x1E,0xDD });

原文地址:https://www.jb51.cc/csharp/98753.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐