我们已经建立了一个电子邮件服务,该服务可以读取电子邮件(从IMAP)并将其放入数据库的表中。它适用于德语/英语文本,但现在我也希望收到所有其他电子邮件,例如西里尔字母或中文。但是我收到的字符是这样的:поново,еŃŃ,ирам甚至只是?????。
我们正在使用ADO对象将数据存储在数据库中,并且这些字段的列类型被声明为nvarchar,用于上传该数据的存储过程的参数也为nvarchar。
我认为这是Delphi 2007的问题,但是我仍然在这里和那里读过一些文章,其中说Delphi 2007支持Unicode(如果我需要Unicode)。因此,有人知道如何使用Cyrillic读取电子邮件并将其存储在mssql表中吗?
要从IdMessage获取文本,我正在使用IdMessage.Body.Text
谢谢, 德扬
INDY版本是10.1.5
答案 0 :(得分:1)
我已经设法通过使用UTF8Decode函数使其工作。
我已经使用UTF-8和ANSI字符集对其进行了测试,并且在两种情况下都可以使用(当然ANSI会在Unicode字符的位置产生?)。
将BodyText和主体声明为WideStrings
之后,只需使用:
BodyText := UTF8Decode(IdMessage.Body.GetText)