如果这是一道面试题答案也许非常简单:.ToCharArray()
,这基本正确……
我们以“AB吉?????????”作为输入参数,首先如果按照“正常”处理的思路,用.ToCharArray()
然后转换为JSON
(以便方便查看)返回结果如下:
不出所料,出现了大量乱码
正常一个字符(Unicode
基平面)应该是占用一个char
(2字节)没错,但如果涉及4
字节Unicode
戓Emoji
这个问题就不简单了。
32
位Unicode
占用两个char
,如:?;
emoji
可能占用超过两个char
,可能多达11
个如:???????;
下面我將一一演示我的解决过程。
我知道在.NET
中如果一个char
无法容纳一个字符,技术社区
发问有大佬就指出有简单的办法,通过系统内置的StringInfo
类即可一步到位解决:
后来我找到了一个好办法,安装NuGet
包CHTCHSConv
然后使用类似代码即可,结果为飛龍騎臉怎么輸!?
完全正确。
但我在寻求这個问题的过程中误入了另一条路我想将字符串分隔开来,然后单独判断是不是一个char
能包含整个字符虽然我后来知道解决这个问题不需偠,也不应该这样做但我在这条错误的路上越陷越深,然后出现了本篇文章?。
喜欢的朋友 请关注我的微信公众号:【DotNet骚操作】