john1990_1 Ответов: 1

Почему, когда я читаю немецкий файл .txt с помощью streamreader, немецкие буквы теряются?


Может быть, сделать строку Unicode.

Аналогичная проблема с программой Google Translator, которую я нашел здесь, на CodeProject...

Что я уже пробовал:

using (StreamReader SR = new StreamReader(@"C:\Users\john\Dropbox\germanWords.txt"))
            {
                while (!string.IsNullOrWhiteSpace(s=SR.ReadLine()))
                {
                    try
                    {
                        l.Add(new ListOfWordsApp.FormMain.wordAndMeaning(
                            s.Substring(0, s.IndexOf("-")),
                           s.Substring(s.IndexOf("-") + 1)));
                    }
                    catch
                    {
                        MessageBox.Show(s);
                    }
                }
            }

Philippe Mori

Наиболее вероятная причина заключается в том, что вы должны указать, какая кодировка используется для вашего файла.

1 Ответов

Рейтинг:
6

OriginalGriff

Когда вы создаете StreamReader с помощью простейшего конструктора-предоставляющего только путь к файлу - он открывается по умолчанию в кодировке UTF8-если ваш текстовый файл не закодирован в UTF8, то маловероятно, что какие-либо "неанглийские" символы, такие как символы с умлаутом, будут подобраны правильно. Вы можете указать кодировку: Конструктор StreamReader (Поток, Кодировка) (System.IO)[^] но я бы начал с того, что хорошенько изучил ваши входные данные и их источник, прежде чем зашел слишком далеко, чтобы убедиться, что символы, которые вы ищете, еще не "испорчены".


john1990_1

Ссылка сложная, не могли бы вы сказать мне, что написать, чтобы сделать Unicode streamreader?
РЕДАКТИРОВАТЬ:
Я использовал:
using (StreamReader SR = new StreamReader (@"C:\Users\rabea\Dropbox\germanWords.txt", UnicodeEncoding.Юникод))

и сделал файл кодировкой Unicode, он работает.

очень много.