Char 字符

C# 中 char并不等于抽象字符,或者说是显示元素,也可以说是文本元素。比如“𪚥”这个 显示元素,它是由2个char组成。 严格意义来说char等于unicode字符集下由utf-16编码后对应的编码值。比如,“𪚥”这个文本元素,它的utf-16的 编码值为 

 码点为 1101100001101001 1101111010100101
 
 

 

而根据utf-16编码方案,“𪚥”这个对应的unicode码点 为  0001 1010 0110 1010 0101,对应unicode字符集的 Code point为  0x01A6A5,该码点使用了代理项,所以有utf-16编码后,有4字节。

而在c#中,该文本元素对应两个char,分别为以utf-16进行编码的码值,即 \ud869 \udea5,该值对应二进制为上述 1101100001101001 1101111010100101。

除了高低位代理外,还会有组合字符,比如这个 ”a\u0304\u0308“,它是一个组合字符,代表 ”ā̈”。

所以总结下:C#中一般情况下,在unicode码点为 0x000000 -0x00ffff以内的,Char就为该码点的utf-16编码值,也等于unicode码点。

在0x010000 - 0x10ffff范围的,由于有代理项的存在,所以一个unicode码点的utf-16 对应4字节, 对应 2个char。

在组合字符的情况下,几个char可以组合成一个组合字符或者显示元素。比如这个 ”a\u0304\u0308“,它是一个组合字符,代表 ”ā̈”,它有3个char。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值