c# 编码转换问题

fenix011 2012-10-13 07:34:57
我想 实现的目的是把记事本中的 中文两格符号 "’"替换成 英文符号"'" 代码如下


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);

都不行

希望大家指点。。谢谢!
...全文
108 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenix011 2012-10-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

还有就是习惯使用Path.Combine来获取路径而不是自己使用字符串拼接路径,避免错误。如你的代码中当前目录(Environment.CurrentDirectory)是一个根目录时是不是后出现异常?
[/Quote]

哦 这个问题不大。。我是指定了目录的 这里是随便列的 。。关键问题是 输出的新文本被替换的字符无法正常显示
谢谢!
Jia_H 2012-10-13
  • 打赏
  • 举报
回复
还有就是习惯使用Path.Combine来获取路径而不是自己使用字符串拼接路径,避免错误。如你的代码中当前目录(Environment.CurrentDirectory)是一个根目录时是不是后出现异常?
Jia_H 2012-10-13
  • 打赏
  • 举报
回复
StreamReader读取文件时就需要指定一下编码格式,否则读出来的时候已经是错误的内容了。有没有打个断点看看读出来的内容对不对?

来自MSDN中的内容:
除非另外指定, StreamReader 的默认编码为 UTF-8,而不是当前系统的 ANSI 代码页。

对应的保存文件时也指定一下编码格式。

110,643

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧