oracle字符集问题

字符集是指 客户端、服务端和加载数据的字符编码。

加载数据是指sql脚本、oracle备份文件等的字符编码。

 

一般来说,只要客户端 nls_lang 与 加载数据的编码相同,或包含加载数据的编码,则不会出现乱码。较为方便的做法是修改nls_lang,使其与加载数据编码一致。

解释:客户端 nls_lang 与加载数据的编码相同,或包含加载数据的编码,这样脚本中的中文就能被正确解释,无论服务器端编码是什么,都能被正确地转换和存储。查询时,oracle也能根据服务端和客户端的编码差异对数据进行转换并显示,不会出现乱码。

 

数据库服务端的字符集一般不修改,数据库创建以后,如果需要修改字符集,通常需要重建数据库,通过导入导出的方式来转换。

如果只是执行下面语句修改字符集:

ALTER DATABASE CHARACTER SET

这个命令在Oracle8时被引入Oracle,这个操作在本质上并不转换任何数据库字符,只是简单的更新数据库中所有跟字符集相关的信息。
这意味着,你只能在新字符集是旧字符集严格超集的情况下使用这种方式转换。

 

 

ps:

中文的 ansi 编码是 GBK。

 

你可能感兴趣的:(oracle,sql,脚本)