我的库是oracle 10g的 NLS_CHARACTERSET为WE8ISO8859P1 我想在这个库里建一个 编码为utf-8的表,可以实现么?

解决方案 »

  1.   


    utf-8是WE8ISO8859P1 的超级,可以将字符集从WE8ISO8859P1 转换成 utf-81.  关闭数据库
    SQL>SHUTDOWN IMMEDIATE2. 启动到Mount
    SQL>STARTUP MOUNT; 
    SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; 
    SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
    SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
    SQL>ALTER DATABASE OPEN; 
    SQL>ALTER DATABASE CHARACTER SET UTF8; 
    SQL>ALTER DATABASE national CHARACTER SET UTF8; 
    SQL>SHUTDOWN IMMEDIATE; 
    SQL>STARTUP注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start) 按上面的做法就可以。若出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’ 这样的提示信息,要解决这个问题有两种方法
    1. 利用INTERNAL_USE 关键字修改区域设置,
    2. 利用re-create,但是re-create有点复杂,所以请用internal_use
     SQL>SHUTDOWN IMMEDIATE;
    SQL>STARTUP MOUNT EXCLUSIVE;
    SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
    SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
    SQL>ALTER DATABASE OPEN;
    SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
    SQL>SHUTDOWN immediate;
    SQL>startup;如果按上面的做法做,National charset的区域设置就没有问题
    http://blog.csdn.net/tianlesoftware/archive/2009/12/01/4915223.aspx
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  2.   

    有这么说  utf-8是WE8ISO8859P1 的超级,可以将字符集从WE8ISO8859P1 转换成 utf-8 但注意 不能包含中文 
      

  3.   

    我的意思是,数据库其他的表依然是ISO-8859-1编码的,只是让某个表变成UTF-8的
      

  4.   


    这个比较困难...
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716