8
votes

Décodage des impressions cotées

Je cherche un moyen de décoder les impressions citées.

Les imprimables cités concernent des caractères arabes et ressemblent à ceci:

= d8 = b3 = d8 = b9 = d8 = A7 = D8 = AF

J'ai besoin de le convertir en chaîne et de le stocker ou d'afficher.

J'ai vu Post sur Stackoverflow de l'autre sens (encodage), mais je n'ai pas trouvé de décodage.


1 commentaires

Voici une catégorie Nstring qui analyse des mots codés MIME avec des impressions de citation: Github.com/hpique/nsstring-mimeEncodedword


6 Réponses :


10
votes

uhm, c'est un petit hacky, mais vous pouvez remplacer les caractères = avec un % caractère et utilisez NSString's StringByReplacingPenCeSuçage: méthode. Sinon, vous pouvez essentiellement diviser la chaîne sur les caractères =, convertir chaque élément en une valeur d'octets (facilement effectuée à l'aide de Nsscanner), placez les valeurs d'octets dans un tableau C et utilisez NSString initwithbyltes: longueur: codage: méthode.

Notez que votre exemple n'est pas techniquement au format imprimable cité, qui spécifie qu'une séquence impressionnante citée est une séquence de trois caractères constituée d'un caractère = suivi de deux chiffres hexadécimaux.


2 commentaires

L'exemple est imprimable cité, mais il manquait un = au début: = D8 = B3 = D8 = B9 = D8 = A7 = D8 = AF


Hmm, je pense en fait que mon premier cas est moins hacky que je l'ai imaginé. J'avais supposé que cela n'attacerait pas un caractère errant = dans le corps, mais apparemment = des caractères doivent être codés par QP. Alors oui ... devrait travailler.



1
votes

Je ne connais rien de l'iPhone, mais la plupart des bibliothèques de traitement des courriels contiendront des fonctions pour le faire, car le courrier électronique est utilisé dans lequel ce format est utilisé. Je suggère de rechercher des fonctions de type de décodage MIME, similaires à celles de Entrez le lien Description ici .

L'approche antérieure des affiches me semble aussi amende pour moi - je pense qu'il est un peu trop protégé pour la décrire comme hacky :)


0 commentaires

2
votes

La réponse de Bensnider est correcte, le moyen facile de celui-ci.

Vous devez remplacer le "=" à "%" xxx

S2 stocké "Ø³Ø¹Ø §Ø¯ "qui a du sens, cela devrait donc fonctionner directement avec un hack


0 commentaires

3
votes

Dans mon cas, je venais de EML ... la réponse de Bensnider a fonctionné super ... cited-imprimable (au moins dans EML) utilise un signe suivi de \ r \ n pour signifier un emballage de ligne, donc c'était le Code nécessaire pour traduire de manière proprement:

(Fabriqué en tant que catégorie car je aime dem) xxx

qui a fonctionné super pour décoder mes objets EML / UTF-8!


0 commentaires

2
votes

Dans certains cas, les extrémités de la ligne ne sont pas "= \ r \ n" mais ne sont que "= \ n", auquel cas avez besoin d'une autre étape: décodagedstring = [auto-stringByReplacingocurrencesFstring: @ "= \ n" avec @ ""];

Sinon, la dernière étape échoue en raison du "%" déséquilibré à la fin d'une ligne.


0 commentaires

0
votes

Veuillez consulter une solution de travail qui prend une chaîne contenant des caractères imprimables et résout ces graphèmes. La seule chose que vous devez faire attention à ce que l'encodage (cette réponse est basée sur UTF8, il peut être facilement basculé sur n'importe quel autre): https://stackoverflow.com/a/32903103/2799410


0 commentaires