Delphi 2007版使用TIdMessage阅读西里尔字母的电子邮件

时间:2018-11-02 11:25:49

标签: delphi delphi-2007

我们已经建立了一个电子邮件服务,该服务可以读取电子邮件(从IMAP)并将其放入数据库的表中。它适用于德语/英语文本,但现在我也希望收到所有其他电子邮件,例如西里尔字母或中文。但是我收到的字符是这样的:поново,еŃŃ,ирам甚至只是?????。

我们正在使用ADO对象将数据存储在数据库中,并且这些字段的列类型被声明为nvarchar,用于上传该数据的存储过程的参数也为nvarchar。

我认为这是Delphi 2007的问题,但是我仍然在这里和那里读过一些文章,其中说Delphi 2007支持Unicode(如果我需要Unicode)。因此,有人知道如何使用Cyrillic读取电子邮件并将其存储在mssql表中吗?

要从IdMessage获取文本,我正在使用IdMessage.Body.Text

谢谢, 德扬

INDY版本是10.1.5

1 个答案:

答案 0 :(得分:1)

我已经设法通过使用UTF8Decode函数使其工作。

我已经使用UTF-8和ANSI字符集对其进行了测试,并且在两种情况下都可以使用(当然ANSI会在Unicode字符的位置产生?)。

将BodyText和主体声明为WideStrings

之后,只需使用:

BodyText := UTF8Decode(IdMessage.Body.GetText)