【编码】几种常用编码的编解码
说明
https://blog.csdn.net/u011127019/article/details/99629697
(1)C# 的所有源代码文件,默认编码为 UTF-8,注意,是源代码文件,而不是 C# 中的 string。
(2)C# 中的所有 string,默认编码均为 Unicode (UTF-16)。
(3)C# 产生的 ASP.NET 源代码,如 ASPX/CS,在浏览器响应回去客户端之后,编码默认为 UTF-8。可以通过 ContentType 请求头信息更改默认编码。比如:ContentType: application/json, charset=utf-8。
(4)C# 中可以用 System.Text.Encoding.ASCII 提供的相关方法,把默认 Unicode 编码的字符串转换为 ASCII。详细请参考 GetString,GetBytes,GetByteCount 等方法。
测试过程
(1)总结
7种编码方式
只有ASCII无法编码后正确还原原字符串
其他6种都可以正确还原原字符串
(2)代码
string msg = "测试ceshi";//7个字符
StringBuilder sbContent = new StringBuilder();
List<Encoding> encodings = new List<Encoding>
{
Encoding.ASCII,
Encoding.Default,
Encoding.UTF7,
Encoding.UTF8,
Encoding.Unicode,
Encoding.BigEndianUnicode,
Encoding.UTF32,
};
int idxFirst = 1;
foreach (var encoding in encodings)
{
sbContent.AppendLine($"{idxFirst}、编码方式:{encoding.EncodingName}");
byte[] b = encoding.GetBytes(msg);
int idxSecond = 1;
foreach (var item in encodings)
{
string s = item.GetString(b);
sbContent.AppendLine($"{idxFirst}.{idxSecond}、解码结果-{item.EncodingName}:{s}".Replace("\0", ""));
idxSecond++;
}
idxFirst++;
}
string result = sbContent.ToString();
(3)结果
1、编码方式:US-ASCII
1.1、解码结果-US-ASCII:??ceshi
1.2、解码结果-简体中文(GB2312):??ceshi
1.3、解码结果-Unicode (UTF-7):??ceshi
1.4、解码结果-Unicode (UTF-8):??ceshi
1.5、解码结果-Unicode:㼿散桳�
1.6、解码结果-Unicode (Big-Endian):㼿捥獨�
1.7、解码结果-Unicode (UTF-32):��
2、编码方式:简体中文(GB2312)
2.1、解码结果-US-ASCII:????ceshi
2.2、解码结果-简体中文(GB2312):测试ceshi
2.3、解码结果-Unicode (UTF-7):²âÊÔceshi
2.4、解码结果-Unicode (UTF-8):����ceshi
2.5、解码结果-Unicode:퓊散桳�
2.6、解码结果-Unicode (Big-Endian):닢쫔捥獨�
2.7、解码结果-Unicode (UTF-32):���
3、编码方式:Unicode (UTF-7)
3.1、解码结果-US-ASCII:+bUuL1Q-ceshi
3.2、解码结果-简体中文(GB2312):+bUuL1Q-ceshi
3.3、解码结果-Unicode (UTF-7):测试ceshi
3.4、解码结果-Unicode (UTF-8):+bUuL1Q-ceshi
3.5、解码结果-Unicode:戫畕ㅌⵑ散桳�
3.6、解码结果-Unicode (Big-Endian):⭢啵䰱儭捥獨�
3.7、解码结果-Unicode (UTF-32):����
4、编码方式:Unicode (UTF-8)
4.1、解码结果-US-ASCII:??????ceshi
4.2、解码结果-简体中文(GB2312):娴嬭瘯ceshi
4.3、解码结果-Unicode (UTF-7):æµè¯ceshi
4.4、解码结果-Unicode (UTF-8):测试ceshi
4.5、解码结果-Unicode:뗦閯散桳�
4.6、解码结果-Unicode (Big-Endian):诨꾕捥獨�
4.7、解码结果-Unicode (UTF-32):���
5、编码方式:Unicode
5.1、解码结果-US-ASCII:Km??ceshi
5.2、解码结果-简体中文(GB2312):Km諎ceshi
5.3、解码结果-Unicode (UTF-7):KmÕceshi
5.4、解码结果-Unicode (UTF-8):KmՋceshi
5.5、解码结果-Unicode:测试ceshi
5.6、解码结果-Unicode (Big-Endian):䭭햋挀攀猀栀椀
5.7、解码结果-Unicode (UTF-32):����
6、编码方式:Unicode (Big-Endian)
6.1、解码结果-US-ASCII:mK??ceshi
6.2、解码结果-简体中文(GB2312):mK嬚ceshi
6.3、解码结果-Unicode (UTF-7):mKÕceshi
6.4、解码结果-Unicode (UTF-8):mK��ceshi
6.5、解码结果-Unicode:䭭햋挀攀猀栀椀
6.6、解码结果-Unicode (Big-Endian):测试ceshi
6.7、解码结果-Unicode (UTF-32):����
7、编码方式:Unicode (UTF-32)
7.1、解码结果-US-ASCII:Km??ceshi
7.2、解码结果-简体中文(GB2312):Km諎ceshi
7.3、解码结果-Unicode (UTF-7):KmÕceshi
7.4、解码结果-Unicode (UTF-8):KmՋceshi
7.5、解码结果-Unicode:测试ceshi
7.6、解码结果-Unicode (Big-Endian):䭭햋挀攀猀栀椀
7.7、解码结果-Unicode (UTF-32):测试ceshi

浙公网安备 33010602011771号