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