что это за кодировка: "\ 'ca \' fd \ 'cf \' d4 \ 'bf \' a8 \ 'b3 \' df \ 'd1 \' af \ 'bc \' db"? - PullRequest
0 голосов
/ 05 июля 2018

Я читаю документ на C #, который должен быть на китайском языке, но я получаю такие строки, как:

"}\htmlrtf {\f6 \htmlrtf0 \'ca\'fd\'cf\'d4\'bf\'a8\'b3\'df\'d1\'af\'bc\'db"

Может кто-нибудь сказать мне, что это за кодировка и как я могу ее расшифровать?

1 Ответ

0 голосов
/ 05 июля 2018

RTF - это 7-битный формат ASCII (команда \htmlrtf является расширением Microsoft к формату RTF).

Внутри документа RTF не-ASCII-символы могут быть представлены одним из двух разных способов:

  1. кодируется кодировкой в ​​8-битные байты, а затем экранируется каждый байт в формате \'XX.

    Это то, что вы видите в своем документе. Итак, шестнадцатеричная последовательность \'ca\'fd\'cf\'d4\'bf\'a8\'b3\'df\'d1\'af\'bc\'db является экранированной формой байтовой последовательности 0xCA 0xFD 0xCF 0xD4 0xBF 0xA8 0xB3 0xDF 0xD1 0xAF 0xBC 0xDB.

    Чтобы преобразовать эту последовательность байтов в строку Unicode (что и используется в C #), вы должны интерпретировать байты, используя кодовую страницу, указанную ранее в документе RTF (через \ansi, \mac , \pc, pca или \ansicpg команда в заголовке документа RTF).

    Например, приведенная выше последовательность байтов представляет собой строку Unicode "数显卡尺询价" при интерпретации с использованием кодовой страницы 936 или 20936 (для упрощенного китайского языка).

  2. Кодовые точки Unicode кодируются как UTF-16, а затем каждый кодовый блок экранируется в \uXXXX формате .

...