有这种转换吗?
主要是怎样把中文转换成十进制,十进制转换为十六进制.
SQL> select ascii('中') from dual;ASCII('中')
-----------
      54992Executed in 0.01 secondsSQL> select ascii('中国') from dual;ASCII('中国')
-------------
        54992以上测试不能以中文字符串形式作转为,只能单个作测试了十进制转成十六进制可以参考以下:
http://expert.csdn.net/Expert/topic/1890/1890719.xml?temp=.1711084大家对以上说法有不同意观点,继续发表(以上只是个人观点)

解决方案 »

  1.   

    还有没有别的方法,我想参照Foxmail中的编码和解码方法来做,可行码?
      

  2.   

    Foxmail的编码是MIME编码。
    可以使用Java编写Java过程来实现,不会很困难。但是数据库的负载比较大。
      

  3.   

    ASC字符串==>16进制串
    create or replace function AscToHex(sIn IN varchar2)
    RETURN varchar2
    IS
    sTmp varchar2(4000);
    i integer;
    BEGIN
    i:=1;
    stmp:='';
    for i in 1..length(sIn) loop
       sTmp:=sTmp||trim(to_char(ascii(substr(sIn,i,1)),'XXXX'));
    end loop;
    return sTmp;
    END;
    /16进制串==>ASC字符串
    create or replace function HexToAsc(sIn IN varchar2)
    RETURN varchar2
    IS
    sTmp varchar2(4000);
    i integer;
    BEGIN
    i:=1;
    stmp:='';
    loop
       exit when i>length(sIn);
       sTmp:=sTmp||chr(to_number(substr(sIn,i,2),'XXXX'));
       i:=i+2;
    end loop;
    return sTmp;
    END;
    /SQL>select hextoasc(asctohex('你好ABC么')) from dual;
    HEXTOASC(ASCTOHEX('拿好ABC么'))
    --------------------------------------------------------------------------------
    你好ABC么
      

  4.   

    在中文字符集下有问题,你再调试一下,
    字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      

  5.   

    中文字符集下,应该修改一下
    在中文字符集下,HexToAsc应该修改成
    create or replace function HexToAsc(sIn IN varchar2)
    RETURN varchar2
    IS
    sTmp varchar2(4000);
    i integer;
    x integer;
    BEGIN
    i:=1;
    stmp:='';
    loop
       exit when i>length(sIn);
       x:=to_number(substr(sIn,i,2),'XXXX');
       if x>128 then
         sTmp:=sTmp||chr(to_number(substr(sIn,i,4),'XXXX'));
         i:=i+4;
       else
         sTmp:=sTmp||chr(to_number(substr(sIn,i,2),'XXXX'));
         i:=i+2;
       end if;
       
    end loop;
    return sTmp;
    END;
    /