dot si/0/re/mi这个是什么意思后面还加了我的名字?

如果这是一道面试题答案也许非常简单:.ToCharArray(),这基本正确……

我们以“AB吉?????????”作为输入参数,首先如果按照“正常”处理的思路,用.ToCharArray()然后转换为JSON(以便方便查看)返回结果如下:

不出所料,出现了大量乱码

正常一个字符(Unicode基平面)应该是占用一个char(2字节)没错,但如果涉及4字节UnicodeEmoji这个问题就不简单了。

  • 首先32Unicode占用两个char,如:?;
  • 其次某些emoji可能占用超过两个char,可能多达11个如:???????;

下面我將一一演示我的解决过程。

我知道在.NET中如果一个char无法容纳一个字符,技术社区发问有大佬就指出有简单的办法,通过系统内置的StringInfo类即可一步到位解决:

后来我找到了一个好办法,安装NuGetCHTCHSConv然后使用类似代码即可,结果为飛龍騎臉怎么輸!?完全正确。

但我在寻求这個问题的过程中误入了另一条路我想将字符串分隔开来,然后单独判断是不是一个char能包含整个字符虽然我后来知道解决这个问题不需偠,也不应该这样做但我在这条错误的路上越陷越深,然后出现了本篇文章?。

喜欢的朋友 请关注我的微信公众号:【DotNet骚操作】

我要回帖

更多关于 si mi 的文章

 

随机推荐