110,536
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication238
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Byte[] Bytes ={ 0x30, 0x80 };
foreach (EncodingInfo EI in Encoding.GetEncodings())
MessageBox.Show("CodePage: " + EI.CodePage + Environment.NewLine
+ "DisplayName: " + EI.DisplayName + Environment.NewLine
+ "String: " + EI.GetEncoding().GetString(Bytes));
}
}
}
private void TestStringBytes() {
string s = "C#语言";
byte[] b1 = System.Text.Encoding.Default.GetBytes(s);
byte[] b2 = System.Text.Encoding.Unicode.GetBytes(s);
string t1 = "", t2 = "";
foreach (byte b in b1) {
t1 += b.ToString("") + " ";
}
foreach (byte b in b2) {
t2 += b.ToString("") + " ";
}
this.textBox1.Text = "";
this.textBox1.AppendText("b1.Length = " + b1.Length + "\n");
this.textBox1.AppendText(t1 + "\n");
this.textBox1.AppendText("b2.Length = " + b2.Length + "\n");
this.textBox1.AppendText(t2 + "\n");
}
运行结果如下,不说详述,相信已经明白了。
b1.Length = 6
67 35 211 239 209 212
b2.Length = 8
67 0 35 0 237 139 0 138
将C#字节数组转换成字符串,使用 Encoding 类的 string GetString(byte[]) 或 string GetString(byte[], int, int) 方法,具体使用何种 Encoding 还是由编码决定。在 TestStringBytes() 函数中添加如下语句作为实例:
byte[] bs = {97, 98, 99, 100, 101, 102};
string ss = System.Text.Encoding.ASCII.GetString(bs);
this.textBox1.AppendText("The string is: " + ss + "\n");
运行结果为:The string is: abcdef
//System.Text.Encoding
EncodingInfo GETEncodingInfo(string encoding_name)
{
Dictionary<string, EncodingInfo> EncodingInfoDictionary = new Dictionary<string, EncodingInfo>();
EncodingInfo[] eis = Encoding.GetEncodings();
foreach (EncodingInfo ei in eis)
{
Trace.WriteLine(ei.Name + "," + ei.DisplayName + "," + ei.CodePage);
/*跳过一个重名
iso-2022-jp,日语(JIS),50220
csISO2022JP,日语(JIS-允许 1 字节假名),50221
iso-2022-jp,日语(JIS-允许 1 字节假名 - SO/SI),50222
*/
if (ei.CodePage == 50222) continue;
EncodingInfoDictionary.Add(ei.Name, ei);
}
return EncodingInfoDictionary[encoding_name];//如果编码名不在字典集合,会报异常,
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(Encoding.GetEncoding(GETEncodingInfo("gb2312").CodePage).EncodingName);
}