12.06.2015 Views

The Annoyance Filter.pdf - Fourmilab

The Annoyance Filter.pdf - Fourmilab

The Annoyance Filter.pdf - Fourmilab

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

128 MAIL FOLDER ANNOYANCE-FILTER §148<br />

148. After decoding the Quoted−Printable or Base64 sequence from the header line, examine its<br />

character set specification. If it is a character set we know how to decode and interpret, instantiate the<br />

appropriate components and replace the decoded sequence with its interpretation. <strong>The</strong>re is no need to<br />

further process ISO−8859 sequences.<br />

〈 Interpret header quoted string if character set known 148 〉 ≡<br />

if (charset .substr (0, 6) ≡ "gb2312") {<br />

EUC MBCSdecoder mbd euc; /∗ EUC decoder ∗/<br />

GB2312 MBCSinterpreter mbi gb2312 ; /∗ GB2312 interpreter ∗/<br />

mbd euc.setMailFolder (this);<br />

mbi gb2312 .setDecoder (mbd euc);<br />

drt = mbi gb2312 .decodeLine (drt );<br />

}<br />

else if (charset ≡ "big5") {<br />

Big5 MBCSdecoder mbd big5 ; /∗ Big5 decoder ∗/<br />

Big5 MBCSinterpreter mbi big5 ; /∗ Big5 interpreter ∗/<br />

mbd big5 .setMailFolder (this);<br />

mbi big5 .setDecoder (mbd big5 );<br />

drt = mbi big5 .decodeLine (drt );<br />

}<br />

else if (charset ≡ "utf−8") {<br />

UTF 8 Unicode MBCSdecoder mbd utf 8 ; /∗ Unicode UTF-8 decoder ∗/<br />

Unicode MBCSinterpreter mbi unicode ; /∗ Unicode interpreter ∗/<br />

mbd utf 8 .setMailFolder (this);<br />

mbi unicode .setDecoder (mbd utf 8 );<br />

drt = mbi unicode .decodeLine (drt );<br />

}<br />

else if (charset ≡ "euc−kr") {<br />

EUC MBCSdecoder mbd euc; /∗ EUC decoder ∗/<br />

KR MBCSinterpreter mbi kr ; /∗ Korean (euc−kr) interpreter ∗/<br />

mbd euc.setMailFolder (this);<br />

mbi kr .setDecoder (mbd euc);<br />

drt = mbi kr .decodeLine (drt );<br />

}<br />

else if ((charset .substr (0, 8) ≡ "iso−8859") ∨ (charset ≡ "us−ascii")) {<br />

/∗ No decoding or interpretation required for ISO-8859 or US-ASCII ∗/<br />

}<br />

else {<br />

ostringstream os ;<br />

}<br />

os ≪ "Header␣line:␣no␣interpreter␣for␣(" ≪ charset ≪ ")␣character␣set.";<br />

reportParserDiagnostic(os .str ( ));<br />

This code is used in section 147.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!