c# 编码转换问题
我想 实现的目的是把记事本中的 中文两格符号 "’"替换成 英文符号"'" 代码如下
DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\test");
FileInfo[] fiArr = di.GetFiles();
MessageBox.Show("找到" + fiArr.Length.ToString() + "个文件");
string strcomt;
for (int i = 0; i < fiArr.Length; i++)
{
StreamReader sr = new StreamReader(Environment.CurrentDirectory + "\\test\\" + fiArr[i].Name);
strcomt = sr.ReadToEnd().Replace("’", "'");
sr.Close();
StreamWriter sw1 = new StreamWriter(Environment.CurrentDirectory + "\\test\\spun\\" + fiArr[i].Name);
sw1.WriteLine(strcomt);
sw1.Close();
但是结果 新生成的 记事本中 无法显示 新的符号 变成了黑色小块。。。
我尝试把写入的 代码改为以下
StreamWriter sw1 = new StreamWriter(Environment.CurrentDirectory + "\\test\\spun\\" + fiArr[i].Name, false, System.Text.Encoding.Unicode);
StreamWriter sw1 = new StreamWriter(Environment.CurrentDirectory + "\\test\\spun\\" + fiArr[i].Name, false, System.Text.Encoding.UTF8);
都不行
希望大家指点。。谢谢!
------解决方案--------------------
StreamReader读取文件时就需要指定一下编码格式,否则读出来的时候已经是错误的内容了。有没有打个断点看看读出来的内容对不对?
来自MSDN中的内容:
除非另外指定, StreamReader 的默认编码为 UTF-8,而不是当前系统的 ANSI 代码页。
对应的保存文件时也指定一下编码格式。
------解决方案--------------------还有就是习惯使用Path.Combine来获取路径而不是自己使用字符串拼接路径,避免错误。如你的代码中当前目录(Environment.CurrentDirectory)是一个根目录时是不是后出现异常?