gpt4 book ai didi

c# - 无法识别文本文件中的字符(如 € ² µ)

转载 作者:行者123 更新时间:2023-11-30 16:20:06 25 4
gpt4 key购买 nike

我有一个包含以下内容的文本文件:

A B C D Ä 1 4 0 $ % & € / [ ) = ß ² µ §

如果你问我关于编码的问题——我不知道。如果我用 Notepad++ 打开它,我会在编码菜单中看到 Encoding in ANSI

我想阅读这个文件,并正确识别每个字符。作为代码,我有这个:

//open and locking the file
using (FileStream fs = File.Open(@"C:\testfile.txt", FileMode.Open, FileAccess.Read, FileShare.None))
{
using (TextReader reader = new StreamReader(fs))
{
string line;
//reading and printing each line
while ((line = reader.ReadLine()) != null)
{
System.Console.WriteLine(line);
}
}
}

作为输出我得到: enter image description here

所以对于 Ä € ß ² µ § 我得到一个 ?。这就是为什么我认为这是因为控制台的原因,所以将其更改为 UTF8,这样我也许可以获得更好的输出。但这并没有真正的帮助。

System.Console.OutputEncoding = System.Text.Encoding.UTF8;

enter image description here

这就是为什么我认为在读取文件时有问题。我可能应该更改 StreamReader 的编码。但是没有那么多选择。我正在尝试使用 UTF8、ASCII,但没有用。有什么想法吗?

编辑:谢谢 Matthew,将 System.Text.Encoding.Default 添加到 StreamReader 很有帮助。现在只有 char 无法识别。不明白,有些字符是“特殊”的吗?

Edit2:好吧, 只是个问题,因为控制台有问题(?)。如果我在 Debug模式下查看字符串, 也没有问题。

所以现在对我来说可行的解决方案是:

1.) 使用默认编码的阅读器:

using (TextReader reader = new StreamReader(fs, System.Text.Encoding.Default))

2.) 不使用控制台输出,只是在 Debug模式下读取字符串

最佳答案

如果你使用的是 ANSI,你可以这样做:

using (TextReader reader = new StreamReader(fs, System.Text.Encoding.Default))

但是,只有当您当前的代码页对于您正在阅读的文件来说是正确的时,它才会起作用。它可能会,但为了完全的可移植性,您应该确定您正在使用和使用的实际代码页:

using (TextReader reader = new StreamReader(fs, new System.Text.Encoding(codePageNumber)))

其中 codePageNumber 是文本文件的代码页。

关于c# - 无法识别文本文件中的字符(如 € ² µ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708782/

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