2017-05-11 2 views
0

Un problème est survenu lors de l'analyse du sujet dans l'en-tête du message. Par exemple, la forme du sujet est la suivante.Comment décoder un sujet d'e-mail

subject: =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?= 

Je pense que le décodage base64 doit inclure le caractère d'échappement - SO, SI, ESC $) C -. Cependant, le décodage n'est pas inclus. Comment puis-je obtenir une chaîne normale?

J'espère que les résultats sont les suivants.

Subject: like this, 안녕하세요. 

Veuillez me donner un indice sur la façon de répondre au niveau du code. en C

Mise à jour

désolé. J'ai eu un SO, SI, mais je l'ai manqué. Mais il n'y avait pas ESC $) C, Le problème est résolu immédiatement et partagé pour les autres.

En l'absence d'un ESC $) C, le libiconv est un problème, mais le gconv (glibc) n'a pas été un problème. Ce que j'ai utilisé était le libiconv. Passer à gconv a résolu le problème.

merci.

+0

La forme est la suivante: '=? Codage charset? Codage? Encoded text? =.' Codage peut être soit Q soit codage Q qui est similaire au codage imprimable entre guillemets, soit 'codage BASE 'codant' B'. –

+0

Pour obtenir plus de suggestions c'est mieux si vous fournissez le code et la sortie que vous avez jusqu'à présent. –

+0

Merci, mais la plupart de la partie sur la conversion est connue. Je me demande simplement comment il gère ** iso-200-KR **. –

Répondre

1

Ainsi, en =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?=, le B pris en sandwich par des points d'interrogation signifie codé en base64. Le iso-2022-KR est le jeu de caractères. Le DjlMOC4PIA....gyDzogT est le titre encodé en base64.

Vous commencez par décoder le titre en base64. Il est facile de trouver a solution for this in C. Cela vous laissera avec un tableau d'octets binaires qui est le titre codé dans le jeu de caractères ISO-2022-KR. Vraisemblablement, vous voulez convertir cela en UTF-8 ou un autre jeu de caractères que votre ordinateur peut gérer. Votre meilleur pari pour cette partie est d'utiliser un utilitaire de conversion de jeu de caractères. Si vous utilisez Linux ou macOS, vous pouvez utiliser la bibliothèque iconv. Voir iconv_open, iconv et iconv_close.

+0

merci. J'ai déjà fait le décodage base64 et l'ai converti via iconv. Cependant, le résultat du décodage base64 est la même sortie en anglais, pas en hangul, même lors de la conversion à un jeu de caractères. Dans le corps du message, il était nécessaire d'inclure des caractères spéciaux pour convertir iso-2022-kr ** - SO, SI, ESC $) C - **. Cependant, le résultat du décodage base64 n'inclut pas ces caractères, est-ce pertinent? Le ** sujet ** diffère-t-il du ** corps du message ** de la façon dont il est converti? –