读书人

c# 编码转换有关问题

发布时间: 2012-11-08 08:48:11 作者: rapoo

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)是一个根目录时是不是后出现异常?

读书人网 >C#

热点推荐