Encode / Decode(200分)

  • 主题发起人 主题发起人 codez
  • 开始时间 开始时间
C

codez

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能给出 Delphi6 中 indy 的 TIdSmtp 对中文的 Subject Encode/Decode 的
原理和代码?
还有,如何得到系统的语言码: GB,Big, us-asc, iso-8859...

我的 jay_zephyr2002@yahoo.com.cn
 
语言码我还是不太清楚,
不过,
TIdSmtp 对 中文的 subject 使用的是 base64 编码!

另外,哪位还知道对 mail 编码时候,如何选择: Quote, base64, binary, 7bit,8bit
到底用那个好呢?

 
如果你说的系统是指win32。
GetSystemDefaultLCID 可以取得当前操作系统的 local ID.
然后用GetLocaleInfo 可以取得这个local 的信息。看win32 SDK帮助。

RFC 1341 BASE 64
MIME/BASE64 的算法很简单,它将字符流顺序放入一个 24 位的缓冲区,缺
字符的地方补零。然后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位,
用下面的64个字符重新表示:“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop
qrstuvwxyz0123456789+/”。如果输入只有一个或两个字节,那么输出将用等号
“=”补足。这可以隔断附加的信息造成编码的混乱。这就是BASE64。

MIME/BASE64 的编码是 A-Z、a-z、0-9、+ 和 /
base64编码的中文膨胀大概是编码后:编码前= 4:3 ,好像是这个数字。记不清了。

RFC2045 quote-printenable
简单说就是为了解决不可打印的8位数据传送的问题制定的。比如
中文字符“中” 的内码是 D6 D0 编码为=D6=D5

可想而知,这个效率是很低的,2个字节要6个字节的编码。

7,8bit不了解。也许你指的是uuencode.

目前看base64应该是比较好的编码选择。通用性强,膨胀率较低。
 
谢谢楼上的,补充一下:
base64 和 quote 都可以在 rfc1341 找到。

7bit , 8bit, binary 都是未经加码的。
不过,后三者如何选去?

还有,请大家继续告知 语言码(CharSet)的获取。

我现在用 GetTextCharSet 判断。
 
后退
顶部