/td>
可以看出,在我们的 Ubuntu 操作系统中,默认字符编码是“Unicode (UTF-8) [65001:utf-8]”。系统所支持的字符编码数量减少到 95 个。还可以看到,在 Mono 中,很多表示字符编码的类不再位于 System.Text 命名空间中,而是在 I18N 底下的命名空间中。而且大部分都是公共类型。
测试用的 Ubuntu 10.10 Server 操作系统是英文版的,但不影响它有 GB18030 等中文编码。该操作系统的安装过程请参见“从源代码编译 Mono 2.8.2 是否需要低版本的 Mono”一文。
我们前面只给出一个最主要的 C# 源程序 EncodingTester.cs。其余的源程序现在给出,下面就是 Utilities.cs:
01: using System; 02: using System.Text; 03: using System.Collections.Generic; 04: 05: namespace Skyiv 06: { 07: public static class Utilities 08: { 09: public static List<Tuple<string, string>> GetEnvironmentInfo() 10: { 11: var info = new List<Tuple<string, string>>(); 12: Add(info, "操作系统", Environment.OSVersion); 13: Add(info, "公共语言运行库", Environment.Version + " [" + RuntimeFramework.CurrentFramework + "]"); 14: Add(info, "默认字符编码", GetDefaultEncoding()); 15: Add(info, "字节顺序", (BitConverter.IsLittleEndian ? "Little" : "Big") + "-Endian"); 16: return info; 17: } 18: 19: static string GetDefaultEncoding() 20: { 21: var encoding = Encoding.Default; 22: return string.Format("{0} [{1}:{2}]", encoding.EncodingName, encoding.CodePage, encoding.WebName); 23: } 24: 25: static void Add(List<Tuple<string, string>> info, string key, object value) 26: { 27: info.Add(Tuple.Create(key, value.ToString())); 28: } 29: } 30: }
而 RuntimeFramework.cs 请参见“.NET Framework CLR 版本检测”一文。HtmlMaker.cs、HtmlTable.cs 和 ExtensionMethods.cs 请参见“以 Html 表格展现数据”一文。