0x80 U+0410 0x81 U+0411 Then:
stmzh_to_unicode = 0x80: "\u0410", # А 0x81: "\u0411", # Б # ... full 128–255 range stmzh to unicode
| STMZH byte | Unicode codepoint | Character | |------------|------------------|------------| | 0x80 | U+0410 | А (Cyrillic A) | | 0x81 | U+0411 | Б | | 0x8F | U+0401 | Ё | | 0xB0 | U+00B0 | ° (degree sign) | 0x80 U+0410 0x81 U+0411 Then: stmzh_to_unicode = 0x80:
def stmzh_to_utf8(stmzh_bytes: bytes) -> str: mapping = 0x80: '\u0410', 0x81: '\u0411' # partial example result_chars = [] for b in stmzh_bytes: if b < 0x80: result_chars.append(chr(b)) else: result_chars.append(mapping.get(b, '\uFFFD')) # replacement char return ''.join(result_chars) Usage raw_data = b'\x80\x81Hello\xB0' unicode_str = stmzh_to_utf8(raw_data) print(unicode_str) # АHello° C. Using iconv with Custom Table (Linux) Create a mapping file stmzh.map : # А 0x81: "\u0411"