Det kan vara lite tätt att läsa, men avsnittet Content-Transfer-Encoding i RFC 1341 har alla detaljer. Situationen är något från dåligt till värre Här är min sammanfattning. SMTP, per definition RFC 821, begränsar post till linjer Av 1000 tecken med 7 bitar vardera Det betyder att ingen av de byte du skickar ner röret kan ha den mest signifikanta högsta beställningsbiten inställd på 1.Innehållet som vi vill skicka kommer ofta inte att lyda denna begränsning i sig Tänk på en bild Fil eller en textfil som innehåller Unicode-tecken, byte av dessa filer kommer ofta att ha sin 8: e bit satt till 1 SMTP tillåter inte det här, så du måste använda överföringskodning för att beskriva hur du har arbetat kring mismatch. The värden för Content-Transfer-Encoding-rubriken beskriver den regel som du har valt för att lösa detta problem.7Bit Encoding.7bit betyder helt enkelt. Min data består bara av US-ASCII-tecken, som endast använder de lägre 7 bitarna för varje tecken. Du garanterar i princip att Alla bytes i din con Tält uppfyller redan restriktionerna för SMTP och behöver därför ingen särskild behandling. Du kan bara läsa den som-is. Notera att när du väljer 7bit, håller du med om att alla linjer i ditt innehåll är mindre än 1000 tecken i längd. Så länge ditt innehåll följer denna regel är 7bit den bästa överföringskoden, eftersom det inte behövs extra arbete, läser du bara byte när de kommer från röret. Det är också lätt att eyeball 7bit innehåll och känna det. Idé här är att om du bara skriver i vanlig engelsk text kommer du bra men det var inte sant år 2005 och det är inte sant today.8Bit Encoding.8bit betyder att mina data kan innehålla utökade ASCII-tecken som de kan använda den 8: e högsta biten För att ange specialtecken utanför de vanliga US-ASCII-tecknen med 7 bitar Som med 7bit finns det fortfarande en gränsen på 1000 tecken, 8bit, precis som 7bit, gör det inte någon förändring av byte när de skrivs till eller läsas från Tråd Det betyder bara att du inte är gua Ranteeing att ingen av byte kommer att ha den högsta biten inställd på 1.Detta verkar som ett steg upp från 7bit eftersom det ger dig mer frihet i ditt innehåll. RFC 1341 innehåller dock denna tidbit. As av publiceringen av detta dokument finns det Inga standardiserade Internettransporter där det är legitimt att inkludera okodad 8-bitars eller binär data i postkroppar. Det finns således inga omständigheter där 8bit eller binär Content-Transfer-Encoding faktiskt är lagligt på Internet. RFC 1341 kom ut över 20 År sedan Sedan dess har vi fått 8bit MIME Extensions i RFC 6152 Men även då kan gränserna fortfarande gälla. Notera att denna förlängning INTE eliminerar möjligheten att en SMTP-server begränsar linjens längd servrar är lediga att genomföra denna förlängning men ändå ställa in en Linjelängdsgräns inte lägre än 1000 oktetter. Binär kodning. binary är samma som 8bit förutom att det inte finns någon begränsning av linjelängd Du kan fortfarande inkludera några tecken du vill ha och det finns ingen extra kodning Simil Ar till 8bit RFC 1341 säger att det inte är en legitim kodningsöverföring som kodar RFC 3030 förlängdes detta med BINARYMIME. Quoted Printable. Before 8BITMIME-förlängningen behövde det finnas ett sätt att skicka innehåll som inte kunde vara 7bit över SMTP HTML-filer vilket Kan ha mer än 1000 tecken rader och filer med internationella karaktärer är bra exempel på detta Den citerade utskrivbara kodningen Definierad i avsnitt 5 1 i RFC 1341 är utformad för att hantera detta Det gör två saker. Definer hur man flyger utanför USA-ASCII Tecken så att de kan representeras i endast 7-bitars tecken Kortversion får de som ett lika tecken plus två 7-bitars tecken. Dina linjer kommer inte att vara större än 76 tecken och de raderna kommer att representeras med specialtecken Som sedan räddas. Kvalificerad Utskrivbar, på grund av de flyktiga och korta raderna, är mycket svårare att läsa av en människa än 7bit eller 8bit, men den stöder ett mycket större utbud av möjliga content. Base64 Encoding. If Dina data är i stort sett icke-text ex bildfil, du har inte många alternativ 7bit är borta från tabellen 8bit och binär stöds inte innan MIME-förlängningen RFCs citerad-utskrivbar skulle fungera, men är verkligen ineffektiv varje byte kommer att vara Representeras av 3 characters. base64 är en bra lösning för denna typ av data. Det kodar 3 råa byte som 4 US-ASCII-tecken, vilket är relativt effektivt. RFC 1341 begränsar vidare linjelängden för base64-kodad data till 76 tecken för att passa in i en SMTP-meddelande, men det är relativt enkelt att hantera när du bara delar upp eller sammanfogar godtyckliga tecken vid fasta längder. Den stora nackdelen är att base64-kodad data är ganska mycket helt oläslig av människor, även om det bara är ren text under.5 Fältet Content-Transfer-Encoding Header.5 Fältet Content-Transfer-Encoding Header. Många innehållstyp som kan fördelas via e-post representeras i sitt naturliga format som 8-bitars tecken eller binär data. Sådana Data kan inte överföras via vissa transportprotokoll. Till exempel begränsar RFC 821 postmeddelanden till 7-bitars US-ASCII-data med linjer som inte överstiger 1000 tecken. Det är därför nödvändigt att definiera en standardmekanism för omkodning av sådana data till en 7-bitars kortlinjformat Detta dokument anger att sådana kodningar kommer att anges med ett nytt rubrikfält för innehållsöverföring och kodning. Fältet Content-Transfer-Encoding används för att ange vilken typ av omvandling som har använts för att representera Kroppen på ett acceptabelt sätt för transport. Till skillnad från innehållstyper är en spridning av innehållsöverförings-kodande värden oönskad och onödig. Det är emellertid inte en möjlighet att upprätta en enda innehållsöverföringskodningsmekanism. En kompakt och effektiv kodning av i stor utsträckning binär data och önskan om en läsbar kodning av data som är mestadels men inte helt 7-bitars data Av denna anledning måste minst två kodande mech Anismer är nödvändiga en läsbar kodning och en tät kodning. Fältet Content-Transfer-Encoding är utformat för att specificera en inverterbar kartläggning mellan den inhemska representationen av en typ av data och en representation som enkelt kan utbytas med hjälp av 7 bitars posttransportprotokoll, såsom Som definieras av RFC 821 SMTP Det här fältet har inte definierats av någon tidigare standard Fältets värde är en enda token som anger typen av kodning, som anges nedan Formellt. Dessa värden är inte skiftlägeskänsliga. Det vill säga Base64 och BASE64 och bAsE64 Är alla likvärdiga En kodningstyp på 7BIT kräver att kroppen redan befinner sig i en sju bitars postklar representation. Det här är standardvärdet - det vill säga Content-Transfer-Encoding 7BIT antas om fältet Content-Transfer-Encoding header Är inte närvarande. Värdena 8bit, 7bit och binär betyder alltså att NO-kodning har utförts. De är dock potentiellt användbara som indikationer på typen av data i objektet och därpå Re av den typ av kodning som kan behöva utföras för överföring i ett visst transportsystem i synnerhet. Skillnaden mellan 8bit eller något annat tänkbart bitbreddstoken och binärtoken är att binär inte kräver anslutning till några gränser på linjen Längd eller till SMTP-CRLF-semantiken, medan bitbreddsbuntarna kräver sådan vidhäftning Om kroppen innehåller data i någon annan bitbredd än 7-bitar måste den lämpliga bitbreddsinnehållsöverförings-kodningstoken användas t. ex. 8 bit För okodade 8 bitars breda data Om kroppen innehåller binär data måste binär innehållsöverföringskodningstoken användas. Implementärerna kan vid behov definiera nya Content-Transfer-Encoding-värden, men måste använda en x-token som är Ett namn prefixed av X - för att ange sin icke-standardstatus, t. ex. Content-Transfer-Encoding x-my-new-kodning. Till skillnad från innehållstyp och undertyper är skapandet av nya Content-Transfer-Encoding-värden uttryckligen och starkt Avskräckt, som det verkar troligt att Hindra driftskompatibilitet med liten potentiell nytta. Användningen är endast tillåten som ett resultat av ett avtal mellan samarbetsvilliga användaragenter. Om ett rubrik för innehållsöverföring-kodning visas som en del av ett meddelandehuvud gäller den för hela meddelandets kropp. Om en Fältet Content-Transfer-Encoding-huvudfält visas som en del av en kroppsdelare, den gäller endast kroppen för den kroppsdelen Om en enhet är typ av multipart eller ett meddelande, får innehållsöverföring-kodningen inte ha något värde Annat än en bitbredd, t. ex. 7bit, 8bit, etc eller binär. Det bör noteras att e-post är karaktärorienterat, så att mekanismerna som beskrivs här är mekanismer för kodning av godtyckliga oktettflöden, inte bitströmmar. Om en bitström ska kodas Via en av dessa mekanismer måste den först omvandlas till en 8-bit byte-ström med hjälp av nätverksstandardbitordningen big endian, där de tidigare bitarna i en ström blir de högre ordningens bitar i en byte En bitström slutar inte en bränna 8-bitars gränsen måste polstras med nollor Detta dokument tillhandahåller en mekanism för att notera tillägget av sådan padding vid tillämpning av Innehållstyp, som har en padding-parameter. Kodningsmekanismerna definierade här uttryckligen kodar all data i ASCII Således, Anta att en enhet har rubrikfält som. Detta måste tolkas så att kroppen är en bas64 ASCII-kodning av data som ursprungligen var i ISO-8859-1 och kommer att vara i den teckenuppsättningen igen efter avkodning. Följande avsnitt definierar de två standardkodningsmekanismerna Definitionen av nya innehållsöverförings-kodningar är uttryckligen avskräckt och bör endast ske när det är absolut nödvändigt. All innehållsöverföringskodnings namnrymd förutom den som börjar med X - är uttryckligen reserverad för IANA för framtida bruk Privata avtal om innehållsöverföring-kodningar är också uttryckligen avskräckta. Vissa innehållsöverförings-kodningsvärden får endast användas för vissa innehållstyper. Är uttryckligen förbjudet att använda andra kodningar än 7bit, 8bit eller binärt med något innehållstyp som rekursivt inkluderar andra innehålls-typfält, särskilt multipart och meddelandeinnehållstyp Alla kodningar som önskas för organ av typen multipart eller meddelande måste Görs på den innersta nivån genom kodning av den faktiska kroppen som behöver kodas.5 Fältet Content-Transfer-Encoding Header. Många innehållstyper som kan fördelas via e-post, representeras i sitt naturliga format som 8- Bittecken eller binär data. Sådana data kan inte överföras över några transportprotokoll. Till exempel begränsar RFC 821 postmeddelanden till 7-bitars US-ASCII-data med 1000 teckenlinjer. Det är därför nödvändigt att definiera en standardmekanism för omkodning Sådana data i ett 7-bitars kortlinjeprogram Det här dokumentet anger att sådana kodningar kommer att anges med ett nytt rubrikfält för innehållsöverföring och kodning. Fältet Content-Transfer-Encoding används för att ange typen av Omvandling som har använts för att representera kroppen på ett acceptabelt sätt för transport. Till skillnad från innehållstyper är en spridning av innehållsöverföringskodningsvärden oönskad och onödig. Det är emellertid inte möjligt att upprätta en enda innehållsöverföringskodningsmekanism Verkar möjligt Det finns en avvägning mellan önskan om en kompakt och effektiv kodning av i stor utsträckning binär data och önskan om en läsbar kodning av data som är mestadels men inte helt 7-bitars data Av detta skäl kan minst två kodningsmekanismer Är nödvändig en läsbar kodning och en tät kodning. Fältet Content-Transfer-Encoding är utformat för att specificera en inverterbar kartläggning mellan den inhemska representationen av en typ av data och en representation som lätt kan utbytas med hjälp av 7 bitars posttransportprotokoll, såsom De som definieras av RFC 821 SMTP Det här fältet har inte definierats av någon tidigare standard Fältets värde är en enda token som anger typen av kodning, som uppräknad Under Formellt De här värdena är inte skiftlägeskänsliga. Det betyder att Base64 och BASE64 och bAsE64 är lika. En kodningstyp på 7BIT kräver att kroppen redan finns i en sju-bitars postklar representation. Det här är standardvärdet - det vill säga Innehåll - Transfer-Encoding 7BIT antas om fältet Content-Transfer-Encoding header inte är närvarande. Värdena 8bit, 7bit och binär innebär att NO-kodning har utförts. De är dock potentiellt användbara som indikationer på vilken typ av data som finns I objektet och därför av den typ av kodning som kan behöva utföras för överföring i ett givet transportsystem 7bit betyder att data är alla representerade som korta rader av US-ASCII-data 8bit betyder att linjerna är korta men där Kan vara icke-ASCII-tecken oktetter med högorderbitssatsen Binär betyder att det inte bara kan innehålla icke-ASCII-tecken, men också att linjerna inte nödvändigtvis är tillräckligt för SMTP-transporten. Skillnaden mellan 8bit eller Alla andra tänkbara bitbreddstoken och den binära token är att binär inte kräver anslutning till några gränser på linjelängd eller till SMTP CRLF-semantiken, medan bitbreddsbuntarna kräver sådan vidhäftning Om kroppen innehåller data i någon bit - Bredd annat än 7-bit, lämplig bitbredd Content-Transfer-Encoding token måste användas t. ex. 8bit för okodad 8 bitars bred data Om kroppen innehåller binär data måste binär Content-Transfer-Encoding token användas. Skillnaden Mellan de binära, 8bit osv. Innehållsöverföringsvärdena kan tyckas obetydliga, eftersom alla dem verkligen betyder ingen, det vill säga det har inte gjorts någon kodning av data för transport. Tydlig märkning kommer dock att vara av enormt värde Till gateways mellan framtida posttransportsystem med olika möjligheter att transportera data som inte uppfyller begränsningarna för RFC 821-transport. När det här dokumentet publiceras finns det inga standardiserade Internettransporter för vilka det är legitimt t O inkluderar okodad 8-bitars eller binär data i postkroppar Således finns det inga omständigheter där 8bit eller binär Content-Transfer-Encoding faktiskt är lagligt på Internet. Om 8-bitars eller binär posttransport blir verklighet I Internet-post, eller när det här dokumentet används tillsammans med någon annan 8-bitars eller binär-kapabel transportmekanism, ska 8-bitars eller binära kroppar märkas som sådana med den här mekanismen. De fem värden som definierats för Content-Transfer - Kodningsfältet impliserar ingenting om innehållstypen annat än den algoritm som den kodades för eller transportsystemets krav om unencoded. Implementors kan vid behov definiera nya Content-Transfer-Encoding-värden, men måste använda en x-token som Är ett namn prefixed av X - för att ange sin icke-standardstatus, t. ex. Content-Transfer-Encoding x-my-new-encoding. Till skillnad från innehållstyp och undertyper är skapandet av nya Content-Transfer-Encoding-värden explicit och Starkt avskräckt , Eftersom det verkar troligt att interoperabilitet med liten potentiell nytta inte är möjlig. Användningen är endast tillåten som ett resultat av ett avtal mellan samarbetsvilliga användaragenter. Om ett rubrik för innehållsöverföring och kodning visas som en del av ett meddelandehuvud gäller den för hela Kropp av det här meddelandet Om ett rubrik för innehållsöverföring och kodning visas som en del av en kroppsdel s-rubriker, gäller den bara för kroppens kroppsdel Om en enhet är typ av multipart eller meddelande, är innehållsöverföring-kodning Inte tillåtet att ha något annat värde än en bitbredd, t. ex. 7bit, 8bit, etc eller binär. Det bör noteras att e-post är karaktärsinriktat, så att mekanismerna som beskrivs här är mekanismer för kodning av godtyckliga bitströmmar, inte bitströmmar. Om en Bitströmmen ska kodas via en av dessa mekanismer måste den först konverteras till en 8-bit byte-ström med användning av nätverksstandardbitordningen big endian, där de tidigare bitarna i en ström blir de högre ordningens bitar i en Byte lite str Eam som inte slutar med en 8-bitars gräns måste vara vadderad med nollor Detta dokument tillhandahåller en mekanism för att notera tillsatsen av sådan padding vid applikationens innehållstyp, som har en padding-parameter. Kodningsmekanismerna definierade här uttryckligen kodar alla Data i ASCII Antag till exempel att en enhet har rubrikfält som detta ska tolkas så att kroppen är en base64 ASCII-kodning av data som ursprungligen var i ISO-8859-1 och kommer att vara i den teckenuppsättningen igen Efter avkodning. Följande avsnitt definierar de två standardkodningsmekanismerna Definitionen av nya innehållsöverförings-kodningar är uttryckligen avskräckt och bör endast ske när det är absolut nödvändigt. All innehållsöverföringskodnings namnrymd förutom den som börjar med X - är uttryckligen reserverad för IANA för framtida användning Privata avtal om innehållsöverföring-kodningar är också uttryckligen avskräckta. Vissa innehållsöverförings-kodningsvärden får endast användas på vissa innehålls - Typer Speciellt är det uttryckligen förbjudet att använda andra kodningar än 7bit, 8bit eller binärt med något innehållstyp som rekursivt innehåller andra innehålls-typfält, särskilt multipart och meddelandeinnehållstyper. Alla kodningar som önskas för organ av Typ multipart eller meddelande måste göras på den innersta nivån genom kodning av den faktiska kroppen som måste kodas. NOTERA OM ENKODERANDE RESTRIKTIONER. Även om förbudet mot att använda innehållsöverförings-kodningar på data av typen multipart eller meddelande kan tyckas alltför restriktiv, Det är nödvändigt att förhindra kapslade kodningar, i vilka data passeras genom en kodningsalgoritm flera gånger och måste avkodas flera gånger för att kunna visas korrekt. Nested encodings lägger stor komplexitet åt användaragenter bortsett från de uppenbara effektivitetsproblemen med sådana multipla kodningar , Kan de dölja den grundläggande strukturen i ett meddelande I synnerhet kan de innebära att flera avkodningsoperationer är nödvändiga helt enkelt för att f Ange vilka typer av föremål ett meddelande innehåller. Banningstestade kodningar kan komplicera jobbet för vissa mailgateways, men det verkar vara mindre av ett problem än effekten av kapslade kodningar på användaragenter. NOTERA OM FÖRETAGET MELLAN INNEHÅLLS-TYP OCH INNEHÅLLSÖVERFÖRING - Kodning. Det kan tyckas att innehållsöverföringskodningen kan härledas från egenskaperna hos innehållstypen som ska kodas eller åtminstone att vissa innehållsöverförings-kodningar kan vara mandat att användas med Specifika innehållstyper Det finns flera anledningar till varför det inte är fallet Först, med tanke på de olika typerna av transporter som används för post, kan vissa kodningar vara lämpliga för vissa transportkombinationer för innehållstyp och inte för andra. Till exempel i en 8-bitars Transport, skulle ingen kodning behövas för text i vissa teckenuppsättningar, medan sådana kodningar är tydligt nödvändiga för 7-bitars SMTP. För det andra kan vissa innehållstyp kräva olika typer av överföringskodning under olika cir Cumstances Exempelvis kan många PostScript-kroppar helt och hållet bestå av korta rader med 7-bitars data och därmed kräva lite eller ingen kodning. Andra PostScript-kroppar, speciellt de som använder binär kodningsmekanism för nivå 2 PostScript kan endast vara rimligt representerade med en binär transportkodning. Slutligen, Eftersom innehålls-typ är avsett att vara en mekanism för öppen specifikation, sträng specifikation av en koppling mellan innehållstyp och kodningar kopplar effektivt specifikationen för ett applikationsprotokoll med en specifik lägre nivåtransport. Detta är inte önskvärt eftersom utvecklarna av en Innehållstypen borde inte behöva vara medveten om alla transporter som används och vad deras begränsningar är. NOTERA FÖR ATT FÖRSTÄLLA ENKODNINGAR. De citerade och skrivbara baserna är utformade så att omvandling mellan dem är möjlig. Det enda problemet som uppstår i en sådan Omvandling är hantering av radbrytningar När man konverterar från citerad-skrivbar till base64 måste en radbrytning konverteras I en CRLF-sekvens Likaså bör en CRLF-sekvens i bas64-data omvandlas till en citationstryckbar radbrytning, men ENDAST vid konvertering av textdata. NOTERA PÅ KANONISK ENCODING-MODELL. Det fanns viss förvirring i tidigare utkast till detta memo angående Modell för när e-postdata skulle konverteras till kanonisk form och kodas, och i synnerhet hur denna process skulle påverka behandlingen av CRLF, eftersom representationen av nya linjer varierar kraftigt från system till system Av denna anledning är en kanonisk modell för kodning Presenterad som bilaga H.5 1 Quoted-Printable Content-Transfer-Encoding. Den citerade utskrivbara kodningen är avsedd att representera data som i stor utsträckning består av oktetter som motsvarar utskrivbara tecken i ASCII-teckenuppsättningen. Det kodar data så att De resulterande oktetterna är osannolikt att modifieras genom posttransport Om de data som kodas är mestadels ASCII-text, förblir den kodade formen av data till stor del igenkännlig av människor. En kropp whi Ch är helt ASCII kan också kodas i Quoted-Printable för att säkerställa integriteten för data om meddelandet ska passera genom en karaktärs-translate - och eller line-wrapping gateway. In denna kodning ska oktetterna representeras som bestäms av följande Rules. Rule 1 Allmän 8-bitars representation. En annan oktett, med undantag för de som indikerar en radbrytning enligt nylinjekonventionen för den kanoniska formen av data som kodas, kan representeras av en följd av en tvåsiffrig hexadecimal representation av oktett s Värde Siffrorna i det hexadecimala alfabetet för detta ändamål är 0123456789ABCDEF Stor bokstäver måste användas när du skickar hexadecimal data, men en robust implementering kan välja att känna igen små bokstäver vid kvitto. Således kan till exempel värdet 12 ASCII-formmatning representeras Med 0C och värdet 61 ASCII EQUAL SIGN kan representeras av 3D Förutom när följande regler tillåter en alternativ kodning är denna regel obligatorisk. Rulla 2 Bokstäver Ntation oktetter med decimala värden på 33 till 60 inklusive, och 62 till 126 inklusive, kan representeras som ASCII-tecknen som motsvarar de oktetterna EXCLAMATION POINT under mindre än och ≥3 till respektive respektive. Rule 3 White Space. Octets Med värden på 9 och 32 kan representeras som respektive ASCII TAB HT och SPACE-tecken, men MÅSTE INTE vara så representerade vid slutet av en kodad linje. Varje TAB HT eller SPACE-tecken på en kodad linje måste följaktligen följas på den linjen av En utskrivbar karaktär Speciellt en i slutet av en kodad linje, vilket indikerar en mjuk linjebrytning, se regel 5 kan följa en eller flera TAB HT - eller SPACE-tecken. Det följer att en oktett med värde 9 eller 32 uppträder i slutet av en kodad Linjen måste representeras enligt regel 1 Denna regel är nödvändig eftersom vissa MTA-meddelanden Transportmedel, program som transporterar meddelanden från en användare till en annan, eller utför en del av sådana överföringar, är kända för att mata in textlinjer Med mellanslag och andra är kända för att ta bort vita mellanslagstegn från slutet av en rad. Därför måste du, när du avkodar en Quoted-Printable-kropp, ta bort eventuellt efterföljande vitt utrymme på en rad, eftersom det nödvändigtvis måste ha lagts till av intermediära transportmedel. Rule 4-linjebrytningar. En radbrytning i en textkroppsdel oberoende av vad dess representation följer den kanoniska representationen av data som kodas, måste representeras av en RFC 822 radbrytning, vilken är en CRLF-sekvens i den citerade - Utskrivbar kodning Om isolerade CR och LF, eller LF CR och CR LF-sekvenser får visas i binär data enligt kanonformen, måste de representeras med respektive 0D, 0A, 0A 0D och 0D 0A noteringar. Notera att många Implementering kan välja att koda lokala representation av olika innehållstyper direkt. Detta kan särskilt gälla för vanligt textmaterial på system som använder nya linjekonventioner än CRLF-avgränsare. En sådan implementering är permis Sible, men genereringen av radbrytningar måste generaliseras för att redogöra för fallet där alternativa representationer av newline-sekvenser används. Rulla 5 Mjuka linjebrytningar. Den citerade-skrivbara kodningen BEFORDRAR att kodade linjer inte ska vara längre än 76 tecken. Om längre linjer Ska kodas med den kvoterade skrivbara kodningen, måste mjuka linjepauser användas. Ett lika tecken som det sista tecknet på en kodad linje indikerar en sådan icke-signifikant mjuk linjebrytning i den kodade texten Således om linjens raka form är En enda okodad linje som säger att detta kan representeras i den kvoterade utskrivbara kodningen, eftersom det här tillhandahåller en mekanism med vilka långa linjer kodas på ett sådant sätt att de återställs av användaragenten. Den 76 teckengränsen räknas inte bakom CRLF, men räknar alla andra tecken, inklusive eventuella lika tecken. Eftersom bindestreckskaraktären - representeras som sig själv i den kvoterade skrivbara kodningen måste man ta hand om när man inkapslar ett citerat utskrivbart kodat b Ody i en multipart enhet för att säkerställa att inkapslingsgränsen inte finns någonstans i den kodade kroppen. En bra strategi är att välja en gräns som inkluderar en teckenföljd, såsom vilken aldrig kan förekomma i en citerad utskrivbar kropp. Se definitionen av multipart Meddelanden senare i detta dokument. NOTE Den citerade utskrivbara kodningen representerar någonting av en kompromiss mellan läsbarhet och tillförlitlighet vid transport. Organ som kodas med den citerade utskrivbara kodningen fungerar på ett tillförlitligt sätt över de flesta postgateways, men kanske inte fungerar perfekt över några portar, särskilt De som involverar översättning till EBCDIC I teorin kan en EBCDIC-gateway avkoda en citerad utskrivbar kropp och omkoda den med base64, men sådana gateways finns ännu inte. En högre grad av förtroende erbjuds av basen64 Content-Transfer-Encoding A way För att få rimligt pålitlig transport via EBCDIC gateways är att även citera ASCII-tecknen enligt regel 1 Se bilaga B för mer information. Beca Använda citerad utskrivbar data antas generellt vara linjeorienterad. Det kan förväntas att rasterna mellan raderna av citerade utskrivbara data kan ändras i transport, på samma sätt som vanlig textpost alltid har ändrats i Internet-post När de passerar mellan system med olika newline-konventioner. Om sådana förändringar sannolikt utgör en korruption av data, är det förmodligen mer rimligt att använda bas64-kodningen snarare än den citerade-skrivbara kodningen.5 2 Base64 Content-Transfer-Encoding. Content-Transfer-Encoding är utformad för att representera godtyckliga sekvenser av oktetter i en form som inte är mänskligt läsbar. Kodnings - och avkodningsalgoritmerna är enkla men de kodade dataen är konsekvent endast cirka 33 procent större än den okodade dataen. Denna kodning baseras på En som används i Privacy Enhanced Mail-applikationer, som definieras i RFC 1113 Basen64-kodningen är anpassad från RFC 1113, med en ändring base64 eliminerar mekanismen för em Bedded clear text. A 65-tecken underuppsättning av US-ASCII används, vilket möjliggör 6 bitar att representeras per utskrivbart tecken. Den extra 65: e teckennivån, används för att beteckna en särskild bearbetningsfunktion. NOTE Den här delmängden har den viktiga egenskapen att den är Representeras identiskt i alla versioner av ISO 646, inklusive US ASCII, och alla tecken i delmängden representeras också identiskt i alla versioner av EBCDIC Andra populära kodningar, såsom kodningen som används av UUENCODE-verktyget och bas85-kodningen som anges som en del av Level 2 PostScript delar inte dessa egenskaper och uppfyller således inte de portabilitetskrav som en binär transportkodning för post måste uppfylla. Kodprocessen representerar 24-bitars grupper av ingångsbitar som utgångssträngar med 4 kodade tecken. Utgående från vänster till höger, En 24-bitars ingångsgrupp bildas genom sammanfogning av 3 8-bitars ingångsgrupper Dessa 24 bitar behandlas sedan som 4 sammansatta 6-bitars grupper, vilka var och en är översatta till en enda siffra i N i base64-alfabetet När kodning av en bitström via bas64-kodningen måste bitströmmen antas beställa med den mest signifikanta biten först. Det vill säga den första biten i strömmen blir högordningsbiten i det första Byte och den åttonde biten kommer att vara lågordningsbiten i den första byten osv. Varje 6-bitars grupp används som ett index i en uppsättning 64 skrivbara tecken. Tecknet som refereras av indexet placeras i utgången Sträng Dessa tecken, som anges i tabell 1 nedan, väljs så att de är universellt representativa och uppsättningen utesluter tecken med särskild betydelse för SMTP, t. ex. CR, LF och de inkapslingsgränser som definieras i detta dokument e g. Table 1 The Base64 Alphabet. The output stream kodade byte måste representeras i rader med högst 76 tecken. Alla Alla rader eller andra tecken som inte finns i Tabell 1 måste ignoreras genom avkodning av programvara. I base64-data, andra tecken än de i tabell 1, rad Raster och Annat vitt utrymme anger antagligen ett överföringsfel, om vilket ett varningsmeddelande eller till och med ett meddelandeavvisande kan vara lämpligt under vissa omständigheter. Speciell bearbetning utförs om färre än 24 bitar är tillgängliga vid slutet av data som kodas. En fullständig kodande kvant är Alltid avslutad i slutet av en kropp När färre än 24 ingångsbitar är tillgängliga i en ingångsgrupp läggs nollbitar till höger för att bilda ett integrerat antal 6-bitars grupper Utgångsteckenpositioner som inte krävs för att representera aktuell ingångsdata Är inställda på tecknet Eftersom alla bas64-ingångar är ett integrerat antal oktetter kan endast följande fall uppstå 1 slutkvoten av kodningsingång är en integrerad multipel av 24 bitar här, den slutliga enheten för kodad utmatning kommer att vara en integrerad multipel av 4 tecken utan stoppning, 2 slutkvoten av kodningsingången är exakt 8 bitar här, den slutliga enheten för kodad utmatning kommer att vara två tecken följt av två padding-tecken eller 3 Den slutliga kvantiteten av kodningsingången är exakt 16 bitar här, den slutliga enheten för kodad utmatning kommer att vara tre tecken följt av en padding character. Care måste tas för att använda rätt oktetter för radbrytningar om base64-kodning appliceras direkt på textmaterial som Har inte konverterats till kanonisk form I synnerhet bör textlinjeavbrott konverteras till CRLF-sekvenser före bas64-kodning. Det viktiga att notera är att detta kan göras direkt av kodaren i stället för i ett tidigare kanonicaliseringssteg i vissa implementeringar. NOTERA There is no need to worry about quoting apparent encapsulation boundaries within base64-encoded parts of multipart entities because no hyphen characters are used in the base64 encoding. Please Whitelist This Site. I know everyone hates ads But please understand that I am providing premium content for free that takes hundreds of hours of time to research and write I don t want to go to a pay-only model like some sites, but when more an d more people block ads, I end up working for free And I have a family to support, just like you. If you like The TCP IP Guide, please consider the download version It s priced very economically and you can read all of it in a convenient format without ads. If you want to use this site for free, I d be grateful if you could add the site to the whitelist for Adblock To do so, just open the Adblock menu and select Disable on Or go to the Tools menu and select Adblock Plus Preferences Then click Add Filter at the bottom, and add this string Then just click OK. Thanks for your understanding. Sincerely, Charles Kozierok Author and Publisher, The TCP IP Guide. NOTE Using software to mass-download the site degrades the server and is prohibited If you want to read The TCP IP Guide offline, please consider licensing it Thank you. The Book is Here and Now On Sale. Enjoy The TCP IP Guide Get the complete PDF. MIME Content-Transfer-Encoding Header and Encoding Methods Page 2 of 3.MIME Encoding Methods. To send non-ASCII data in MIME, it is necessary that it be encoded The Content-Transfer-Encoding header is used to specify how a MIME message or body part has been encoded, so that it can be decoded by its recipient The following types of encoding are defined.7bit This indicates that the message is already in ASCII form compatible with RFC 822 It is the default and is what is assumed if no Content-Transfer-Encoding header is present.8bit binary These synonymous values mean the message has been encoded directly in 8-bit binary form Yes, I did just say that this would violate the rules of RFC 822 These options appear to have been included to support future mechanisms for transporting binary data directly RFC 1652 describes an SMTP extension that discusses this in part SMTP Service Extension for 8bit-MIMEtransport sic, there is no space between MIME and transport However, the standard is clear that this still does not allow the transfer of raw binary data using SMTP and RFC 822.quoted-printa ble This is a special encoding that is used when most of the data is ASCII text, but when it contains certain violations of the rules of RFC 822 These illegal sections are converted using special encoding rules so the data as a whole is consistent with RFC 822.base64 An encoding used to allow arbitrary binary data to be represented in ASCII form The data is then sent as ASCII and decoded back into binary form by the recipient. The quoted-printable and base64 encodings are the most interesting ones, because they are what allow non-RFC-822 data to be sent using RFC 822.Key Concept MIME supports four encoding methods 7bit 8bit binary quoted-printable and base64 7bit encoding is standard ASCII and is used for text quoted-printable encoding is for output that is mostly text but has some special characters that must be encoded base64 is used for arbitrary binary files The 8bit encoding method is defined in MIME but not used for RFC 822 messages. This encoding method is used when the message is mostly ASCII only the problem bytes are encoded The result is that RFC 822 compatibility is achieved while maintaining most of the data as regular text so it can still be easily understood by a human. An example of where this would be letters with tildes or accents, such as those used in French or Spanish Another would be a text message formed using an editor that inserts carriage return characters in the middle of a line Most of the message is still text The quoted-printable encoding can be used here, with the carriage return characters represented as 0D the hexadecimal value of the character prepended by an equal sign RFC 2046 contains more details on how this is done. Following content is been captured at TcpMon. Request made by SoapUI Pro 3 0 2.POST tf6 services xdsrepositoryb Accept-Encoding gzip, deflate Content-Type multipart related type application xop xml start start-info application soap xml action boundary ---- Part1728349551 1260534830078 MIME-Version 1 0 User-Agent Jakar ta Host Content-Length 13318.------ Part1728349551 1260534830078 Content-Type application xop xml charset UTF-8 type application soap xml action ProvideAndRegisterDocumentSetRequest Content-Transfer-Encoding 8bit Content-ID.------ Part1728349551 1260534830078 Content-Type text plain charset us-ascii Content-Transfer-Encoding 7bit Content-ID. This is depeche s document. Request made by xdstest tool. POST tf6 services xdsrepositoryb Content-Type multipart related boundary MIMEBoundaryurnuuid613A2BD2D99F1E6B5912 60534073176 type application xop xml start start-info application soap xml action urn ihe iti 2007 rovideAndRegisterDocumentSet-b User-Agent Axis2 Host Transfer-Encoding chunked.20f1 --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type application xop xml charset UTF-8 type application soap xml Content-Transfer-Encoding binary Content-ID.--MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type text plain Content-Transfer-Encoding binary Content-ID 1 g. This is my document. From where can i set Content-Transfer-Encoding as binary. At the nist public registry, you can view the text document which is been sent as an attachment. I have also tried making Encode Attachments as true under TestRequest Properties But its not working either Thanks for the help.
No comments:
Post a Comment