打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
转载>>ASCII、UTF8、Uncicode编码下的中英文字符大小


  • ASCII不能保存中文

  • UTF8是变长编码。在对ASCII字符编码时,UTF更省空间,只占1个字节,与ASCII编码方式和长度相同;Unicode在对ASCII字符编码时,占用2个字节,且第2个字节补零。

  • UTF8在对中文编码时需要占用3个字节;Unicode对中文编码则只需要2个字节。

 

代码示例:

 1 private static void ShowCode() { 2     string[] strArray = { "b", "abcd", "", "甲乙丙丁" }; 3     byte[] buffer; 4     string mode, back; 5  6     foreach (string str in strArray) { 7  8         for (int i = 0; i <= 2; i++) { 9             if (i == 0) {10                 buffer = Encoding.ASCII.GetBytes(str);11                 back = Encoding.ASCII.GetString(buffer, 0, buffer.Length);12                 mode = "ASCII";13             } else if (i == 1) {14                 buffer = Encoding.UTF8.GetBytes(str);15                 back = Encoding.UTF8.GetString(buffer, 0, buffer.Length);16                 mode = "UTF8";17             } else {18                 buffer = Encoding.Unicode.GetBytes(str);19                 back = Encoding.Unicode.GetString(buffer, 0, buffer.Length);20                 mode = "Unicode";21             }22 23             Console.WriteLine("Mode: {0}, String: {1}, Buffer.Length: {2}",24                 mode, str, buffer.Length);25 26             Console.WriteLine("Buffer:");27             for (int j = 0; j <= buffer.Length - 1; j++) {28                 Console.Write(buffer[j] + " ");29             }30 31             Console.WriteLine("\nRetrived: {0}\n", back);32         }33     }34 }

运行结果:

 1 Mode: ASCII, String: b, Buffer.Length: 1 2 Buffer: 98 3 Retrived: b 4  5 Mode: UTF8, String: b, Buffer.Length: 1 6 Buffer: 98 7 Retrived: b 8  9 Mode: Unicode, String: b, Buffer.Length: 210 Buffer: 98 011 Retrived: b12 13 Mode: ASCII, String: abcd, Buffer.Length: 414 Buffer: 97 98 99 10015 Retrived: abcd16 17 Mode: UTF8, String: abcd, Buffer.Length: 418 Buffer: 97 98 99 10019 Retrived: abcd20 21 Mode: Unicode, String: abcd, Buffer.Length: 822 Buffer: 97 0 98 0 99 0 100 023 Retrived: abcd24 25 Mode: ASCII, String: 乙, Buffer.Length: 126 Buffer: 6327 Retrived: ?28 29 Mode: UTF8, String: 乙, Buffer.Length: 330 Buffer: 228 185 15331 Retrived: 乙32 33 Mode: Unicode, String: 乙, Buffer.Length: 234 Buffer: 89 7835 Retrived: 乙36 37 Mode: ASCII, String: 甲乙丙丁, Buffer.Length: 438 Buffer: 63 63 63 6339 Retrived: ????40 41 Mode: UTF8, String: 甲乙丙丁, Buffer.Length: 1242 Buffer: 231 148 178 228 185 153 228 184 153 228 184 12943 Retrived: 甲乙丙丁44 45 Mode: Unicode, String: 甲乙丙丁, Buffer.Length: 846 Buffer: 50 117 89 78 25 78 1 7847 Retrived: 甲乙丙丁

得出结论:

1 ASCII不能保存中文(貌似谁都知道=_-`)。2 UTF8是变长编码。在对ASCII字符编码时,UTF更省空间,只占1个字节,与ASCII编码方式和长度相同;Unicode在对ASCII字符编码时,占用2个字节,且第2个字节补零。3 UTF8在对中文编码时需要占用3个字节;Unicode对中文编码则只需要2个字节。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#网络编程(同步传输字符串) - Part.2 - C# 编程 - TraceFact....
彻底搞懂字符编码
C# 如何将一个字符串转换成字节数组”与“如何将一个字节数组转换成一个字符串
别再混淆了,编程中常用的字符编码知识点
Delphi与字符编码
VC知识库文章 - 常用编码详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服