Dekodierung in Anführungszeichen

8

Ich suche nach einer Möglichkeit, zitierte Ausdrucke zu dekodieren.

Die quoted-printables sind für arabische Zeichen und sehen so aus:

= D8 = B3 = D8 = B9 = D8 = A7 = D8 = AF

Ich muss es in eine Zeichenfolge konvertieren und speichern oder anzeigen ..

Ich habe Post auf Stackoverflow für den umgekehrten Weg gesehen (Kodierung), konnte aber keine Entschlüsselung finden.

    
Net Solver 25.11.2011, 17:45
quelle

6 Antworten

9

Uhm, es ist ein bisschen hacky, aber Sie könnten die = -Zeichen durch ein % -Zeichen ersetzen und die stringByReplacingPercentEscapesUsingEncoding: -Methode von NSString verwenden. Andernfalls könnten Sie die Zeichenfolge im Wesentlichen auf die Zeichen = aufteilen, jedes Element in einen Bytewert konvertieren (einfach mit NSScanner), die Bytewerte in ein C-Array einfügen und die initWithBytes:length:encoding: -Methode von NSString verwenden.

Beachten Sie, dass Ihr Beispiel technisch nicht im quoted-printable-Format vorliegt, das angibt, dass ein quoted-printable eine dreistellige Zeichenfolge bestehend aus einem = -Zeichen gefolgt von zwei Hex-Ziffern ist.

    
bensnider 25.11.2011, 18:07
quelle
3

In meinem Fall kam ich von EML ... bensniders Antwort funktionierte großartig ... quoted-printable (zumindest in EML) verwendet ein = Zeichen, gefolgt von \ r \ n, um einen Zeilenumbruch zu bezeichnen, also war dies der Code benötigt, um sauber zu übersetzen:

(Hergestellt als eine Kategorie, weil ich das liebe)

%Vor%

Was beim Dekodieren meiner EML / UTF-8-Objekte gut funktioniert hat!

    
BadPirate 04.06.2012 21:20
quelle
2

Bensniders Antwort ist richtig, der einfache Weg dazu.

Sie müssen das "=" bis "%"

ersetzen %Vor%

s2 gespeichert "سعاد" was Sinn macht, so sollte dies ohne einen Hack

funktionieren     
Ehab Amer 15.02.2012 03:00
quelle
2

In einigen Fällen sind die Zeilenenden nicht "= \ r \ n", sondern nur "= \ n". In diesem Fall benötigen Sie einen weiteren Schritt: decadedString = [self ZeichenfolgenversetzenOccurrencesOfString: @ "= \ n" withString: @ ""];

Andernfalls schlägt der letzte Schritt aufgrund des nicht ausgeglichenen "%" am Ende einer Zeile fehl.

    
Wyllys 24.09.2012 21:15
quelle
1

Ich weiß nichts über das iPhone, aber die meisten E-Mail-Verarbeitungsbibliotheken enthalten Funktionen, um dies zu tun, da E-Mail ist, wo dieses Format verwendet wird. Ich schlage vor, nach Funktionen für die MIME-Decodierung zu suchen, ähnlich wie bei geben Sie hier die Beschreibung des Links ein .

Der Ansatz der früheren Plakate erscheint mir auch gut - ich fühle, dass er ein bisschen zu selbstironisch ist, wenn er es als hacky beschreibt:)

    
Matt T 14.02.2012 12:57
quelle
0

Sehen Sie sich eine funktionierende Lösung an, die in Anführungszeichen geschriebene Strings entnimmt und diese Grapheme auflöst. Die einzige Sache, auf die Sie achten sollten, ist die Kodierung (diese Antwort basiert auf UTF8, indem sie leicht auf jede andere umgestellt werden kann): Ссылка

    
Arthur Gevorkyan 02.10.2015 08:51
quelle