1.获取系统所有编码
using System; using System.Text; namespace MyEncoding { class Program { static void Main(string[] args) { EncodingInfo[] allEncoding = Encoding.GetEncodings(); foreach (EncodingInfo encoding in allEncoding) { Console.WriteLine("编码标识符:{0,-10}编码名称:{1,-15}编码说明:{2}", encoding.CodePage, encoding.Name, encoding.DisplayName); } Console.Read(); } } }
2.结果
3.在不同编码之间进行转换
//不同编码之间的转换 string GB18030String = "你好!晴天猪"; Console.WriteLine("需要转换的字符串:{0}", GB18030String); #region 对字符串进行GB18030格式编码 //获取编码器 Encoding gb18030Encoding = Encoding.GetEncoding("GB18030"); //将字符串转换为char类型数组 char[] chars = GB18030String.ToCharArray(); //获取编码为字节序列后的字节数组长度 int buffLength = gb18030Encoding.GetByteCount(chars, 0, chars.Length); //根据获取的字节长度声明数组,存储编码后的字节 byte[] gb18030Buffer = new byte[buffLength]; //获取GB18030编码的字节序列 gb18030Buffer = gb18030Encoding.GetBytes(chars, 0, chars.Length); Console.WriteLine("GB18030编码的字节序列:{0}", BitConverter.ToString(gb18030Buffer)); //将GB18030编码的字节序列转换成UTF-8编码的字节序列 byte[] unicodeBuffer = Encoding.Convert(gb18030Encoding, Encoding.UTF8, gb18030Buffer); Console.WriteLine("转换为UTF-8编码字节序列:{0}", BitConverter.ToString(unicodeBuffer)); #endregion #region 将GB18030编码转换为UTF-8编码 //获取UTF-8解码器 Decoder utf8Decoder = Encoding.UTF8.GetDecoder(); //获取解码为字符后字符数组的长度 int utfChartsLength = utf8Decoder.GetCharCount(unicodeBuffer, 0, unicodeBuffer.Length, true); //根据获取解码后的长度创建char数组 char[] utfChart = new char[utfChartsLength]; //将UTF-8编码的字节序列转换为字符串 utf8Decoder.GetChars(unicodeBuffer, 0, unicodeBuffer.Length, utfChart, 0); StringBuilder strBuilder = new StringBuilder(); foreach (char ca in utfChart) { strBuilder.Append(ca); } Console.WriteLine("UTF-8的字符序列解码:{0}", strBuilder.ToString());
4.C#编码和解码
/// <summary> /// 获取字符串编码之后的bytes数组 /// </summary> /// <param name="codeType">编码类型名称</param> /// <param name="strCode">将被编码的字符串</param> /// <returns></returns> private byte[] GetEncodeBeforeBuffer(string codeType,string strCode) { //根据编码类型构造该类型编码的编码器的实例 Encoder encoder = Encoding.GetEncoding(codeType).GetEncoder(); char[] chars = strCode.ToCharArray(); //根据获取对字符进行编码所产生的字节数来创建一个byte数组 byte[] bytes = new byte[encoder.GetByteCount(chars, 0, chars.Length, true)]; //将字符写入到byte数组中 encoder.GetBytes(chars, 0, chars.Length, bytes, 0, true); return bytes; } /// <summary> ///获取字符串解码之后的字符串 /// </summary> /// <param name="codeType">编码格式</param> /// <param name="byteCode">编码的字节数组</param> /// <returns></returns> private string GetDecodeBeforeText(string codeType, byte[] byteCode) { //根据编码类型构造该类型编码的解码器的实例 Decoder decoder = Encoding.GetEncoding(codeType).GetDecoder(); //计算对字节序列(从指定字节数组开始)进行解码所产生的字符数 char[] chars = new char[decoder.GetCharCount(byteCode, 0, byteCode.Length,true)]; //根据获取的解码所产生的字节数来创建一个char数组 int charLen = decoder.GetChars(byteCode, 0, byteCode.Length, chars, 0); StringBuilder strResult = new StringBuilder(); foreach (char c in chars) { strResult = strResult.Append(c.ToString()); } return strResult.ToString(); }
代码页 |
名称 |
显示名称 | |
---|---|---|---|
37 |
IBM037 |
IBM EBCDIC(美国 - 加拿大) |
|
437 |
IBM437 |
OEM 美国 |
|
500 |
IBM500 |
IBM EBCDIC(国际) |
|
708 |
ASMO-708 |
阿拉伯字符 (ASMO 708) |
|
720 |
DOS-720 |
阿拉伯字符 (DOS) |
|
737 |
ibm737 |
希腊字符 (DOS) |
|
775 |
ibm775 |
波罗的海字符 (DOS) |
|
850 |
ibm850 |
西欧字符 (DOS) |
|
852 |
ibm852 |
中欧字符 (DOS) |
|
855 |
IBM855 |
OEM 西里尔语 |
|
857 |
ibm857 |
土耳其字符 (DOS) |
|
858 |
IBM00858 |
OEM 多语言拉丁语 I |
|
860 |
IBM860 |
葡萄牙语 (DOS) |
|
861 |
ibm861 |
冰岛语 (DOS) |
|
862 |
DOS-862 |
希伯来字符 (DOS) |
|
863 |
IBM863 |
加拿大法语 (DOS) |
|
864 |
IBM864 |
阿拉伯字符 (864) |
|
865 |
IBM865 |
北欧字符 (DOS) |
|
866 |
cp866 |
西里尔字符 (DOS) |
|
869 |
ibm869 |
现代希腊字符 (DOS) |
|
870 |
IBM870 |
IBM EBCDIC(多语言拉丁语 2) |
|
874 |
windows-874 |
泰语 (Windows) |
|
875 |
cp875 |
IBM EBCDIC(现代希腊语) |
|
932 |
shift_jis |
日语 (Shift-JIS) |
|
936 |
gb2312 |
简体中文 (GB2312) |
* |
949 |
ks_c_5601-1987 |
朝鲜语 |
|
950 |
big5 |
繁体中文 (Big5) |
|
1026 |
IBM1026 |
IBM EBCDIC(土耳其拉丁语 5) |
|
1047 |
IBM01047 |
IBM 拉丁语 1 |
|
1140 |
IBM01140 |
IBM EBCDIC(美国 - 加拿大 - 欧洲) |
|
1141 |
IBM01141 |
IBM EBCDIC(德国 - 欧洲) |
|
1142 |
IBM01142 |
IBM EBCDIC(丹麦 - 挪威 - 欧洲) |
|
1143 |
IBM01143 |
IBM EBCDIC(芬兰 - 瑞典 - 欧洲) |
|
1144 |
IBM01144 |
IBM EBCDIC(意大利 - 欧洲) |
|
1145 |
IBM01145 |
IBM EBCDIC(西班牙 - 欧洲) |
|
1146 |
IBM01146 |
IBM EBCDIC(英国 - 欧洲) |
|
1147 |
IBM01147 |
IBM EBCDIC(法国 - 欧洲) |
|
1148 |
IBM01148 |
IBM EBCDIC(国际 - 欧洲) |
|
1149 |
IBM01149 |
IBM EBCDIC(冰岛语 - 欧洲) |
|
1200 |
utf-16 |
Unicode |
* |
1201 |
UnicodeFFFE |
Unicode (Big-Endian) |
* |
1250 |
windows-1250 |
中欧字符 (Windows) |
|
1251 |
windows-1251 |
西里尔字符 (Windows) |
|
1252 |
Windows-1252 |
西欧字符 (Windows) |
* |
1253 |
windows-1253 |
希腊字符 (Windows) |
|
1254 |
windows-1254 |
土耳其字符 (Windows) |
|
1255 |
windows-1255 |
希伯来字符 (Windows) |
|
1256 |
windows-1256 |
阿拉伯字符 (Windows) |
|
1257 |
windows-1257 |
波罗的海字符 (Windows) |
|
1258 |
windows-1258 |
越南字符 (Windows) |
|
1361 |
Johab |
朝鲜语 (Johab) |
|
10000 |
macintosh |
西欧字符 (Mac) |
|
10001 |
x-mac-japanese |
日语 (Mac) |
|
10002 |
x-mac-chinesetrad |
繁体中文 (Mac) |
|
10003 |
x-mac-korean |
朝鲜语 (Mac) |
* |
10004 |
x-mac-arabic |
阿拉伯字符 (Mac) |
|
10005 |
x-mac-hebrew |
希伯来字符 (Mac) |
|
10006 |
x-mac-greek |
希腊字符 (Mac) |
|
10007 |
x-mac-cyrillic |
西里尔字符 (Mac) |
|
10008 |
x-mac-chinesesimp |
简体中文 (Mac) |
* |
10010 |
x-mac-romanian |
罗马尼亚语 (Mac) |
|
10017 |
x-mac-ukrainian |
乌克兰语 (Mac) |
|
10021 |
x-mac-thai |
泰语 (Mac) |
|
10029 |
x-mac-ce |
中欧字符 (Mac) |
|
10079 |
x-mac-icelandic |
冰岛语 (Mac) |
|
10081 |
x-mac-turkish |
土耳其字符 (Mac) |
|
10082 |
x-mac-croatian |
克罗地亚语 (Mac) |
|
20000 |
x-Chinese-CNS |
繁体中文 (CNS) |
|
20001 |
x-cp20001 |
TCA 台湾 |
|
20002 |
x-Chinese-Eten |
繁体中文 (Eten) |
|
20003 |
x-cp20003 |
IBM5550 台湾 |
|
20004 |
x-cp20004 |
TeleText 台湾 |
|
20005 |
x-cp20005 |
Wang 台湾 |
|
20105 |
x-IA5 |
西欧字符 (IA5) |
|
20106 |
x-IA5-German |
德语 (IA5) |
|
20107 |
x-IA5-Swedish |
瑞典语 (IA5) |
|
20108 |
x-IA5-Norwegian |
挪威语 (IA5) |
|
20127 |
us-ascii |
US-ASCII |
* |
20261 |
x-cp20261 |
T.61 |
|
20269 |
x-cp20269 |
ISO-6937 |
|
20273 |
IBM273 |
IBM EBCDIC(德国) |
|
20277 |
IBM277 |
IBM EBCDIC(丹麦 - 挪威) |
|
20278 |
IBM278 |
IBM EBCDIC(芬兰 - 瑞典) |
|
20280 |
IBM280 |
IBM EBCDIC(意大利) |
|
20284 |
IBM284 |
IBM EBCDIC(西班牙) |
|
20285 |
IBM285 |
IBM EBCDIC(英国) |
|
20290 |
IBM290 |
IBM EBCDIC(日语片假名) |
|
20297 |
IBM297 |
IBM EBCDIC(法国) |
|
20420 |
IBM420 |
IBM EBCDIC(阿拉伯语) |
|
20423 |
IBM423 |
IBM EBCDIC(希腊语) |
|
20424 |
IBM424 |
IBM EBCDIC(希伯来语) |
|
20833 |
x-EBCDIC-KoreanExtended |
IBM EBCDIC(朝鲜语扩展) |
|
20838 |
IBM-Thai |
IBM EBCDIC(泰语) |
|
20866 |
koi8-r |
西里尔字符 (KOI8-R) |
|
20871 |
IBM871 |
IBM EBCDIC(冰岛语) |
|
20880 |
IBM880 |
IBM EBCDIC(西里尔俄语) |
|
20905 |
IBM905 |
IBM EBCDIC(土耳其语) |
|
20924 |
IBM00924 |
IBM 拉丁语 1 |
|
20932 |
EUC-JP |
日语(JIS 0208-1990 和 0212-1990) |
|
20936 |
x-cp20936 |
简体中文 (GB2312-80) |
* |
20949 |
x-cp20949 |
朝鲜语 Wansung |
* |
21025 |
cp1025 |
IBM EBCDIC(西里尔塞尔维亚 - 保加利亚语) |
|
21866 |
koi8-u |
西里尔字符 (KOI8-U) |
|
28591 |
iso-8859-1 |
西欧字符 (ISO) |
* |
28592 |
iso-8859-2 |
中欧字符 (ISO) |
|
28593 |
iso-8859-3 |
拉丁语 3 (ISO) |
|
28594 |
iso-8859-4 |
波罗的海字符 (ISO) |
|
28595 |
iso-8859-5 |
西里尔字符 (ISO) |
|
28596 |
iso-8859-6 |
阿拉伯字符 (ISO) |
|
28597 |
iso-8859-7 |
希腊字符 (ISO) |
|
28598 |
iso-8859-8 |
希伯来字符 (ISO-Visual) |
* |
28599 |
iso-8859-9 |
土耳其字符 (ISO) |
|
28603 |
iso-8859-13 |
爱沙尼亚语 (ISO) |
|
28605 |
iso-8859-15 |
拉丁语 9 (ISO) |
|
29001 |
x-Europa |
欧罗巴 |
|
38598 |
iso-8859-8-i |
希伯来字符 (ISO-Logical) |
* |
50220 |
iso-2022-jp |
日语 (JIS) |
* |
50221 |
csISO2022JP |
日语(JIS- 允许 1 字节假名) |
* |
50222 |
iso-2022-jp |
日语(JIS- 允许 1 字节假名 - SO/SI) |
* |
50225 |
iso-2022-kr |
朝鲜语 (ISO) |
* |
50227 |
x-cp50227 |
简体中文 (ISO-2022) |
* |
51932 |
euc-jp |
日语 (EUC) |
* |
51936 |
EUC-CN |
简体中文 (EUC) |
* |
51949 |
euc-kr |
朝鲜语 (EUC) |
* |
52936 |
hz-gb-2312 |
简体中文 (HZ) |
* |
54936 |
GB18030 |
简体中文 (GB18030) |
* |
57002 |
x-iscii-de |
ISCII 梵文 |
* |
57003 |
x-iscii-be |
ISCII 孟加拉语 |
* |
57004 |
x-iscii-ta |
ISCII 泰米尔语 |
* |
57005 |
x-iscii-te |
ISCII 泰卢固语 |
* |
57006 |
x-iscii-as |
ISCII 阿萨姆语 |
* |
57007 |
x-iscii-or |
ISCII 奥里雅语 |
* |
57008 |
x-iscii-ka |
ISCII 卡纳达语 |
* |
57009 |
x-iscii-ma |
ISCII 马拉雅拉姆语 |
* |
57010 |
x-iscii-gu |
ISCII 古吉拉特语 |
* |
57011 |
x-iscii-pa |
ISCII 旁遮普语 |
* |
65000 |
utf-7 |
Unicode (UTF-7) |
* |
65001 |
utf-8 |
Unicode (UTF-8) |
* |
65005 |
utf-32 |
Unicode (UTF-32) |
* |
65006 |
utf-32BE |
Unicode (UTF-32 Big-Endian) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步