正确的编码用于从文本文件中读取意大利语字符

时间:2014-10-21 12:46:06

标签: c# .net multilingual

尝试使用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()之外还有其他方法吗?

1 个答案:

答案 0 :(得分:3)

在读取文件之前,您必须知道编码。 File.ReadAllText(string)将尝试检测编码,这完全不可靠。如果可以,可以读写UTF-8,因为.NET中的默认设置都使用UTF-8,您将避免使用不同语言的系统之间的转换问题。

西方系统上下一个最受欢迎的编码是Windows-1252,因此通常,如果文件未编码为UTF-8,则编码为Windows-1252。您也可以使用Encoding.Default来读取文件,如果您知道它们是在本地创建的,但请不要用它来写文件。