0

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

StreamReader sr = new StreamReader("keywords.txt", System.Text.Encoding.Unicode);
ArrayList keywords = new ArrayList();
while (!sr.EndOfStream)
{
    keywords.Add(sr.ReadLine());
}
sr.Close();

之后我用这个

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 使用的编码?

4

1 回答 1

0

如果您的问题是因为关键字和注释是相似的字符串但不相等(大写/小写,文化特定词),您必须使用另一个版本的比较:

http://msdn.microsoft.com/es-es/library/cc190529.aspx

public static int Compare(
    string strA,
    int indexA,
    string strB,
    int indexB,
    int length,
    CultureInfo culture,
    CompareOptions options

最后一个参数 CompareOptions 将类似于:IgnoreSymbols | 忽略大小写 | 忽略非空格

于 2013-08-18T18:08:40.223 回答