日期:2014-05-16  浏览次数:20355 次

oracle字符集的设置建议
    一个oracle中的乱码问题,夺去了我一个周末的时间去解决、查看、测试。总结网上的帖子,最后子集总结如下:
        
    这里只是一些建议性参考(很多字符集的详细介绍请参考我上篇帖子的参考--来自网上作者 推荐 http://hi.baidu.com/mark_tj/blog/item/1ff09c17e70ff4094a90a7c7.html
http://space.itpub.net/519536/viewspace-615379),由于日常开发过程插入和查询等操作oracle数据库都要涉及中文,所以数据库的字符集(server端)推荐使用 ZHS16GBK或AL32UTF8。
     首先有三个概念需要了解:
          1、操作系统编码;(一般情况xp 为GBK,记事本一般为此编码,以及很多桌面应用程序都是此编码)
          2、oracle客户端编码;(注册表HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> KEY_OraDb10g_home1->NLS--) 此编码的目的是告诉oracle服务器端:客户端传输的数据是何种编码,如果与服务器端一致,服务器端不做编码转换,否则,转换。
          3、oracle服务器端编码。(select userenv('language') from dual),数据库存储数据的编码。

   建议:
       服务器端:AL32UTF8
       客户端:  ZHS16GBK
   原因:保证服务器端保存正确的编码,两个过程 客户端<------>服务端都会发生编码的转换
         如果客户端和服务器端编码设置一致,则不会发生编码的转换,这样的话,服务器端就           可能保存多种的编码格式信息。