【问题标题】:UTF-8 to ANSI Conversion using C#使用 C# 将 UTF-8 转换为 ANSI
【发布时间】:2023-03-19 00:35:01
【问题描述】:

我是一名 .NET 开发人员,被要求做一个将 html 文件转换为 C# 中的 ANSI 的应用程序。

ANSI 是必需的,因为转换后的文件将在 Visual Fox Pro 应用程序上运行。

基本逻辑已准备就绪,问题出在转换本身。

我已经尝试过这段代码:http://social.msdn.microsoft.com/Forums/pt-BR/026ddda3-9bd1-4502-b445-e2a1cc88345d/convert-file-from-utf8-to-ansi?forum=csharplanguage,但是当我在 editplus 上检查它时,文件仍然没有转换为 ANSI,更糟糕的是,缩进完全搞砸了。

我应该做的是像editplus那样转换文件,它保留文档缩进并且可以将任何文件从UTF8转换为ANSI。

关键是我正在处理数百个 html 文件,所以我不能使用文本编辑器一个一个地完成。

如何进行转换?

有没有办法像editplus一样转换它并保留缩进?

对于特殊字符,例如:“ã、ão、é、í...”,我在转换之前对其进行更正。这是正确的方法吗?

【问题讨论】:

标签: c# utf-8 character-encoding codepages


【解决方案1】:

使用默认编码而不是 ASCII:

StreamReader sr = new StreamReader(infile);  
StreamWriter sw = new StreamWriter(outfile, false, Encoding.Default);  

// invoke the ReadToEnd method
sw.WriteLine(sr.ReadToEnd());  

sw.Close();  
sr.Close(); 

【讨论】:

  • 我没有预见到默认的是 ANSI 编码。非常感谢人。回答我的问题,这可能对将来的某人有所帮助:上面显示的方式不会损害缩进和格式。将 utf-8 转换为 ANSI 的最佳方法是在需要时先纠正重音符号,然后使用 Encoding.Default 进行正确转换。
  • 最好使用Dispose()方法而不是Close()方法。
  • 这个 Close 实现调用 Dispose 方法,传递一个真值。docs.microsoft.com/en-us/dotnet/api/…
猜你喜欢
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 2015-10-06
  • 2013-12-14
  • 2015-11-22
  • 2013-02-11
相关资源
最近更新 更多