将大文本文件从特定字符集转换为UTF8

时间:2012-05-08 15:33:03

标签: c# text encoding character-encoding io

我需要使用最小的内存量将非常大的文本文件(通常超过100 MB)的字符编码“windows-1252”转换为UTF8。

任何人都知道最快/最低内存开销的方式是什么?

我假设有一些非常快速的StreamReader / StreamWriter组合!

感谢

2 个答案:

答案 0 :(得分:3)

如果您不希望通过

分配您在其中运行的所有数据
  • 首先使用带有"windows-1252"
  • 的StreamReader阅读它
  • 在同一次迭代中使用StreamWriter编写,并使用指定的UTF-8

答案 1 :(得分:2)

Encoding.Convert方法在byte[]上运行 - 您可以使用一个小缓冲区调用它,从原始文件读取然后写入新文件。如果原始文件使用可变字节编码,则需要非常小心地只读取字符边界上的缓冲区(如果可能)。

这将根据您的意愿使用尽可能多的内存 - 具体取决于您选择的缓冲区大小。