我创建了一个示例应用程序来加载所有特殊字符,同时将粘贴从Openoffice编写器复制到记事本。双重代码不同,当我尝试加载时。
var lines = File.ReadAllLines("..\\ter34.txt");
这会产生65533问题的问题,文本文件包含:
“
这已更改为符号:
�
答案 0 :(得分:22)
U+FFFD是“Unicode替换字符”,如果您尝试读取的数据对于用于将二进制数据转换为文本的编码无效,则使用该字符。
例如,如果你使用ISO-8859-1编写一个文件,但是然后尝试使用UTF-8 读取,那么你很容易就会得到一些简单的字节序列没有效的UTF-8。每个无效字节将被转换(默认情况下)为U + FFFD。
基本上,您需要为File.ReadAllLines
提供正确的编码,作为第二个参数。这意味着您首先需要知道文件的编码。