The Annoyance Filter.pdf - Fourmilab
The Annoyance Filter.pdf - Fourmilab
The Annoyance Filter.pdf - Fourmilab
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.