2012-05-23 4 views
0

오라클 11g. PL/SQL. Oracle은 AL32UTF8을 사용합니다.이메일을 보낼 때 UTF8 문자를 어떻게 보관합니까?

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

N 개의 오라클의 유니 코드 값이 (00F1) ASCII 값은 (0241)이다. 이 값을 이메일로 보낼 때. 이메일에 'manan? a'가 표시됩니다. 이메일의 HEX 값은 (3F)입니다.

질문 : 이메일을 통해 'ñ'을 어떻게 보관할 수 있습니까? 여기

은 선택 덤프입니다 : 여기에 그 조각 여기

last_name := 'Manaña' 
packagename.mail(recipient ==>'[email protected]', 
        subject ==>'Email Subject', 
        message ==>last_name); 

PROCEDURE mail(sender  IN VARCHAR2 default '[email protected]', 
    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의 조각 것입니다 내가 이메일을 보낼 때

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

, 나는 package.mail 전화

PROCEDURE write_text(conn IN OUT NOCOPY utl_smtp.connection, 
         message IN VARCHAR2) IS 
    BEGIN 
    utl_smtp.write_data(conn, message); 
    END; 
+0

<<이 행을 반환하는 술어 >>가 반환하는 your_table에서 덤프를 (lastName) 선택하는 것은 무엇을 반환합니까? 어떻게 이메일을 보내시겠습니까? 'UTL_MAIL'? 'UTL_SMTP'? 다른 것? 전자 메일을 보내는 코드 (특히 인코딩을 지정한 부분)를 표시 할 수 있습니까? –

+3

스페인어 단어는 mañana입니다 (- : – tripleee

+0

'write_text' 절차도 게시 할 수 있습니까? –

답변

2

메일은 근본적으로 7 비트입니다. 7 비트 text/plain 이외의 것을 보내려면 MIME을 사용하여 캡슐화하고 인코딩합니다. 귀하의 경우에는 Content-Type: text/plain; charset="utf-8"Content-Transfer-Encoding: quoted-printable을 delclare하는 것으로 충분합니다. 그렇다면 코스를 QP로 인코딩해야합니다. 귀하의 언어에는 아마도이를위한 라이브러리가있을 것입니다. (자신의 것을 굴리는 것은 어렵지 않지만 대개 나쁜 생각입니다.)

관련 문제