2010-10-29 4 views
0

У меня есть следующий текст в файле ...Синтаксический и замена специальных символов из файла

blah blah ñ blah

Обратите внимание на символ ñ.

Я читаю это с StreamReader.ReadLine, а затем пробовал string.Replace для замены специального символа.

По какой-то причине это не работает, и похоже, что это связано с StreamReader. Когда я проверяю строку в отладчике после прочтения строки, я получаю эту форму окна, которую отображают текстовые редакторы, когда они не могут отобразить символ.

Попытка аналогичный непосредственно в коде прекрасно работает ...

int test = "helloñworld".IndexOf('ñ');

, поэтому я полагаю, что это должно быть StreamReader.

Любые идеи?

+0

Вы используете любую кодировку? См., Эта ссылка может помочь вам, поскольку она имеет дело с некоторым подобным: http://stackoverflow.com/questions/640242/file-encoding-when-reading-a-file-with-streamreader –

+0

Я имел в виду, он конкретно дает какие-либо конкретное кодирование? Не подразумеваемый, но явно указывающий. –

ответ

2

Создайте StreamReader с правильной кодировкой вашего текстового файла, используя либо конструктор StreamReader(Stream, Encoding), либо StreamReader(String, Encoding). Обычными кодировками в настоящее время являются Latin 1 или UTF-8.

+0

Как узнать, в какой кодировке находится мой текстовый файл? – fearofawhackplanet

+0

@fear: Я уверен, вы его сохранили. В зависимости от вашего редактора, который может быть чем угодно: от кодировки OEM (CP850 или 437), от латинского 1 до Unicode (UTF-8 или UTF-16). Я бы предположил, что CP1252 является наиболее вероятным вариантом. – Joey

+0

Нет, я не сохранил его, это экспорт из 20-летней базы данных. В любом случае, с проб и ошибок, похоже, UTF7 работает. – fearofawhackplanet

0

Установите правильное кодирование в перегруженном конструкторе Streamreader.

Надеется, что это помогает, Илье

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