gpt4 book ai didi

.net - 保留文本文件编码(ASCII、UTF-8、UTF-16)

转载 作者:行者123 更新时间:2023-12-04 06:13:45 24 4
gpt4 key购买 nike

我有一个用 C# 编写的简单文本文件处理工具,框架如下所示:

    using (StreamReader reader = new StreamReader(absFileName, true)) // auto detect encoding
using (StreamWriter writer = new StreamWriter(tmpFileName, false, reader.CurrentEncoding)) // open writer with the same encoding as reader
{
string line;
while ((line = reader.ReadLine()) != null)
{
// do something with line
writer.WriteLine(line);
}
}

它操作的大多数文件都是 ASCII 文件,偶尔会出现 UTF-16。我想保留文件编码,新创建的文件应该与正在读取的文件具有相同的编码 - 这就是我使用阅读器的 CurrentEncoding 打开 StreamWriter 的原因。

我的问题是某些 UTF-16 文件缺少前导码,并且在打开 StreamReader 后,它的 CurrentEncoding 设置为 UTF-8,这会导致编写器以 UTF-8 模式打开。调试时,我可以看到读取器在第一次调用 ReadLine 后将其 CurrentEncoding 属性更改为 UTF-16,但此时写入器已经打开。

我可以想到一些解决方法(稍后打开编写器或两次查看源文件 - 第一个只是为了检测编码),但我想我会先征求专家的意见。请注意,我不关心 ASCII 文件的代码页,我只关心 ASCII/UTF-8/UTF-16 编码。

最佳答案

我会尝试做一个 reader.Peek()在打开作家之前 - 我认为这对你来说应该足够了。

关于.net - 保留文本文件编码(ASCII、UTF-8、UTF-16),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com