【发布时间】:2018-12-13 03:55:25
【问题描述】:
我的问题是我想解析一个文件,它必须检测一个特殊的字符 ('Â') 来做一些事情。我没有设法检测到它,但它适用于像“a”这样的普通字符。 所以我试图了解问题出在哪里,并创建了一个 .txt 文件,其唯一的字符是 'Â'。
string a = File.ReadAllText("C:/example/example/test.txt");
Console.WriteLine(a.Length);`
控制台打印 0。就像 char 不存在一样。所以我尝试了不同的编码(使用 utf8、utf16、unicode 等的 File.ReadAllText)并得到了相同的结果。
我真的不知道该怎么办,提前谢谢!
【问题讨论】:
-
您的代码没有问题。你确定你读的是正确的文件吗?
-
我会尝试一些
encoding与此重载 File.ReadallText -
如果您确定您确实在读取正确的文本文件并且问题仍然存在,那么首先检查该文件的文件大小。如果文件大小不为零,则使用十六进制查看器/十六进制编辑器并查看文本文件中的字节。你看到了什么?
-
请显示文件的二进制内容 - 如果你使用
byte[] data = File.ReadAllBytes(...);然后Console.WriteLine(BitConverter.ToString(data));那会显示什么? -
'Â' 字符相当特殊,您经常会在 utf-8 编码的文本文件中看到它。与其他重音 A 字符一样,0xC0 及以上是此类文件中的常见字节,当它以拉丁字母对文本进行编码时。在 StreamReader 应用了它的 Encoding 之后,它将不再是 'Â'。预期返回值 0,这样的字符需要超过 1 个字节来编码。所以你要做的第一件事就是确保你没有因为错误的原因寻找那个角色。
标签: c# file.readalllines