如果文件中都是文本(没有二进制数据),那么大致地可以写类似这样的转换var tmp = Path.GetTempFileName(); string s; using (var fr = File.OpenRead(path)) using (var rd = new StreamReader(fr, Encoding.GetEncoding("gb2312"))) using (var fw = File.OpenWrite(tmp)) using (var wt = new StreamWriter(fw, Encoding.UTF8)) { while (!rd.EndOfStream) wt.WriteLine(rd.ReadLine()); if (!rd.EndOfStream) wt.Write(rd.ReadToEnd()); } File.Move(tmp, path);
当然,如果文件很小,占用内存很少,你可以写成var data = File.ReadAllBytes(path); data = Encoding.UTF8.GetBytes(Encoding.GetEncoding("gb2312").GetString(data)); File.WriteAllBytes(path, data);
还有GB2312 转utf8的代码 好神奇的样子
if (radioButton1.Checked == true) { toolStripProgressBar1.Maximum = listView1.Items.Count; toolStripProgressBar1.Maximum = 0; for (int i = 0; i < listView1.Items.Count; i++) { ///GB2312转换UTF8 string path = listView1.Items[i].SubItems[1].Text.ToString(); var data = File.ReadAllBytes(path); data = Encoding.UTF8.GetBytes(Encoding.GetEncoding("gb2312").GetString(data)); File.WriteAllBytes(path, data); toolStripProgressBar1.Value = i + 1; } } else { for (int i = 0; i < listView1.Items.Count; i++) { ///UTF8转换GB2312 string path = listView1.Items[i].SubItems[1].Text.ToString(); var data = File.ReadAllBytes(path); data = Encoding.GetEncoding("gb2312").GetBytes(Encoding.UTF8.GetString(data)); File.WriteAllBytes(path, data); toolStripProgressBar1.Value = i + 1; } } 谢谢
/// <summary>
/// GB2312转换成UTF8
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string gb2312_utf8(string text)
{
//声明字符集
System.Text.Encoding utf8, gb2312;
//gb2312
gb2312 = System.Text.Encoding.GetEncoding("gb2312");
//utf8
utf8 = System.Text.Encoding.GetEncoding("utf-8");
byte[] gb;
gb = gb2312.GetBytes(text);
gb = System.Text.Encoding.Convert(gb2312, utf8, gb);
//返回转换后的字符
return utf8.GetString(gb);
} /// <summary>
/// UTF8转换成GB2312
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string utf8_gb2312(string text)
{
//声明字符集
System.Text.Encoding utf8, gb2312;
//utf8
utf8 = System.Text.Encoding.GetEncoding("utf-8");
//gb2312
gb2312 = System.Text.Encoding.GetEncoding("gb2312");
byte[] utf;
utf = utf8.GetBytes(text);
utf = System.Text.Encoding.Convert(utf8, gb2312, utf);
//返回转换后的字符
return gb2312.GetString(utf);
}
string s;
using (var fr = File.OpenRead(path))
using (var rd = new StreamReader(fr, Encoding.GetEncoding("gb2312")))
using (var fw = File.OpenWrite(tmp))
using (var wt = new StreamWriter(fw, Encoding.UTF8))
{
while (!rd.EndOfStream)
wt.WriteLine(rd.ReadLine());
if (!rd.EndOfStream)
wt.Write(rd.ReadToEnd());
}
File.Move(tmp, path);
data = Encoding.UTF8.GetBytes(Encoding.GetEncoding("gb2312").GetString(data));
File.WriteAllBytes(path, data);
好神奇的样子
if (radioButton1.Checked == true)
{
toolStripProgressBar1.Maximum = listView1.Items.Count;
toolStripProgressBar1.Maximum = 0;
for (int i = 0; i < listView1.Items.Count; i++)
{
///GB2312转换UTF8
string path = listView1.Items[i].SubItems[1].Text.ToString();
var data = File.ReadAllBytes(path);
data = Encoding.UTF8.GetBytes(Encoding.GetEncoding("gb2312").GetString(data));
File.WriteAllBytes(path, data);
toolStripProgressBar1.Value = i + 1;
}
}
else
{
for (int i = 0; i < listView1.Items.Count; i++)
{
///UTF8转换GB2312
string path = listView1.Items[i].SubItems[1].Text.ToString();
var data = File.ReadAllBytes(path);
data = Encoding.GetEncoding("gb2312").GetBytes(Encoding.UTF8.GetString(data));
File.WriteAllBytes(path, data);
toolStripProgressBar1.Value = i + 1;
}
}
谢谢