Примерно вот так состоит конвертация символов из кодировки UTF-16, что используется в Java по умолчанию, в CP866.

Конструкция сделана из свичей, где сперва идут колебания значений из таблицы псевдографических символов для Юникода, а затем линейное сравнение с русским и латинским алфавитами на Юникоде при помощи блока if else.

В CP866 часть русского алфавита была поделена на две части - одна часть содержит диапазон чисел от 0x80 до 0xAF и в нем умещаются все заглавные буквы и строчные буквы от “а” до “п”, а другая часть имеет диапазон чисел от 0xE0 до 0xEF и оставшиеся буквы от “р” до “я”.

Заглавные и строчные буквы “ё” были вынесены отдельно, после строчной буквы “я”.

Именно так устроена кодировка с поддержкой русского языка в DOS-подобных операционных системах.

Примерно вот так состоит конвертация символов из кодировки UTF-16, что используется в Java по умолчанию, в CP866 | Сетка — социальная сеть от hh.ru