【编码】几种常用编码的编解码

说明

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
posted @ 2021-07-30 16:16  我有我奥妙  阅读(530)  评论(0)    收藏  举报