是否需要以特定方式设置任何编译器指令或预处理器命令以使 Indy 返回 Utf-8 字符串而不是将它们截断为 Ansi 字符串?如果这很重要,我正在处理的项目上有各种 Delphi 模式标志。
如果我直接将主题行设置为 UTF-8 字符串(如下所示),它会在 GUI 上正确显示,因此正确设置了 utf-8 支持并且我使用了适当的字体和所有这些好东西。为清楚起见,此代码中将主题声明为 Utf8String。
MailItem.Subject := 'îņŢëŕŃïóЙǟŁ ŜũƥĵεϿד'; //Displays correctly
但是,如果我从标题中提取相同的主题行,使用 Indy 对其进行解码,我会将每个国际字符替换为恰好一个问号,即应该是字符的数量。看起来它正在将 UTF-8 转换为 ANSI,这不是我想要的。
MailItem.Subject := IdCoderHeader.DecodeHeader('=?utf-8?B?w67FhsWiw6vFlcWDw6/Ds9CZx5/FgSDFnMWpxqXEtc61z7/Xkw==?='); //Displays '?????????? ???????'
那么什么事情可能会出错和/或我该如何解决呢?
我使用的是来自 Indy 网站的最新版本的 Indy10,以及 Windows 上的 Lazarus 1.0,所以我认为这不是“我的软件需要更新”错误,我认为这可能是某种配置问题。