zoukankan      html  css  js  c++  java
  • oracle:编码问题,中文显示乱码,两个client

    作者:A_zhu

    sqlplus 、cmd连数据库,还是客户端经过服务器连数据库。都有编码的问题。

    1。客户端的编码

    2.会话(session )的编码

    3.例子(instance)的编码

    4.数据库的编码

    查看方法:

    1客户端:看regedit 中 的nls_lang

    2.session :连接数据库(cmd 方式,同下) select *from nls_session_parameters;

    3。instance :连接数据库select *from nls_instance_parameters;

    4.database: 连接数据库 select*from nls_database_parameters;

    解决方法:

    连接数据库后,select userenv(‘language’)from dual; 可以查看当前会话的编码方式。

    通过alter session set nls_lang=XXXXXXX 修改session ,再次运行 select userenv(‘language’)from dual;

    可以看到会变化,但是这解决不了问题

    如果有其他电脑可以查看成功,那直接连接数据库后select userenv(‘language’)from dual; 记为xxxxxxxxx,在自己电脑运行cmd 后,不要马上连接数据库,运行set nls_lang=xxxxxxxxxxxxxx; 然后再连数据库,问题通常会解决。必须要在运行cmd 后和连接数据库前set 了,试过断连再改不成功。

    这样每次cmd 连数据库前都要set 一次。

    想不这样可以直接修改regedit中的 nl_lang ;

    这里有问题,因为我电脑装了两个client, 一个10g ,一个11g ,在oracle 目录下有一个 nls_lang ,在10g 的目录下也有一个nls_lang ,但是11g 的是没有的,发现两个都改了之后都不成功,这时!

    看电脑的环境变量,path ,是11g 的路径在前还是10g 的路径在前,把10g 的路径放到11g 的前面。这就行了。11g有两个,10g 有1个。

    另外嘛: instance 是指什么还没搞懂, 在连接数据库后 用 alter system set nls_language=‘xxxxxx’ 也能修改成功,好像就是修改instance 的,instance 难道是指本地数据库的?!暂时不懂。

    通常下 中文的是 : SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    英文是:AMERICAN_AMERICA.ZHS16GBK

    有其他编码。这里就不解释编码了。

    regedit 中 :

    oracle 下的 nls_lang:

    10g 下的nls_lang :
     
    环境变量 :
    G:\database\bin;G:\database\product\11.2.0\client_1;G:\database\product\11.2.0\client_1\bin;
    注:前一个是10gclinet, 后两个是11g的。
  • 相关阅读:
    Iscroll4使用心得 (转)
    请求接口数据实例
    jQuery插件开发全解析(转)
    js中可以改变作用域的三种方式(改变this)
    this基础(转)
    Hash扫盲
    JS编码解码 (转)
    自定义菜单实例
    DOM(转)
    js扫盲
  • 原文地址:https://www.cnblogs.com/Azhu/p/2431117.html
Copyright © 2011-2022 走看看