【发布时间】:2013-08-18 16:36:24
【问题描述】:
我使用这段 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 获取评论时,而不是当我将关键字与评论进行比较时。我将 cmets 保存到文件中
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 使用的编码?
【问题讨论】:
-
哪个部分不工作?
-
它开始起作用了! The Turkish Problem
-
尽管我正在搜索的关键字存在,但程序似乎无法理解它......不仅是土耳其语,还有希腊语,法语,捷克语,匈牙利语等等。如果有一个特殊字符(αβω、ί、á、í、ř、ğ、ş)在英语中不存在,那么我们就有问题了......
-
是否可以销毁
getText中的rev。奇怪的用法:getText(rev, ... , ... , out rev); -
这种方式可以很好地处理英文单词...你有什么特别的想法吗?
标签: c# encoding character streamreader