0

Oracle11g。PL/SQL。OracleはAL32UTF8を使用します。

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

OracleのñのUnicode値は(00F1)、ASCII値は(0241)です。この値をメールで送信するとき。メールには「manan?a」と書かれています。HEXの電子メール値は(3F)です。

質問:メールで送信するときに「ñ」を保持するにはどうすればよいですか?

選択したダンプは次のとおりです。

  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;
4

1 に答える 1

2

メールは基本的に7ビットです。7ビットのテキスト/プレーン以外のものを送信するには、MIMEを使用してカプセル化およびエンコードします。あなたの場合、おそらく宣言Content-Type: text/plain; charset="utf-8"してとで十分Content-Transfer-Encoding: quoted-printableです。次に、もちろん、テキストをQPエンコードする必要がある場合。あなたの言語にはおそらくこのためのライブラリがあります。(自分でロールするのは難しいことではありませんが、通常は悪い考えです。)

于 2012-05-23T20:23:26.953 に答える