尝试使用C#从文件中读取意大利文时,我遇到了一些问题。
//actual text in the file - può darsi che tu riesca
string sampleItalianText = "può";
string contents = File.ReadAllText(filepath);
bool hasMatch = contents.Contains(sampleItalianText);
//hasMatch is always false because contents has a strange symbol in place of ò
我试过
File.ReadAllText(filepath, Encoding.GetEncoding(1144); //IBM EBCDIC (Italy-Euro)
但到目前为止没有运气。
最终,当有匹配时,我必须将翻译后的文本(使用其他语言)写回同一文件。
用于解决此问题的正确编码是什么?或者除了ReadAllText()
之外还有其他方法吗?
答案 0 :(得分:3)
在读取文件之前,您必须知道编码。 File.ReadAllText(string)
将尝试检测编码,这完全不可靠。如果可以,可以读写UTF-8,因为.NET中的默认设置都使用UTF-8,您将避免使用不同语言的系统之间的转换问题。
西方系统上下一个最受欢迎的编码是Windows-1252,因此通常,如果文件未编码为UTF-8,则编码为Windows-1252。您也可以使用Encoding.Default
来读取文件,如果您知道它们是在本地创建的,但请不要用它来写文件。