UTF8 (цитируемый для печати) преобразование в C # вопрос - PullRequest
4 голосов
/ 20 июля 2010

Я вытаскиваю французские письма из почтового ящика, и они содержат акценты.Я полагаю, что он использует кодировку UTF8.

Я пробовал разные методы конвертации UTF8, которые я нашел в Интернете, но безуспешно.

Как, например, в C # я конвертируюэто: Montr = C3 = A9al до Montréal?

Редактировать: Кроме того, это противоречиво.Иногда это может быть похоже на Montr & eacute; al.(Пространство после амперсанда просто добавляется, чтобы браузер не конвертировал его.)

Спасибо !!Mark

Ответы [ 2 ]

3 голосов
/ 20 июля 2010

Это не UTF-8. Это в кавычках , что совсем не то же самое, что UTF-8 - это скорее кодировка ASCII-текста в Unicode-текст.

Печать в кавычках эффективно позволит вам преобразовать сообщение ASCII в байтовый массив, который можно затем декодировать как UTF-8.

Я не уверен, есть ли прямая поддержка в .NET для цитируемой кодировки для печати, что несколько странно ... Возможно, я что-то упустил.

2 голосов
/ 17 сентября 2010

Кодировка UTF-8 переводит массив байтов (8-битные числа) в строку (или наоборот). То есть существует соответствие между «числами» и «символами». Набор символов больше, чем набор символов ASCII, например, é является частью UTF-8, но не является частью ASCII.

Кодировка Quoted-Prinable преобразует массив байтов (8-битное число) в последовательность символов ASCII (фактически ее подмножество).

Таким образом, комбинируя оба, вы можете «кодировать» строку UTF-8 в последовательность (подмножество) символов ASCII (строка ASCII).

То же самое можно сделать с другими кодировками (например, ISO-8859-1). Таким образом, вам нужно иметь обе информации:

  • Данная строка ASCII является для печати в кавычках .
  • Полученный байтовый массив представляет собой строку , имеющую кодировку UTF-8 .

Декодирование котируемой-печатной формы, таким образом, состоит из двух шагов:

  1. Создание байтового массива, скажем, байтов [], через правила печати в кавычках, т.е.

    • Подстрока = NM отображается в байтовый NM (где NM - шестнадцатеричный) ("N * 16 + M")
    • Любой другой символ отображается в его байт ASCII. (Обратите внимание, что подобное q-кодированное слово имеет дополнительное отображение для _ в пробел)
  2. Затем интерпретируйте байтовый массив как строку UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...