преобразование ANSI в Unicode - PullRequest
1 голос
/ 31 мая 2011

При разборе определенных документов я получаю код символа 146, который на самом деле является номером ANSI.При записи символа в текстовый файл ничего не отображается.Если мы напишем символ как Unicode-номер 8217, символ будет отображаться нормально.

Может кто-нибудь дать мне совет о том, как преобразовать номер ANSI 146 в Unicode 8217 в C #.

ссылка:http://www.alanwood.net/demos/ansi.html

Спасибо

Ответы [ 2 ]

8 голосов
/ 31 мая 2011

«ANSI» на самом деле неверно - существует много кодировок, часто называемых «ANSI».Однако, если вы уверены, что вам нужна кодовая страница 1252, вы можете использовать:

Encoding encoding = Encoding.GetEncoding(1252);
using (TextReader reader = File.OpenText(filename, encoding))
{
    // Read text and use it
}

или

Encoding encoding = Encoding.GetEncoding(1252);
string text = File.ReadAllText(filename, encoding);

Это для чтения файла - записифайл та же идея.Обычно при преобразовании двоичного файла (например, содержимого файла) в текст используйте соответствующий объект Encoding.

3 голосов
/ 31 мая 2011

Я бы рекомендовал прочитать Абсолютный минимум Джоэла, который должен знать каждый разработчик программного обеспечения о Unicode и наборах символов . В вашем вопросе довольно много вопросов, и, как мне показалось, вы будете просто бороться с простые ответы, если вы не понимаете этих основ. На чтение уходит около 15 минут.

...