C# 学习笔记 字符串编码转换
本帖最后由 Cool_Breeze 于 2021-3-30 18:22 编辑using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
class FR
{
static void Main(){
string path = @"D:\GIN\c#\Exercise\笔记2.txt";
string path2 = @"D:\GIN\c#\Exercise\测试.txt";
// string path1 = @"D:\GIN\c#\Exercise\笔记2.txt";
// 检查文件是否存在
if (File.Exists(path)){
Console.WriteLine("文件已经存在:" + path);
/* 异常处理语句
if (!File.Exists(path1)){
try{
// 复制文件
File.Copy(path, path1);
}
catch (IOException e){
// 输出错误信息
Console.WriteLine(e);
}
finally{
// 覆盖原有文件
File.Copy(path, path1, true);
// 加密文件
// File.Encrypt(path1);
}
} */
// 创建一个指定编码的空文件
StreamWriter test = new StreamWriter(path2, false, Encoding.GetEncoding("GB2312"));
// 写入文件
foreach (string line in File.ReadLines(path)){
// Console.WriteLine(line);
test.WriteLine(UTF8ConvertGB2312(line, "utf-8", "GB2312"));
}
}
Console.WriteLine("Done");
Console.ReadLine();
}
static string UTF8ConvertGB2312(string str, string srcCoding, string desCoding){
// 将字符串按指定编码,解码成字节数组
byte[] barr = Encoding.GetEncoding(srcCoding).GetBytes(str);
// 将解码好的字节数组,按原编码转换为指定编码的字节数组;
barr = Encoding.Convert(Encoding.GetEncoding(srcCoding), Encoding.GetEncoding(desCoding), barr);
// 将转换好的字节数组,按指定编码,解码为字符串!
return Encoding.GetEncoding(desCoding).GetString(barr);
}
static string GB2312ConvertUTF8(string str){
// 将字符串按指定编码,解码成字节数组
byte[] barr = Encoding.GetEncoding("GB2312").GetBytes(str);
// 将解码好的字节数组,按原编码转换为指定编码的字节数组;
barr = Encoding.Convert(Encoding.GetEncoding("GB2312"), Encoding.GetEncoding("utf-8"), barr);
// 将转换好的字节数组,按指定编码,解码为字符串!
return Encoding.GetEncoding("utf-8").GetString(barr);
}
}# 文件编码转换
## 打开文件
使用 **using** 可以自动释放文件资源
```c#
using (StreamReader fsRead = new StreamReader(FileName, Encoding.UTF8)){操作文件}
```
## 打开指定编码文件
```c#
using (StreamReader fsRead = new StreamReader(FileName, Encoding.UTF8)){}
```
### ReadLine
不包含换行符 **\r\n** **\n**
## 写入指定编码文件
**false** 覆盖文件 **true** 追加文件
```c#
using (StreamWriter fsWrite = new StreamWriter(NewFileName, false, GBK))
```
### Write
记得添加换行符 **\r\n** **\n**
## 完整代码
```c#
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string strLine;
string FileName = "ReGex.txt";
string NewFileName = "NewReGex.txt";
Encoding GBK = Encoding.GetEncoding(936);
using (StreamReader fsRead = new StreamReader(FileName, Encoding.UTF8))
{
using (StreamWriter fsWrite = new StreamWriter(NewFileName, false, GBK))
{
do
{
strLine = fsRead.ReadLine();
if (strLine == null) break;
fsWrite.Write(strLine + "\r\n");
}while(true);
}
}
Console.WriteLine("完成");
Console.ReadKey();
}
}
```
页:
[1]