发送电子邮件时如何保留UTF8字符?

时间:2012-05-23 20:13:23

标签: oracle utf-8 plsql

Oracle 11g。 PL / SQL。 Oracle使用AL32UTF8。

LastName
--------
Manaña

Oracle中用于ñ的unicode值是(00F1),ascii值是(0241)。当我在电子邮件中发送此值时。电子邮件中写着“manan?a”。 HEX中的电子邮件值为(3F)。

问题:当我通过电子邮件发送时,如何保留“ñ”?

这是select dump:

  select dump(last_name) => [Typ=1 Len=7: 77,97,110,97,195,177,97]

当我发送电子邮件时,我打电话给package.mail 这是片段

 last_name := 'Manaña'
 packagename.mail(recipient ==>'emailrecipeint@blah.com',
                    subject ==>'Email Subject',
                    message ==>last_name);

PROCEDURE mail(sender     IN VARCHAR2 default 'non-reply@company.edu',
   recipients IN VARCHAR2,
   subject    IN VARCHAR2,
   message    IN VARCHAR2) IS
   conn utl_smtp.connection;
   userid varchar2(256);
    globalname varchar2(256);
  BEGIN    
    conn := begin_mail(sender, recipients, subject);
    select global_name into globalname from global_name;
    select user into userid from dual;
    write_text(conn, message);
    end_mail(conn);
   END;

以下是 package.write_text

的摘要
    PROCEDURE write_text(conn    IN OUT NOCOPY utl_smtp.connection,
                         message IN VARCHAR2) IS
    BEGIN  
     utl_smtp.write_data(conn, message);
    END;

1 个答案:

答案 0 :(得分:2)

邮件基本上是7位的。要发送除7位text / plain以外的任何内容,请使用MIME对其进行封装和编码。在您的情况下,对Content-Type: text/plain; charset="utf-8"Content-Transfer-Encoding: quoted-printable进行宣传可能就足够了。然后,如果您需要对文本进行QP编码;你的语言可能有一个库。 (推出自己的并不难,但这通常是一个坏主意。)