来自 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 错误