无法将文本文件中的土耳其字符读取到字符串数组中

时间:2016-04-05 00:28:50

标签: c# string character-encoding text-files

我正在尝试在土耳其语中进行某种句子处理,我正在使用文本文件作为数据库。但我无法从文本文件中读取土耳其语字符,因为我无法正确处理数据。

string[] Tempdatabase = File.ReadAllLines(@"C:\Users\dialogs.txt");
textBox1.Text = Tempdatabase[5];

输出:

3 个答案:

答案 0 :(得分:5)

这可能是编码问题。尝试使用土耳其语code page identifiers之一。

var Tempdatabase =
    File.ReadAllLines(@"C:\Users\dialogs.txt", Encoding.GetEncoding("iso-8859-9"));

答案 1 :(得分:2)

该文件包含特定土耳其语字符集中的文本,而不是Unicode。如果您没有指定任何其他行为,.net将在从文本文件中读取文本时采用Unicode文本。您有两种可能的解决方案:

使用外部文本编辑器更改文本文件以使用Unicode(例如utf8)。

或者指定要读取的特定字符集,例如:

string[] Tempdatabase = File.ReadAllLines(@"C:\Users\dialogs.txt", Encoding.Default);

这将使用Windows系统的本地字符集。

string[] Tempdatabase = File.ReadAllLines(@"C:\Users\dialogs.txt", Encoding.GetEncoding("Windows-1254");

这将使用Microsoft定义的土耳其语字符集。

答案 2 :(得分:2)

您可以随意使用Encoding。这可能最终会产生预期的结果,但请记住,这可能不适用于其他文件。

通常,C#默认使用Unicode处理字符串和文件。所以除非你真的需要别的东西,否则你应该试试这个:

在记事本(或任何其他程序)中打开文本文件,并将其另存为 UTF-8 文件。然后,您应该在代码中没有任何修改的情况下获得预期的结果。这是因为C#使用您保存的编码读取文件。这是默认行为,应该是首选。

当您将文本文件保存为UTF-8时,C#将对其进行解释。

这也适用于Visual Studio中的.html文件,如果您发现它们显示不正确(使用ASCII解析)

saveas