2013-08-18 3 views
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

UPDATE: Я обнаружил, что проблема, когда 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 использует?

+0

Какая часть не работает? –

+0

Входит в игру! [Турецкая проблема] (http://thinkingcsharp.blogspot.com/2009/01/turkish-i-problem-why-my-application.html) – Jonesopolis

+0

Несмотря на то, что ключевые слова, которые я ищу, существуют, программа не как представляется, в состоянии понять это ... Это не только с турецкими словами, но и с греческими, frence, чехи, hugarian и т. д. Если есть специальный символ (αβω, t, á, í, ř, ğ, ş), который не существует на английском языке, тогда у нас есть проблема ... –

ответ

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 | IgnoreCase | IgnoreNonSpace

+0

Ключевое слово и комментарий кажутся точно такими же ... Но я думаю, что есть разница в их кодировке, и именно поэтому моя программа не распознает их как то же самое .. Я тестирую греческие слова или даже символы (скажем, «α») и не находит никаких, несмотря на то, что существует много исключений. –

+0

C# getText не является стандартной функцией C# (по крайней мере, я не знаю об этой инструкции). Можете ли вы поместить код этой функции? И измените System.Text.Encoding.Unicode на UTF8! – user149113

+0

Кодирование только для сохранения и извлечения информации на диск с диска (должно быть записано и прочитано в той же кодировке!), В памяти, в строке C#, информация хранится в той же кодировке (я думаю, UTF8). Я думаю, что проблема - это сравнение. Вы использовали версию сравнения, которую я вам дал? – user149113

Смежные вопросы