当前位置: 代码迷 >> C# >> 关于超两字节unicode编码有关问题
  详细解决方案

关于超两字节unicode编码有关问题

热度:113   发布时间:2016-05-05 04:59:03.0
关于超两字节unicode编码问题
string s1 = "\u1f8ff";
byte[] b1 = System.Text.Encoding.Unicode.GetBytes (s1);

s1的值如图1
b1的值如图2

1f8ff十六进制=129279十进制
如何根据129279得到s1 的值,就如图1
------解决思路----------------------
\u 语法不支持超两字节的字符,你那样写就变成了U+1F8F 和 'f' 两个字符。由于.net的char类型是16位的unicode编码,超两字节的unicode字符不是一个char可以表示的。

可以使用 string s1 = "\U0001f8ff"; 或者 string s1 = char.ConvertFromUtf32(0x1f8ff); 来获得这个字符的string形式,它内部是2个char表示的一个unicode surrogate pair。

------解决思路----------------------
http://bbs.csdn.net/topics/390721598
  相关解决方案