【发布时间】:2021-10-22 08:44:18
【问题描述】:
我正在尝试读取一个文本文件并写入一个新的文本文件。输入文件可以是 ANSI 或 UTF-8。我不在乎输出编码是什么,但我想在写入时保留所有字符。这个怎么做?我是否需要获取输入文件的编码(似乎需要做很多工作)。
以下代码读取 ANSI 文件并将输出写入为 UTF-8,但有一些乱码“�”。
我正在寻找一种方法来读取文件,无论这两种编码中的哪一种都可以正确写入,而无需事先知道输入文件的编码。
File.WriteAllText(outputfile,File.ReadAllText(inputfilepath + @"\ST60_0.csv"));
请注意,此批处理命令读取一个 UTF-8 和 ANSI 文件并将输出写入为 ANSI 并保留所有字符,因此我希望在 C# 中执行此操作:
type ST60_0.csv inputUTF.csv > outputBASH.txt
【问题讨论】:
-
Do I need to get the input file's encoding- 不,你应该知道它。The following code reads ANSI file- 也就是 not what happens,它“尝试根据字节顺序标记的存在自动检测文件的编码”。 -
File.Copy 怎么样?还是我错过了什么?
-
@Steeeve 我需要将多个输入文件附加到输出文件中。
-
那也是not well defined。如果您的意思是它们是 ASCII(前 128 个 ASCII),那么您可以将它们全部视为 as UTF-8。从你得到问号的事实来看,它们不是,所以你应该在阅读它们时知道并正确指定编码。
-
问:有问题的文件是否有 BOM?问:你能告诉我们你的一个“?”的十六进制值?人物?问:您认为原始“ASCII”中的字符应该是什么?文本文件?请使用此信息更新您的帖子。
标签: c# windows encoding file-io