附录:ASCII、UTF8、Uncicode 编码下的中英文字符大小


private static void ShowCode() { 
 string[] strArray = { "b", "abcd", "乙", "甲乙丙丁" }; 
 byte[] buffer; 
 string mode, back; 
 foreach (string str in strArray) { 
 for (int i = 0; i <= 2; i++) { 
 if (i == 0) { 
 buffer = Encoding.ASCII.GetBytes(str); 
 back = Encoding.ASCII.GetString(buffer, 0, buffer.Length); 
 mode = "ASCII"; 
 } else if (i == 1) { 
 buffer = Encoding.UTF8.GetBytes(str); 
 back = Encoding.UTF8.GetString(buffer, 0, buffer.Length); 
 mode = "UTF8"; 
 } else { 
 buffer = Encoding.Unicode.GetBytes(str); 
 back = Encoding.Unicode.GetString(buffer, 0, buffer.Length); 
 mode = "Unicode"; 
 } 
 Console.WriteLine("Mode: {0}, String: {1}, Buffer.Length: {2}", 
 mode, str, buffer.Length); 
 Console.WriteLine("Buffer:"); 
 for (int j = 0; j <= buffer.Length - 1; j++) { 
 Console.Write(buffer[j] + " "); 
 } 
 Console.WriteLine("\nRetrived: {0}\n", back); 
 } 
 } 
}

输出为:

Mode: ASCII, String: b, Buffer.Length: 1 
Buffer: 98 
Retrived: b 
Mode: UTF8, String: b, Buffer.Length: 1 
Buffer: 98 
Retrived: b 
Mode: Unicode, String: b, Buffer.Length: 2 
Buffer: 98 0 
Retrived: b 
Mode: ASCII, String: abcd, Buffer.Length: 4 
Buffer: 97 98 99 100 
Retrived: abcd 
Mode: UTF8, String: abcd, Buffer.Length: 4 
Buffer: 97 98 99 100 
Retrived: abcd 
Mode: Unicode, String: abcd, Buffer.Length: 8 
Buffer: 97 0 98 0 99 0 100 0 
Retrived: abcd 
Mode: ASCII, String: 乙, Buffer.Length: 1 
Buffer: 63 
Retrived: ? 
Mode: UTF8, String: 乙, Buffer.Length: 3 
Buffer: 228 185 153 
Retrived: 乙
Mode: Unicode, String: 乙, Buffer.Length: 2 
Buffer: 89 78 
Retrived: 乙
Mode: ASCII, String: 甲乙丙丁, Buffer.Length: 4 
Buffer: 63 63 63 63 
Retrived: ???? 
Mode: UTF8, String: 甲乙丙丁, Buffer.Length: 12 
Buffer: 231 148 178 228 185 153 228 184 153 228 184 129 
Retrived: 甲乙丙丁
Mode: Unicode, String: 甲乙丙丁, Buffer.Length: 8 
Buffer: 50 117 89 78 25 78 1 78 
Retrived: 甲乙丙丁

大体上可以得出这么几个结论:

  • ASCII 不能保存中文(貌似谁都知道=_-`)。
  • UTF8 是变长编码。在对 ASCII 字符编码时,UTF 更省空间,只占 1 个字节,与 ASCII 编码方式和长度相同;Unicode 在对ASCII 字符编码时,占用 2 个字节,且第 2 个字节补零。
  • UTF8 在对中文编码时需要占用 3 个字节;Unicode 对中文编码则只需要 2 个字节。
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
评论列表

发表评论

评论内容
昵称:
关联文章

附录ASCIIUTF8Uncicode 编码中英文字符大小
ASCii字符对照表
C#和java对URL编码(UrlEncode)差异
C#中URL编码
C# Socket网络编程 系列课程
MySQL 8.0 绿色版安装
C#代码编码规范手册 软件开发规范 开发指南
Javascript对URL进行编码解码三种方式介绍
TinyMCE自定义字体大小列表
.NET中大型项目开发必备(8)--高效分页
.Net 高性能分表分库组件-连接模式原理
C#8.0 可空引用类型
智能转换文件大小单位B,KB,MB,GB
使用.NET 6开发TodoList应用(8)——实现全局异常处理
SQLite数据库删除数据后数据库文件大小不变
YESWinform开发框架关于模块功能不同权限布局介绍
WindowsGit多账号配置,同一电脑多个ssh-key管理
在 SA 和 Windows 等账户都被禁用情况如何登录?
windows配置安卓adb工具
element-ui el-row中有多个el-col时候,某些情况el-col显示错位