12

我创建了一个示例应用程序来加载所有特殊字符,同时从 Openoffice 编写器复制粘贴到记事本。双码不同,当我尝试加载它时。

var lines = File.ReadAllLines("..\\ter34.txt");

这会产生 65533 问题,文本文件包含:

这已更改为符号:

4

1 回答 1

26

U+FFFD是“Unicode 替换字符”,如果您尝试读取的数据对于用于将二进制数据转换为文本的编码无效,则使用该字符。

例如,如果您使用 ISO-8859-1 写出一个文件,然后尝试使用 UTF-8读取它,那么您很容易得到一些根本不是有效 UTF-8 的字节序列。每个无效字节都会(默认)翻译成 U+FFFD。

基本上,您需要为File.ReadAllLines, 作为第二个参数提供正确的编码。当然,这意味着您首先需要知道文件的编码。

于 2013-02-22T10:48:18.670 回答