2012-01-02 5 views

ответ

2

GNU Mailutils libmailutils - один из примеров такой библиотеки.

«Q» -кодирование задано RFC 2047, поэтому использование его в качестве поискового запроса дает вам другие релевантные результаты.

0

Не уверен, что о библиотеках Q-кодирования, не мог найти.

Обратите внимание, что ваш последний пример не похож на Q-кодировку, обратите внимание, что символ после кодировки («UTF-8») не является «Q», а «B». Это означает, что это кодировка base64, для которой существует множество библиотек, один пример - glib.

См. MIME в Википедии, чтобы узнать, как определить, какая кодировка используется.

+0

жаль, что вы правы я удалил. это была ошибка. – iyasar

1

Тема электронной почты закодирована в соответствии с RFC 2047. Мы можем декодировать ее, используя функцию mu_rfc2047_decode(), предоставленную GNU mailutils. Пример:

#include <stdio.h> 
#include <stdlib.h> 
#include <mailutils/mailutils.h> 
#include <mailutils/mime.h> 
... 
char cipher[] = "=?GB2312?B?UmWjujEy1MK8xruuse0=?="; 
char *plaintext; 
int rc = mu_rfc2047_decode("utf-8", cipher, &plaintext); 
if (rc) { 
    fprintf(stderr, "Fail to decode '%s'\n", cipher); 
} else { 
    puts(plaintext); 
    free(plaintext); 
} 

Чтобы скачать GNU mailutils, посетите https://mailutils.org/

Чтобы понять, RFC 2047, читайте https://www.ietf.org/rfc/rfc2047.txt

Результат теста:

Cipher: 
**Subject: =?iso-8859-1?Q?=A1Hola,_se=F1or!?=** 
Plaintext: 
**Subject: ¡Hola, señor!** 

Cipher: 
=?Big5?Q?=AE=F8=B6O=BA=A18=A4d=BFW=AEa?= 
Plaintext: 
消費滿8千獨家 

Cipher: 
=?GB2312?B?UmWjujEy1MK8xruuse0=?= 
Plaintext: 
Re:12月计划表