zoukankan      html  css  js  c++  java
  • linux 下oracle 10g sqlplus中文显示和输入的问题

    一般情况下我们用的Oracle编码是UTF-8的

    首先我们使用的客户端securityCRT设置了字符编码 是utf8,即使Sqlplus查询正确并返回相应UTF-8格式的值也是不能正确显示滴.


    export LANG=zh_CN.UTF-8 (登陆时前台的编码问题)

    LANG变量是language的简称,这个变量是决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等。
    LANG变量清空,由于英语是无论什么情况都支持的,LANG变量被清空后,系统就默认用英语。这样设置后,在字符模式下输出的出错信息等就是全英文的了。但这种设置是临时的,只是临时改变了LANG这个bash变量而已。当退出重新登录或者切换到其他字符终端后就无效了。


    export NLS_LANG=AMERICAN_AMERICA.UTF8 (解决sqlplus中 oracle中前台编码问题)

    “NLS_LANG和数据库的字符集一样或许是正确的,但是经常是不对的。不要认为NLS_LANG必须和数据库的字符集一样,这经常是错的。” 《循序渐进Oracle》中说NLS_LANG一样的话可以提高性能,因为不需要字符集的转换。其实这样的转换不时发生在Server端,Client端 转换完成后传递给Server端。我觉得,只要NLS_LANG是Server的字符集的子集就可以。

    “NLS_LANG的字符集设置不会更改Client端的字符集。它只是用来告诉Oracle你在Client端使用什么字符集,你不能通过设置NLS_LANG去影响Client的字符集”。而且如果Client端的字符集和NLS_LANG不兼容,会导致数据库乱码。

    “如果你不在Client端设置NLS_LANG,那么默认会使用Server的NLS_LANG设置,这是错的。如果Oracle在安装时没有 设置NLS_LANG,那么NLS_LANG不会另外再设置,而是使用默认值:AMERICAN_AMERICA.US7ASCII。语言是 AMERICAN,区域是AMERICA,字符集US7ASCII”

    “设置NLS_LANG的LANGUAGE 和 TERRITORY部分不会影响存储在数据库的字符。将NLS_LANG设置为JAPANESE_JAPAN.WE8MSWIN1252不会允许你存储日 文。因为WE8MSWIN1252字符集不支持日文。但是设置成AMERICAN_AMERICA.JA16SJIS会允许你存储日文,假设你输入的字符 是JA16SJIS,并且数据库的字符集也支持日文(如UTF8或者JA16SJIS)”

  • 相关阅读:
    安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn
    Cocos2dx 学习记录 [2] 关于混合和高亮一些知识点的体会
    01背包问题
    textarea文本域宽度和高度(width、height)自己主动适应变化处理
    SSL协议具体解释
    Geeks Union-Find Algorithm Union By Rank and Path Compression 图环算法
    Linux内核源代码分析方法
    linux服务之svn
    java实现第七届蓝桥杯冰雹数
    java实现第七届蓝桥杯冰雹数
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/2564134.html
Copyright © 2011-2022 走看看