Картинка ниже объясняет все:
альтернативный текст http://img133.imageshack.us/img133/4206/accentar9.png
Переменная textInput поступает из File.ReadAllText(path);, а такие символы, как: 'é è ..., не отображаются. Когда я запускаю свой UnitTest, все в порядке! Я их вижу ... Почему?





Я не знаю, почему он работает с NUnit, но я открываю файл с помощью NotePad ++ и вижу ANSI в формате. Теперь я перешел на UTF-8, и он работает.
Мне все еще интересно, почему он работал с NUnit, а не в консоли? но, по крайней мере, сейчас это работает.
Обновлять Я не понимаю, почему я проголосовал за этот вопрос и в этом ответе, потому что вопрос все еще хорош, почему в консоли я не могу прочитать файл ANSI, но в NUNit я могу?
Я не добавлял информацию, пока меня не проголосовали против. Я нашел некоторую новую информацию для публикации.
Классы .NET (System.IO.StreamReader и подобные) принимают UTF-8 в качестве кодировки по умолчанию. Если вы хотите прочитать другую кодировку, вы должны явно передать это в соответствующую перегрузку конструктора.
Также обратите внимание, что не существует единой кодировки под названием «ANSI». Вы, вероятно, имеете в виду кодовую страницу Windows 1252, известную как «западноевропейская». Обратите внимание, что это отличается от кодировки Windows по умолчанию в других странах. Это актуально, когда вы пытаетесь использовать System.Text.Encoding.Default, потому что на самом деле он отличается от системы к системе.
/ Обновлено: Кажется, вы неправильно поняли мой ответ и мой комментарий:
Итак, наконец: решением вашей проблемы должен быть следующий код:
string text = System.IO.File.ReadAllText("path", Encoding.GetEncoding(1252));
Важной частью здесь является использование соответствующего экземпляра System.Text.Encoding.
Однако это предполагает, что ваша кодировка действительно является Windows-1252 (но я считаю, что Notepad ++ означает «ANSI»). Я понятия не имею, почему ваш текст отображается правильно при чтении NUnit. Я предполагаю, что NUnit либо имеет какое-то автоматическое обнаружение текстовых кодировок, либо NUnit использует какие-то странные значения по умолчанию (т.е. не UTF-8).
Да, и между прочим: «ANSI» на самом деле относится к «Американскому национальному институту стандартов». Существует множество совершенно разных стандартов, в названиях которых есть «ANSI». Например, C++ (среди прочего) также является стандартом ANSI.
Только в некоторых контекстах он (неточно) используется для обозначения кодировок Windows. Но даже здесь, как я пытался объяснить, это обычно относится не к кодировке специфический, а к классу кодировок, которые Windows использует по умолчанию для разных стран. Одна из них - Windows-1252.
Формат Ansi в Notepad ++: img359.imageshack.us/img359/9194/ansinz4.png И в Wiki: en.wikipedia.org/wiki/ASCII и en.wikipedia.org/wiki/ANSI_escape_code
Помимо того, что все эти ссылки относятся к вещам, первое изображение (показывающее Notepad ++) - это просто неточное использование этого слова в контексте. Вероятно, они имеют в виду то же самое, что и кодировка .NET Default, а именно кодовая страница по умолчанию текущей системы, а не одна конкретная кодировка.
Я показываю вам, что Notepad ++ показывает мне, что его не было в UTF8 ... и вы говорите мне, что ANSI не существует, когда он ложен из многих источников. Я провел свое исследование, и я должен вам. Но ты все еще не понимаешь меня? Я не мастер кодирования и должен понимать все, что вы делаете. А
По крайней мере, я пытаюсь решить свою проблему. NUNIT и консольное приложение находятся на ОДНОМ компьютере, поэтому я не понимаю, почему вы сказали мне ответ с системой на систему. Кодировка файла одинакова для обоих, и оба открыты с кодировкой загрузки по умолчанию Net. Итак, ваш ответ не лучше моего
Я рад, что вы нашли время, чтобы попытаться мне помочь. Но если вы считаете мой вопрос глупым, просто не размещайте что-либо. Кто-то другой сочтет это хорошим и поможет мне.
Попробуйте установить кодовую страницу вывода консоли с помощью команды chcp. Кодовые страницы, поддерживаемые окнами, - это здесь, здесь и здесь. Помните, что в принципе консоль довольно проста: она отображает символы UNCICODE или DBCS, используя кодовую страницу для определения глифа, который будет отображаться.
Пока вы просто добавляете информацию к исходному вопросу, не добавляйте ответ. Просто отредактируйте исходный вопрос. Это может объяснить некоторые отрицательные голоса.