Javamail Content Transfer Encoding Binär Optionen


Grüße alle Ich hoffe jemand kann mir einige Lichter über die Frage, die ich habe, vergießen. Lesen der Javadoc von MimeMessages getInputStream (), heißt es Rückgabe eines dekodierten Input-Streams für diesen Nachrichten-Inhalt Allerdings ist dies nicht das, was ich erlebe. Der Ausgang wird nicht decodiert. Zum Beispiel, wenn ich eine Nachricht a folgt Dann, vorausgesetzt, dass ich ein Objekt namens m konstruiert mit dem oben genannten Inhalt, dann rufen m. getInputStream () und Dump die Ausgabe auf dem Bildschirm zeigt diese 3D-Zeichensätze. Was habe ich falsch gemacht Wenn ich QPDecoderStream benutzt habe, um die Ausgabe von m. getInputStream () zu dekodieren, dann ist das Ergebnis natürlich korrekt. Allerdings besiegt es den Zweck, denn der Javadoc sagt, dass getInputStream () einen decodierten Eingangsstrom zurückgibt. Fragte Mar 30 11 um 23:36 Wenn ein Content-Transfer-Encoding-Header-Feld als Teil eines Message-Headers erscheint, gilt es für den gesamten Körper dieser Nachricht. Wenn ein Content-Transfer-Encoding-Header-Feld als Teil eines Entity-Headers erscheint, gilt es nur für den Körper dieser Entität. Wenn eine Entität vom Typ multipart ist, darf die Content-Transfer-Encoding keinen anderen Wert als 7bit, 8bit oder binary haben. Du könntest wahrscheinlich den MimeMessage s-dekodierten Content-Stream der MimeMessage bekommen und einen MimeMultipart davon instanziieren, aber das hackt nur das grundlegende Problem einer defekten Nachricht.5 Das Content-Transfer-Encoding Header-Feld Viele Content-Typen, die sinnvoll sein könnten Die per E-Mail transportiert werden, sind in ihrem natürlichen Format als 8-Bit-Zeichen oder binäre Daten dargestellt. Solche Daten können nicht über einige Transportprotokolle übertragen werden. Beispielsweise beschränkt RFC 821 Mailnachrichten auf 7-Bit-US-ASCII-Daten mit 1000 Zeichenzeilen. Es ist daher notwendig, einen Standardmechanismus für die erneute Codierung solcher Daten in ein 7-Bit-Kurzzeilenformat zu definieren. Dieses Dokument legt fest, dass solche Codierungen durch ein neues Content-Transfer-Encoding-Header-Feld angezeigt werden. Das Feld Content-Transfer-Encoding wird verwendet, um die Art der Transformation anzuzeigen, die verwendet wurde, um den Körper in einer akzeptablen Weise für den Transport darzustellen. Im Gegensatz zu Content-Typen ist eine Proliferation von Content-Transfer-Codierungswerten unerwünscht und unnötig. Allerdings ist es nicht möglich, nur einen einzigen Content-Transfer-Encoding-Mechanismus zu schaffen. Es besteht ein Kompromiss zwischen dem Wunsch nach einer kompakten und effizienten Codierung von weitgehend binären Daten und dem Wunsch nach einer lesbaren Codierung von Daten, die meist, aber nicht ganz, 7-Bit-Daten sind. Aus diesem Grund sind mindestens zwei Kodierungsmechanismen notwendig: eine lesbare Codierung und eine dichte Codierung. Das Feld Content-Transfer-Encoding ist so ausgelegt, dass es eine invertierbare Abbildung zwischen der nativen Repräsentation eines Datentyps und einer Repräsentation spezifiziert, die mit 7-Bit-Mail-Transportprotokollen, wie z. B. von RFC 821 (SMTP), leicht ausgetauscht werden kann. Dieses Feld wurde nicht von einem früheren Standard definiert. Der Feldwert ist ein einzelnes Token, das den Typ der Codierung angibt, wie unten aufgezählt. Formell: Diese Werte sind nicht zwischen Groß - und Kleinschreibung unterschieden. Das heißt, Base64 und BASE64 und bAsE64 sind alle äquivalent. Eine Kodierung von 7BIT erfordert, dass der Körper bereits in einer sieben-Bit-Mail-Ready-Darstellung ist. Dies ist der Standardwert - das heißt Content-Transfer-Encoding: 7BIT wird angenommen, wenn das Content-Transfer-Encoding-Header-Feld nicht vorhanden ist. Die Werte 8bit, 7bit und binär alle implizieren, dass keine Kodierung durchgeführt wurde. Allerdings sind sie potentiell als Anhaltspunkte für die Art der in dem Objekt enthaltenen Daten und daher für die Art der Kodierung nützlich, die möglicherweise für die Übertragung in einem gegebenen Transportsystem durchgeführt werden muss. 7bit bedeutet, dass die Daten alle als kurze Zeilen von US-ASCII-Daten dargestellt werden. 8bit bedeutet, dass die Zeilen kurz sind, aber es können nicht-ASCII-Zeichen (Oktette mit dem höherwertigen Bit gesetzt) ​​sein. Binär bedeutet, dass nicht nur Nicht-ASCII-Zeichen vorhanden sein können, sondern auch, dass die Zeilen nicht unbedingt kurz genug für den SMTP-Transport sind. Der Unterschied zwischen 8bit (oder irgendeinem anderen denkbaren Bitbreiten-Token) und dem Binär-Token besteht darin, dass die Binärdatei keine Einhaltung von Grenzen auf der Zeilenlänge oder der SMTP-CRLF-Semantik erfordert, während die Bit-Breiten-Token eine solche Adhärenz erfordern. Wenn der Körper Daten in einer beliebigen Bitbreite außer 7-Bit enthält, muss das entsprechende Bit-Breite-Content-Transfer-Encoding-Token verwendet werden (z. B. 8bit für nichtcodierte 8-Bit-weite Daten). Wenn der Körper Binärdaten enthält, muss das Binär-Content-Transfer-Encoding-Token verwendet werden. Die Unterscheidung zwischen den Content-Transfer-Encoding-Werten von Binär, 8bit usw. mag unwichtig erscheinen, da sie alle wirklich keine bedeuten - das heißt, es gab keine Verschlüsselung der Daten für den Transport. Allerdings wird eine klare Etikettierung von enormen Werten für Gateways zwischen zukünftigen Mail-Transportsystemen mit unterschiedlichen Fähigkeiten beim Transport von Daten, die nicht die Beschränkungen von RFC 821 Transport erfüllen. Ab der Veröffentlichung dieses Dokuments gibt es keine standardisierten Internet-Transporte, für die es legitim ist, unverschlüsselte 8-Bit - oder Binärdaten in Postkörperschaften einzuschließen. So gibt es keine Umstände, in denen die 8bit oder binäre Content-Transfer-Encoding ist eigentlich legal im Internet. Für den Fall jedoch, dass 8-Bit - oder Binär-Mail-Transport in Internet-Mail Realität wird oder wenn dieses Dokument in Verbindung mit einem anderen 8-Bit - oder binärfähigen Transportmechanismus verwendet wird, sollten 8-Bit - oder Binärkörper markiert werden Als solche mit diesem Mechanismus. Die fünf für das Content-Transfer-Encoding-Feld definierten Werte beinhalten nichts über den anderen Content-Type als den Algorithmus, mit dem er codiert wurde, oder die Transportsystemanforderungen, wenn er nicht codiert wurde. Implementoren können ggf. neue Content-Transfer-Encoding-Werte definieren, müssen aber ein x-Token verwenden, das ein Name ist, der von X - vorangestellt ist, um seinen Nicht-Standardstatus anzugeben, z. B. Content-Transfer-Encoding: x-my-new-encoding. Im Gegensatz zu Content-Typen und Subtypen ist die Erstellung neuer Content-Transfer-Encoding-Werte jedoch explizit und stark entmutigt, da es wahrscheinlich ist, die Interoperabilität mit wenig potenziellen Nutzen zu behindern. Ihre Verwendung ist nur als Ergebnis einer Vereinbarung zwischen kooperierenden User Agenten erlaubt. Wenn ein Content-Transfer-Encoding-Header-Feld als Teil eines Message-Headers erscheint, gilt es für den gesamten Körper dieser Nachricht. Wenn ein Content-Transfer-Encoding-Header-Feld als Teil eines Body-Parts-Headers erscheint, gilt es nur für den Körper dieses Body-Parts. Wenn eine Entität vom Typ multipart oder Nachricht ist, ist der Content-Transfer-Codierung nicht erlaubt, einen anderen Wert als eine Bitbreite (z. B. 7bit, 8bit usw.) oder binär zu haben. Es ist anzumerken, dass E-Mail charakterorientiert ist, so dass die hier beschriebenen Mechanismen Mechanismen zur Kodierung von beliebigen Byte-Streams, nicht Bit-Streams sind. Wenn ein Bitstrom über einen dieser Mechanismen codiert werden soll, muss er zunächst mit dem Netzwerk-Standard-Bit-Befehl (Big-Endian) in einen 8-Bit-Byte-Stream konvertiert werden, bei dem die früheren Bits in einem Stream die höher - Bits in einem Byte bestellen Ein Bitstrom, der nicht an einer 8-Bit-Grenze endet, muss mit Nullen gefüllt werden. Dieses Dokument bietet einen Mechanismus für die Feststellung der Hinzufügung solcher Polsterung im Falle der Anwendung Content-Type, die einen Padding-Parameter hat. Die hier definierten Codierungsmechanismen kodieren explizit alle Daten in ASCII. So heißt es beispielsweise, dass eine Entität Header-Felder wie: Dies sollte interpretiert werden, um zu bedeuten, dass der Körper eine base64 ASCII-Codierung von Daten ist, die ursprünglich in ISO-8859-1 war, und wird in diesem Zeichen wieder nach der Decodierung gesetzt . In den folgenden Abschnitten werden die beiden Standardcodierungsmechanismen definiert. Die Definition neuer Content-Transfer-Codierungen ist ausdrücklich entmutigt und sollte nur dann auftreten, wenn dies unbedingt erforderlich ist. Alle Content-Transfer-Encoding-Namespace außer dem, der mit X - beginnt, ist für die zukünftige Verwendung explizit für die IANA reserviert. Private Vereinbarungen über Content-Transfer-Codierungen werden ebenfalls explizit entmutigt. Bestimmte Content-Transfer-Encoding-Werte dürfen nur bei bestimmten Content-Typen verwendet werden. Insbesondere ist es ausdrücklich verboten, andere Codierungen außer 7bit, 8bit oder binär mit jedem Content-Type zu verwenden, der rekursiv andere Content-Type-Felder enthält, insbesondere die Multipart - und Message-Content-Typen. Alle Kodierungen, die für Körper vom Typ multipart oder Nachricht gewünscht werden, müssen auf der innersten Ebene durchgeführt werden, indem der eigentliche Körper, der codiert werden muss, kodiert. ANMERKUNG ZUM ENCODIEREN VON BESCHRÄNKUNGEN: Obwohl das Verbot der Verwendung von Content-Transfer-Codierungen auf Daten vom Typ Multipart oder Meldung übermäßig restriktiv erscheinen mag, ist es notwendig, verschachtelte Codierungen zu verhindern, in denen Daten mehrfach über einen Codierungsalgorithmus übergeben werden und sein müssen Mehrfach decodiert, um ordnungsgemäß zu sehen. Verschachtelte Codierungen verleihen den Agenten eine beträchtliche Komplexität: Abgesehen von den offensichtlichen Effizienzproblemen mit solchen Mehrfachkodierungen können sie die Grundstruktur einer Nachricht verdecken. Insbesondere können sie implizieren, dass mehrere Decodierungsoperationen notwendig sind, um einfach herauszufinden, welche Art von Objekten eine Nachricht enthält. Das Verbieten von verschachtelten Verschlüsselungen kann den Job von bestimmten Mail-Gateways komplizieren, aber das scheint weniger ein Problem zu sein als die Wirkung von verschachtelten Codierungen auf Benutzeragenten. ANMERKUNG ZUR BEZIEHUNG ZWISCHEN INHALT-TYP UND INHALT - TRANSFER-ENKODIERUNG Es scheint, dass die Content-Transfer-Encoding aus den Merkmalen des zu codierenden Content-Typs oder zumindest jener gewidmet werden könnte Content-Transfer-Codierungen können für die Verwendung mit bestimmten Content-Typen beauftragt werden. Es gibt mehrere Gründe, warum dies nicht der Fall ist. Erstens, da die verschiedenen Arten von Transporten für Post verwendet werden, können einige Codierungen für einige Content-Typetransport-Kombinationen und nicht für andere geeignet sein. (Z. B. bei einem 8-Bit-Transport wäre keine Kodierung für Text in bestimmten Zeichensätzen erforderlich, während solche Codierungen eindeutig für 7-Bit-SMTP erforderlich sind.) Zweitens können bestimmte Content-Typen unterschiedliche Arten von Transfercodierungen unter Verschiedene Umstände. Zum Beispiel könnten viele PostScript-Gremien vollständig aus kurzen Zeilen von 7-Bit-Daten bestehen und benötigen daher wenig oder keine Codierung. Andere PostScript-Felder (insbesondere solche, die den Binärcodierungsmechanismus von Level 2 PostScripts verwenden) können nur mit einer binären Transportcodierung vernünftigerweise dargestellt werden. Schließlich, da Content-Type ein offener Spezifikationsmechanismus sein soll, verbindet die strikte Spezifikation einer Assoziation zwischen Content-Typen und Codierungen effektiv die Spezifikation eines Anwendungsprotokolls mit einem bestimmten untergeordneten Transport. Dies ist nicht wünschenswert, da die Entwickler eines Content-Type nicht alle bewährten Transporte und deren Einschränkungen kennen müssen. HINWEIS ÜBER DIE ÜBERSETZUNG VON KODEN Die zitiert-bedruckbaren und base64-Kodierungen sind so ausgelegt, dass eine Umwandlung zwischen ihnen möglich ist. Das einzige Problem, das bei einer solchen Umwandlung entsteht, ist die Handhabung von Zeilenumbrüchen. Beim Umwandeln von quoted-printable zu base64 muss ein Zeilenumbruch in eine CRLF-Sequenz umgewandelt werden. Ähnlich sollte eine CRLF-Sequenz in base64-Daten in einen zitierten druckbaren Zeilenumbruch konvertiert werden, aber nur bei der Umwandlung von Textdaten. ANMERKUNG ÜBER KANONISCHES KODIERMODELL: In früheren Entwürfen dieses Memos gab es einige Verwirrung hinsichtlich des Modells, wann E-Mail-Daten in kanonische Form umgewandelt und verschlüsselt werden sollten, und insbesondere, wie sich dieser Prozess auf die Behandlung von CRLFs auswirken würde Die Darstellung von Newlines variiert stark von System zu System. Aus diesem Grund wird ein kanonisches Modell für die Codierung als Anhang H dargestellt. 5.1 Quoted-Printable Content-Transfer-Encoding Die Quoted-Printable-Codierung soll Daten darstellen, die weitgehend aus Oktetten bestehen, die mit druckbaren Zeichen im ASCII-Zeichensatz übereinstimmen. Es kodiert die Daten so, dass die resultierenden Oktette unwahrscheinlich sind, dass sie per Post transportiert werden. Wenn die zu codierenden Daten meist ASCII-Text sind, bleibt die codierte Form der Daten von Menschen weitgehend erkennbar. Ein Körper, der ganz ASCII ist, kann auch in Quoted-Printable codiert werden, um die Integrität der Daten zu gewährleisten, falls die Nachricht durch ein Zeichen-übersetzendes und ein Line-Wrapping-Gateway geht. In dieser Kodierung sollen die Bytes durch die folgenden Regeln bestimmt werden: Regel 1: (Allgemeine 8-Bit-Darstellung) Jedes Oktett, mit Ausnahme derjenigen, die einen Zeilenumbruch nach dem Zeilenumbruch der kanonischen Form der zu codierenden Daten angeben, Kann durch eine gefolgt von einer zweistelligen hexadezimalen Darstellung des Oktettswertes dargestellt werden. Die Ziffern des hexadezimalen Alphabets sind zu diesem Zweck 0123456789ABCDEF. Großbuchstaben müssen beim Senden von hexadezimalen Daten verwendet werden, obwohl eine robuste Implementierung die Auswahl von Kleinbuchstaben beim Empfang auswählen kann. So kann beispielsweise der Wert 12 (ASCII-Formularvorschub) durch 0C dargestellt werden und der Wert 61 (ASCII EQUAL SIGN) kann durch 3D dargestellt werden. Außer wenn die folgenden Regeln eine alternative Kodierung zulassen, ist diese Regel obligatorisch. Regel 2: (wörtliche Darstellung) Octets mit Dezimalwerten von 33 bis 60 einschließlich und 62 bis 126 einschließlich können als ASCII-Zeichen dargestellt werden, die diesen Oktetten entsprechen (EXCLAMATION POINT durch WENIGER ALS UND GRÖSSER ALS durch TILDE ). Regel 3: (White Space) Octets mit Werten von 9 und 32 können als ASCII TAB (HT) bzw. SPACE Zeichen dargestellt werden, aber NICHT am Ende einer codierten Zeile so dargestellt werden. Alle TAB (HT) oder SPACE Zeichen auf einer codierten Zeile müssen auf dieser Zeile durch ein druckbares Zeichen verfolgt werden. Insbesondere kann am Ende einer codierten Linie, die einen weichen Zeilenumbruch anzeigt (siehe Regel 5), einem oder mehreren TAB (HT) oder SPACE Zeichen folgen. Daraus folgt, dass ein Oktett mit dem Wert 9 oder 32, das am Ende einer codierten Linie erscheint, gemäß Regel 1 dargestellt werden muss. Diese Regel ist notwendig, weil einige MTAs (Message Transport Agents, Programme, die Nachrichten von einem Benutzer zum anderen transportieren oder ausführen) Ein Teil solcher Transfers) sind bekannt, um Textzeilen mit SPACEs aufzutragen, und andere sind dafür bekannt, Leerzeichen aus dem Ende einer Zeile zu entfernen. Daher muss bei der Decodierung eines zitiert-bedruckbaren Körpers jeder nachlaufende Leerraum auf einer Zeile gelöscht werden, da er zwangsläufig von Zwischen-Transport-Agenten hinzugefügt worden ist. Regel 4 (Zeilenumbrüche) Ein Zeilenumbruch in einem Textkörperteil, unabhängig davon, was seine Darstellung nach der kanonischen Darstellung der zu codierenden Daten folgt, muss durch einen (RFC 822) Zeilenumbruch, der eine CRLF-Sequenz ist, dargestellt werden Die Quoted - Printable Codierung. Wenn isolierte CRs und LFs oder LF CR und CR LF Sequenzen in binären Daten nach der kanonischen Form erscheinen dürfen, müssen sie mit den 0D, 0A, 0A0D und 0D0A Notationen dargestellt werden. Beachten Sie, dass viele Implementierungen wählen können, um die lokale Darstellung von verschiedenen Inhaltstypen direkt zu codieren. Insbesondere kann dies auf Klartextmaterial auf Systemen angewendet werden, die Newline-Konventionen außer CRLF-Trennzeichen verwenden. Eine solche Implementierung ist zulässig, aber die Erzeugung von Zeilenumbrüchen muss verallgemeinert werden, um den Fall zu berücksichtigen, in dem alternative Darstellungen von Zeilenumbruchsequenzen verwendet werden. Regel 5 (Soft Line Breaks) Die Quoted-Printable Codierung ERFORDERT, dass codierte Zeilen nicht mehr als 76 Zeichen lang sind. Wenn längere Zeilen mit der Quoted-Printable-Codierung codiert werden sollen, müssen Softline-Pausen verwendet werden. Ein Gleichheitszeichen als letztes Zeichen auf einer codierten Zeile zeigt einen solchen nicht signifikanten (weichen) Zeilenumbruch im codierten Text an. Wenn also die rohe Form der Zeile eine einzige unverschlüsselte Zeile ist, die besagt: Dies kann in der Zitat-Printable-Codierung dargestellt werden, da Dies einen Mechanismus gibt, mit dem lange Zeilen so codiert werden, dass sie vom Benutzer wiederhergestellt werden Agent. Die 76-Zeichen-Grenze zählt nicht die nachlaufende CRLF, sondern zählt alle anderen Zeichen, einschließlich gleicher Zeichen. Da der Bindestrich (-) als selbst in der Zitat-Printable-Codierung dargestellt ist, muss bei der Kapselung eines zitierten druckfähigen codierten Körpers in einer multipartigen Entität darauf geachtet werden, dass die Kapselungsgrenze irgendwo im kodierten Körper nicht erscheint . (Eine gute Strategie ist es, eine Grenze zu wählen, die eine Zeichenfolge enthält, wie sie in einem zitierten Ausdruck nicht erscheinen kann. Siehe die Definition von Multipart-Nachrichten später in diesem Dokument.) HINWEIS: Die zitiert-druckbare Kodierung repräsentiert etwas von einem Kompromiss zwischen Lesbarkeit und Zuverlässigkeit im Transport. Bodies, die mit der zitiert-bedruckbaren Codierung codiert werden, funktionieren zuverlässig über die meisten Mail-Gateways, können aber nicht perfekt über ein paar Gateways funktionieren, insbesondere solche, die eine Übersetzung in EBCDIC beinhalten. (In der Theorie könnte ein EBCDIC-Gateway eine zitierte druckbare Stelle entschlüsseln und mit base64 neu kodieren, aber solche Gateways existieren noch nicht.) Ein höheres Vertrauensniveau wird durch die base64 Content-Transfer-Encoding angeboten. Ein Weg, um einen vernünftig zuverlässigen Transport durch EBCDIC-Gateways zu erhalten, ist auch die ASCII-Zeichen nach Regel 1 anzugeben. Siehe Anhang B für weitere Informationen. Da zitiert druckfähige Daten grundsätzlich als linienorientiert angenommen werden, ist zu erwarten, dass die Pausen zwischen den Zeilen der zitierten druckbaren Daten im Transport verändert werden können, und zwar in der gleichen Weise, dass die Klartextpost immer in der Internetpost geändert wurde Beim Übergang zwischen Systemen mit unterschiedlichen Newline-Konventionen. Wenn solche Änderungen wahrscheinlich eine Korruption der Daten darstellen, ist es wahrscheinlich sinnvoller, die Base64-Codierung zu verwenden, anstatt die zitierte druckbare Codierung. 5.2 Base64 Content-Transfer-Encoding Die Base64 Content-Transfer-Encoding ist so konzipiert, dass sie beliebige Sequenzen von Oktetten in einer Form darstellt, die nicht menschlich lesbar ist. Die Codierungs - und Decodierungsalgorithmen sind einfach, aber die codierten Daten sind konsequent nur etwa 33 Prozent größer als die nichtcodierten Daten. Diese Codierung basiert auf dem, der in Privacy Enhanced Mail Anwendungen verwendet wird, wie in RFC 1113 definiert. Die base64-Codierung wird von RFC 1113 mit einer Änderung angepasst: base64 eliminiert den Mechanismus für eingebetteten Klartext. Es wird eine 65-stellige Teilmenge von US-ASCII verwendet, so dass 6 Bits pro druckfähigem Zeichen dargestellt werden können. (Das zusätzliche 65. Zeichen, wird verwendet, um eine spezielle Verarbeitungsfunktion zu bedeuten.) HINWEIS: Diese Untermenge hat die wichtige Eigenschaft, dass sie in allen Versionen von ISO 646, einschließlich US ASCII identisch dargestellt ist, und alle Zeichen in der Teilmenge sind ebenfalls dargestellt Identisch in allen Versionen von EBCDIC. Andere populäre Codierungen, wie z. B. die von dem UUENCODE-Dienstprogramm verwendete Codierung und die als Teil von Level 2 PostScript angegebene Base85-Codierung, teilen diese Eigenschaften nicht und erfüllen somit nicht die Portabilitätsanforderungen, die eine binäre Transportcodierung für Mail treffen muss. Der Codierungsprozess repräsentiert 24-Bit-Gruppen von Eingangsbits als Ausgabe-Strings mit 4 codierten Zeichen. Von links nach rechts wird eine 24-Bit-Eingangsgruppe durch die Verkettung von 3 8-Bit-Eingangsgruppen gebildet. Diese 24 Bits werden dann als 4 verkettete 6-Bit-Gruppen behandelt, von denen jede in einer Einzelstelle im base64-Alphabet übersetzt wird. Beim Codieren eines Bitstroms über die Base64-Codierung muss angenommen werden, dass der Bitstrom mit dem höchstwertigen Bit zuerst geordnet wird. Das heißt, das erste Bit im Strom wird das höherwertige Bit im ersten Byte sein, und das achte Bit wird das niedrigwertige Bit im ersten Byte sein, und so weiter. Jede 6-Bit-Gruppe wird als Index in ein Array von 64 druckbaren Zeichen verwendet. Das Zeichen, auf das der Index verweist, wird in die Ausgabezeichenfolge gesetzt. Diese Zeichen, die in der nachstehenden Tabelle 1 identifiziert wurden, werden so gewählt, dass sie universell darstellbar sind, und das Set schließt Zeichen mit besonderer Bedeutung für SMTP (zB CR, LF) und die in diesem Dokument definierten Kapselungsgrenzen aus (zB -) . Tabelle 1: Das Base64-Alphabet Der Ausgabestream (codierte Bytes) muss in Zeilen mit maximal 76 Zeichen dargestellt werden. Alle Zeilenumbrüche oder andere Zeichen, die nicht in Tabelle 1 gefunden werden, müssen durch Decodierungssoftware ignoriert werden. In base64-Daten geben Zeichen, die sich von denen in Tabelle 1 unterscheiden, Zeilenumbrüche und andere Leerzeichen wahrscheinlich einen Übertragungsfehler an, über den eine Warnmeldung oder sogar eine Nachrichtenabweisung unter bestimmten Umständen angemessen sein könnte. Eine spezielle Verarbeitung wird durchgeführt, wenn weniger als 24 Bits am Ende der zu codierenden Daten verfügbar sind. Ein vollständiges Kodierungsquantum wird immer am Ende eines Körpers vollendet. Wenn weniger als 24 Eingangsbits in einer Eingangsgruppe verfügbar sind, werden nullbits hinzugefügt (rechts), um eine ganzzahlige Anzahl von 6-Bit-Gruppen zu bilden. Ausgabezeichenpositionen, die nicht für die Darstellung von tatsächlichen Eingangsdaten benötigt werden, werden auf das Zeichen gesetzt. Da alle base64-Eingänge eine ganzzahlige Anzahl von Oktetten sind, können nur die folgenden Fälle auftreten: (1) Das endgültige Quantenkodierungseingabe ist ein ganzzahliges Vielfaches von 24 Bits, die endgültige Einheit der codierten Ausgabe ist ein ganzzahliges Vielfaches von 4 Zeichen Ohne Füllung, (2) das endgültige Quantum der Codierungseingabe ist genau 8 Bits hier, die endgültige Einheit der codierten Ausgabe wird zwei Zeichen gefolgt von zwei padding Zeichen, oder (3) das endgültige Quantum der Codierungseingabe ist genau 16 Bits hier , Wird die endgültige Einheit der codierten Ausgabe drei Zeichen gefolgt von einem Polsterzeichen. Es ist darauf zu achten, dass die korrekten Oktette für Zeilenumbrüche verwendet werden, wenn base64-Codierung direkt auf Textmaterial angewendet wird, das nicht in kanonische Form umgewandelt wurde. Insbesondere sollten Textzeilenpausen vor der Base64-Codierung in CRLF-Sequenzen umgewandelt werden. Wichtig ist, dass dies direkt durch den Encoder statt in einem vorherigen Kanonisierungsschritt in einigen Implementierungen erfolgen kann. HINWEIS: Es besteht keine Notwendigkeit, sich darum zu kümmern, offensichtliche Kapselungsgrenzen innerhalb von base64-verschlüsselten Teilen von multipart-Entitäten zu zitieren, da keine Bindestrichzeichen in der base64-Codierung verwendet werden. Folgende Inhalte werden bei TcpMon erfasst: Anforderung von SoapUI Pro 3.0.2: POST Tf6servicesxdsrepositoryb HTTP1.1 Accept-Encoding: gzip, deflate Content-Type: multipartrelated typeapplicationxopxml start start-infoapplicationsoapxml Aktionsgrenze ---- Part1728349551.1260534830078 MIME-Version: 1.0 User-Agent: Jakarta Commons-HttpClient3.1 Host: ihexds. nist. gov: 9080 Inhalt-Länge: 13318 ------ Part1728349551.1260534830078 Inhalt-Typ: applicationxopxml charsetUTF-8 typeapplicationsoapxml actionProvideAndRegisterDocumentSetRequest Content-Transfer-Encoding: 8bit Content-ID: ------ Part1728349551.1260534830078 Content - Typ: textplain charsetus-ascii Content-Transfer-Encoding: 7bit Content-ID: ltgt Dies ist ein Devisen-Dokument. Antrag von xdstest Werkzeug: POST tf6servicesxdsrepositoryb HTTP1.1 Content-Type: multipartrelated boundaryMIMEBoundaryurnuuid613A2BD2D99F1E6B5912 60534073176 typeapplicationxopxml startlt0.urn: uuid: 613A2BD2D99F1E6B591260534073177 apache. orggt Start-infoapplicationsoapxml actionurn: ihe: iti: 2007 rovideAndRegisterDocumentSet-b User-Agent: Axis2 Host: ihexds. nist. gov: 9080 Transfer-Encoding: chunked 20F1 --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type: applicationxopxml charsetUTF-8 typeapplicationsoapxml Content-Transfer-Encoding: binary Content-ID: lt0.urn: uuid: 613A2BD2D99F1E6B591260534073177apache. orggt --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Inhalt - Type: textplain Content-Transfer-Encoding: binäre Content-ID: lt1. Urn: uuid: 613A2BD2D99F1E6B591260534073366apache. or g gt Das ist mein Dokument. Von wo kann ich Content-Transfer-Encoding als Binär einstellen In der nist öffentlichen Registry können Sie das Textdokument ansehen, das als Anhang gesendet wurde: Ich habe auch versucht, Encode Attachments als wahr unter TestRequest Properties zu machen. Aber es funktioniert auch nicht. Danke für die Hilfe

Comments

Popular posts from this blog

Forex Trading Ohne Jede Investition

Lch Forexclear Client Clearing

Forex Händler Akademie