character-encoding - строки - ruby encode windows-1251 to utf-8



Декодирование кодировки с шестнадцатеричной строкой (1)

У меня есть .bin, сохраненный с помощью программы VB, формат .bin:

String bytes | String
06 00        | C0 E1 E0 E8 F1 E0

Проблема в том, что я не знаю, как кодируется строка. Я знаю, что такое строка: Abaira

Может ли кто-нибудь распознать используемую кодировку?


Я не знаю никакой стандартной кодировки символов для этого. Это не ASCII, ни EBCDIC.

Кажется, это какой-то тривиальный тип 8-битного (не Unicode) ASCII (возможно, ANSI) шифрования. Сравните неизвестную кодировку с ASCII:

  Unknown        ASCII
  Hex MSB  LSB   Hex MSB  LSB
A CO  1100 0000  41  0100 0001 
b E1  1110 0001  62  0110 0010
a E0  1110 0000  61  0110 0001
i E8  1110 1000  69  0110 1001
r F1  1111 0001  72  0111 0010
a E0  1110 0000  61  0110 0001

Давайте определим:

  • MSB: первый nibble = наиболее значимые 4 бита
  • LSB: второй nibble = наименее значимые 4 бита
  • _U: Неизвестный
  • _A: из ASCII

Затем вы найдете:

  • MSB_U = MSB_A Xor 0x80 (возможно, MSB_A или 0x80)
  • LSB_U = LSB_A + 1 (чтобы узнать, как обрабатывается переполнение, мне нужно увидеть символ ASCII 'O' или 'o')
  • Тогда U является конкатенацией MSB_U и LSB_U.

Дальнейший пример ASCII: Неизвестный:

ASCII Hex MSB  LSB   MSB Xor 0x80  LSB - 1  Concatenated Hex
H     48  0100 1000  1100          1001     1100 0111    C7
e     65  0110 1001  1110          1010     1110 1000    E8
r     72  0111 0010  1111          0011     1111 0001    F1 (as you have shown)
b     62  0110 0010  1110          0011     1110 0001    E1 (do.)