C#中的字符串及其编码转换

本文探讨C#中字符串的Unicode编码以及如何利用Text.Encoding进行不同编码间的转换。通过示例展示了从Unicode到UTF8、GBK和Big5的转换过程,并分析了GetString方法在解码过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     关于字符编码以及如何在程序中处理unicode,本想写篇文章总结学习一下,但发现有前人已经论述的很完善了,不再重复,可以参考:http://www.regexlab.com/zh/encoding.htm

     在C++中,字符有char和wchar之分,相应的,字符串有string和wstring两种。C#中,string是一个unicode字符串,相应的,每个char都是16位。

      源文件中出现的字符串常量,都会被自动转换为unicode编码(utf16),利用Text.Encoding,可以实现不同编码间的转换。

 

//以上程序的输出结果:

//以下是4种编码的字节串

unicode: d8 5f 18 8a 86 4e 4a 55 61 0 62 0 63 0
utf8: e5 bf 98 e8 a8 98 e4 ba 86 e5 95 8a 61 62 63
gbk: cd fc d3 9b c1 cb b0 a1 61 62 63
big5: a7 d1 b0 4f a4 46 b0 da 61 62 63

 

//通过GetString()方法得到的4个string
unicode: 忘記了啊abc 7
utf8: 忘記了啊abc 7
gbk: 忘記了啊abc 7
big5: 忘記了啊abc 7

 

//4个string中的字符编码
unicode: 5fd8 8a18 4e86 554a 61 62 63
utf8: 5fd8 8a18 4e86 554a 61 62 63
gb2312: 5fd8 8a18 4e86 554a 61 62 63
big5: 5fd8 8a18 4e86 554a 61 62 63

 

      可以看到,使用GetString方法,得到的string都是unicode编码的,也就是说,它的作用是把各种编码的byte数组“解码”为一个unicode字符串。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值