C# 从文件中读取关键字并在没有结果的情况下搜索它们

C# 从文件中读取关键字并在没有结果的情况下搜索它们,c#,encoding,character,streamreader,C#,Encoding,Character,Streamreader,我使用C#代码读取keywords.txt。在那里,我存储了4-5种语言(希腊语、瑞典语、土耳其语等)的一些关键字和短语 然后我用这个 string comment = getText(rev, "comment="", """, out rev); if (comment.Contains(keywords[i].ToString())) { blah blah blah } 它能读英语单词,但不能读希腊语、土耳其语和特殊字符等。。我使用了默认编码

我使用C#代码读取keywords.txt。在那里,我存储了4-5种语言(希腊语、瑞典语、土耳其语等)的一些关键字和短语

然后我用这个

string comment = getText(rev, "comment="", """, out rev);
if (comment.Contains(keywords[i].ToString()))
{
    blah blah blah
}
它能读英语单词,但不能读希腊语、土耳其语和特殊字符等。。我使用了默认编码UTF8,没有结果。。我已将streamread的编码更改为unicode无结果。。 你有什么想法吗? 谢谢:D

更新:我发现问题出在getText获取注释时,而不是在我将关键字与注释进行比较时。。我将评论保存到一个文件中

string comment = getText(rev, "comment="", """, out rev);
                using (System.IO.StreamWriter file = new System.IO.StreamWriter("WriteText.txt", true))
    {
        file.WriteLine(comment);
    }
我得到了这种符号而不是希腊字母

ΑναίΟεση έκδοσης 4232870 Ξ±Ο€Ο Ο„ΞΏΞ½ 

通过一个小的研究和测试,我发现这是相同的希腊内容,编码设置为Windows 1253。。有没有办法控制getText使用的编码?

如果您的问题是因为关键字和注释是相似的字符串,但不相等(大写/小写,特定于区域性的单词),则必须使用另一个版本的compare:


其中最后一个参数比较选项类似于:IgnoreSymbles | IgnoreCase | IgnoreNonSpace

哪个部分不工作?它起作用了!尽管我正在搜索的关键词是存在的,但程序似乎无法理解它。。。它不仅与土耳其语单词搭配,还与希腊语、法语、捷克语、胡加里安语等搭配。。如果有一个特殊字符(αβω,ί,á,í,ř,ş,ş)在英语中不存在,那么我们有一个问题……您是否可能在
getText
中销毁
rev
。奇怪的用法:
getText(rev,…,out rev)用这种方式处理英语单词效果很好。。。你有什么特别的想法吗?关键字和评论看起来完全一样。。。但是我认为它们的编码是不同的,这就是为什么我的程序不能识别它们是相同的。。我正在测试希腊语单词,甚至是字符(比如“α”),但没有发现任何字符,尽管事实上有许多相同的例子。c#getText不是一个c#标准函数(至少,我不知道这个指令)。你能把这个函数的代码写出来吗?并将System.Text.Encoding.Unicode更改为UTF8!编码仅用于将信息保存到磁盘或从磁盘检索信息(必须以相同的编码写入和读取!),在内存中,以c#字符串的形式,信息存储在相同的编码中(我认为是UTF8)。我认为问题在于比较。你使用了我给你的Compare版本吗?我找到了一个蹩脚的解决方案。。我发现了我的程序是如何读取希腊语单词的(类似于这样的单词)―ΞΞ½Ξ±―ΞΞΞƒ·),我用这种单词进行比较。。而且成功了。。这是蹩脚的,你必须看到每一个字是如何写在这种奇怪的编码,但它的工作。。谢谢大家…我想这就是我的答案。。。请问,您能提供名称空间还是什么是实现?
ΑναίΟεση έκδοσης 4232870 Ξ±Ο€Ο Ο„ΞΏΞ½ 
public static int Compare(
    string strA,
    int indexA,
    string strB,
    int indexB,
    int length,
    CultureInfo culture,
    CompareOptions options