Расширенный ASCII в C#

Я хочу сохранить некоторые из расширенных символов ascii в словаре для поиска, но у меня мало проблем с получением преобразования.

Текущий метод, который я должен хранить эти символы, работает для всех неграфических символов ascii от 0x20 до 0xAF.

Текущий метод:

private static void LoadAnsiTable()
{
    for (byte i = 0x20; i < 0xFE; i++)
    {
      AnsiLookup.Add(i, Convert.ToChar(i).ToString());
    }
}

но 0xAF и далее не имеют ░ ▒ ▓ │ ┤╡ ╢ и т. д., а просто имеют эти причудливые буквы.

Посмотрите на эту таблицу http://www.asciitable.com/ для справки.

Это работает, если я добавлю его вручную,

AnsiLookup.Add(0xB0, "░");

Я хотел бы знать, как я могу получить эти символы, захваченные в какой-то коллекции, без необходимости вручную добавлять их все?


person lakedoo    schedule 12.07.2013    source источник
comment
Расширенный ASCII — это не какая-то одна кодировка. Это раздражающе двусмысленный термин. К сожалению, asciitable.com на самом деле не говорит, какую кодировку он использует.   -  person Jon Skeet    schedule 12.07.2013


Ответы (1)


Я предполагаю, что ваш «Расширенный ASCII» на самом деле является кодовой страницей 437:

Encoding cp437 = Encoding.GetEncoding(437);
byte[] source = new byte[1];
for (byte i = 0x20; i < 0xFE; i++)
{
    source[0] = i;
    AnsiLookup.Add(i, cp437.GetString(source));
}

Учтите, что эта кодовая страница изначально не поддерживается .NET Framework, поэтому она может быть доступна не во всех системах.

person Douglas    schedule 12.07.2013
comment
Есть ли какой-нибудь простой способ определить, какие кодировки в .net совместимы с ascii? - person Nyerguds; 19.08.2016
comment
@Ньергудс: Да; см. Поиск кодировок в .NET, совместимых с ASCII - person Douglas; 20.08.2016
comment
@Douglas, да, вместо этого нашел этот. Это решило мою проблему :) - person Nyerguds; 20.08.2016
comment
Сработало, идеально. - person Muhammad Saqlain; 04.07.2018