日期:2014-05-17  浏览次数:20944 次

数据库间 字符集 问题
开发机器 与 生产机 字符集不一样
 NLS_NCHAR_CHARACTERSET 

开发:
select userenv('language') from dual;
AMERICAN_AMERICA.UTF8

生产:
select userenv('language') from dual;
AMERICAN_AMERICA.AL32UTF8


现在从 开发机exp 一个用户A下所有的对象,包括数据进生产机。请问这样生产机的 A的字集会不会 就会跟生产机不一致?
如果不一致,应该怎么处理?

------解决方案--------------------
可以参考这篇文章:
http://edu.yesky.com/edupxpt/185/2143685.shtml
------解决方案--------------------
应该没有什么问题:
因为utf8和AL32UTF8都是UTF-8的编码方式,
区别就是
utf8是支持unicode3.0的UTF-8编码方式。由于附加字符是在unicode3.1中提出的,UTF8不支持附加字符。但是unicode3.0已经为附加字符预留了编码空间,所以即使在UTF8的数据库中插入附加字符,也是可以的,只是数据库会将该字符分隔成两部分,需要占6个字符的长度。
而AL32UTF8一种UTF-8编码的字符集,支持最新的unicode4.0标准。字符长度为1,2或者3个字节,附加字符则为4字节长。
所以,从移植上来说应该没有任何问题