欧元符号如何存储在Oracle的CLOB字段中(AL32UTF8字符集)?

欧元符号如何存储在Oracle的CLOB字段中(AL32UTF8字符集)?,oracle,utf-8,clob,euro,Oracle,Utf 8,Clob,Euro,我正在使用一个在WebSphere上运行并与Oracle数据库交互的web应用程序(使用AL32UTF8字符集) 如果我使用web应用程序输入一些文本,然后按下“保存”按钮,我希望文本保存到Oracle数据库中的CLOB字段中。web应用程序中有通过从数据库检索文本来查看文本的功能 当我输入包含欧元符号(€)的文本,按下“保存”按钮,并使用web应用程序查看文本时,我发现欧元符号已损坏为“?” 我正在尝试查找数据库中的文本是否已损坏 欧元符号在Oracle中是否存储为“0xE2 0x82 0xA

我正在使用一个在WebSphere上运行并与Oracle数据库交互的web应用程序(使用AL32UTF8字符集)

如果我使用web应用程序输入一些文本,然后按下“保存”按钮,我希望文本保存到Oracle数据库中的CLOB字段中。web应用程序中有通过从数据库检索文本来查看文本的功能

当我输入包含欧元符号(€)的文本,按下“保存”按钮,并使用web应用程序查看文本时,我发现欧元符号已损坏为“?”

我正在尝试查找数据库中的文本是否已损坏

  • 欧元符号在Oracle中是否存储为“0xE2 0x82 0xAC”(3字节)

  • 如果是这种情况,是否有数据库查询可以确认这一点?(假设该表称为SOME_table,CLOB字段称为SOME_field。)


  • 非常感谢。

    它的存储方式与
    varchar2
    相同,看起来是3个字节。您可以使用查看它的存储方式,但使用
    clob
    时,您需要提取相关字符(本例中为3字节),例如使用
    dbms\u lob.substr
    。这来自Linux上的11gR2:

    create table t42 (x clob, y varchar2(10));
    
    insert into t42(x, y) values ('€','€');
    
    select dump(dbms_lob.substr(x,3,1)) from t42;
    
    DUMP(DBMS_LOB.SUBSTR(X,3,1))
    --------------------------------------------------------------------------------
    Typ=1 Len=6: 195,162,194,130,194,172
    
    select dump(y) from t42;
    
    DUMP(Y)
    --------------------------------------------------------------------------------
    Typ=1 Len=6: 195,162,194,130,194,172
    
    或十六进制:

    select dump(dbms_lob.substr(x,3,1),16) from t42;
    
    DUMP(DBMS_LOB.SUBSTR(X,3,1),16)
    --------------------------------------------------------------------------------
    Typ=1 Len=6: c3,a2,c2,82,c2,ac