Поскольку ASCII охватывает весь диапазон 7-битных значений, схема кодирования, которая сохраняет все символы ASCII, имеет длину 7 бит и кодирует полный диапазон Unicode, невозможна.
Отредактировано, чтобы добавить:
Думаю, теперь я понимаю ваши требования. Вы ищете способ кодирования строк UTF-8 в семибитном коде, в котором, если эта закодированная строка была интерпретирована как текст ASCII, тогда регистр буквенных символов может быть произвольно изменен, и все же декодированная строка быть побайтным идентичным оригиналу.
Если это так, то, вероятно, лучше всего было бы просто закодировать двоичное представление оригинала в виде строки шестнадцатеричных цифр. Я знаю, что вы ищете более компактное представление, но это довольно высокий порядок, учитывая другие ограничения системы, если не разработано какое-либо пользовательское кодирование.
Поскольку шестнадцатеричное представление может кодировать любые произвольные двоичные значения, возможно, можно сжать строку, сжимая их перед получением шестнадцатеричных значений.