oracle是9i的数据库,数据库编码是gb18030
然后在表中插入了一个生僻汉字,占用4个字节的那种汉字
在delphi2009中取出来就成?了
通过doa方式和odbc方式都试了,都不行,取出来的是??,然后内码变成了3F 3F
请教高手该怎么显示

解决方案 »

  1.   

    "在表中插入了一个生僻汉字"?
    直接通过DBMS 写进去?是否试过在程序中去写入这种生僻字呢?
      

  2.   

    gb18030编码的汉字有4个字节的,我是通过函数utl_raw.cast_to_varchar2直接把内码写入数据库,通过程序不也是用sql语句吗?这样写入的都变成?了
      

  3.   

    写入的时候,通过内码直接用oci.dll的sql语句写。
    读出的时候,通过vcl的机制读出来,你觉得结果会不会是一样的呢?好比操作windows文件系统一样。不同文件打开,读写,关闭函数必须配对使用,不然肯定有问题的啦。
      

  4.   

    insert 的时候utl_raw.cast_to_varchar2('')这个值是怎么取的,你是如何取得到内码的呢?
      

  5.   

    看我的博客让《Windows系统和应用程序使用GB18030》一文。