来自 Oracle pl/sql 的电子邮件中的特殊字符

Posted

技术标签:

【中文标题】来自 Oracle pl/sql 的电子邮件中的特殊字符【英文标题】:Special characters in email from Oracle pl/sql 【发布时间】:2009-10-07 09:24:46 【问题描述】:

我尝试使用带有挪威字符 (å æ ø) 的 Oracle 使用 utl_smtp 发送电子邮件。否则字符会在数据库中正确存储和显示,但在电子邮件中显示为问号。

我的数据库字符集是 WE8MSWIN1252

我在电子邮件中尝试了不同的 Content-Type mime 标头,包括“text/plain; charset="win-1252"',这似乎没有帮助。

【问题讨论】:

【参考方案1】:

默认 smtp 是 7bit ascii(有点老技术 :)。您必须使用UTL_SMTP.write_data 和来自documentation:

使用发送的文本 (VARCHAR2) 数据 WRITE_DATA 转换为 US7ASCII 在发送之前。如果文字 包含多字节字符,每个 文本中的多字节字符 无法转换为 US7ASCII 是 替换为“?”特点。如果 与 8BITMIME 扩展协商 使用 EHLO 的 SMTP 服务器 子程序,多字节 VARCHAR2 数据 可以通过先转换发送 使用 UTL_RAW 包将文本转换为 RAW, 然后使用发送 RAW 数据 WRITE_RAW_DATA.

有一个sample demo package on OTN 显示如何发送多字节电子邮件。

【讨论】:

以上是关于来自 Oracle pl/sql 的电子邮件中的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

用于 oracle 11g 的 PL/SQL 中的嵌入式脚本 [重复]

Oracle PL/SQL 将游标(来自函数)中的每个值一一分配给另一个游标

pl/sql 块中的子选择上的 Oracle 8i 动态 SQL 错误

Oracle PL SQL 从 SQL Dev 工作。但不是来自代码

来自两个表的 PL/SQL 唯一列标识

验证 sql/oracle 中的电子邮件/邮政编码字段