Что такое "= C2 = A0" в MIME-кодированном, напечатанном в кавычках тексте? - PullRequest
51 голосов
/ 05 мая 2010

Это пример необработанного электронного письма, которое я пытаюсь проанализировать:

MIME-version: 1.0
Content-type: text/html; charset=UTF-8
Content-transfer-encoding: quoted-printable
X-Mailer: Verizon Webmail
X-Originating-IP: [x.x.x.x]

=C2=A0test testing testing 123

Что такое = C2 = A0? Я пробовал полдюжины парсеров для печати, указанных в кавычках, но ни один не справился с этим правильно. Как правильно разобрать это в C #?

Честно говоря, сейчас я кодирую:

//TODO WTF
encoded = encoded.Replace("=C2=A0", "");

Потому что я не могу понять, почему этот текст находится случайно в содержимом MIME и не должен быть преобразован во что-либо. Просто удалив его, я получаю желаемый эффект - но ПОЧЕМУ?!

Чтобы было ясно, я знаю, что (= [0-9A-F] {2}) является закодированным символом. Но в этом случае это, по-видимому, НИЧЕГО не представляет.

1 Ответ

90 голосов
/ 05 мая 2010

"= C2 = A0" представляет байты C2 A0. Однако, поскольку это UTF-8, он переводится в 00A0, который является Unicode для неразрывного пробела.

См. UTF-8 (Википедия).

...