加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:31:08 所属栏目:百科 来源:网络整理
导读:我已经阅读了 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"; // g
我已经阅读了 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 });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读