我们都知道Oracle字符集问题,可以分成三类: 即,数据库字符集, sqlplus的字符集(客户端字符集),以及 终端程序的字符集 (非Oracle的),以下的文章就是对Oracle字符集三种类型的主要描述。

1、数据库字符集

数据库字符集是所有字符问题的核心,只有数据库本身的字符集正确了,客户端的字符集才可能正确。这里只的客户端包括sqlplus以及我们自己读数据库的应用程序。

在定位问题时,我们需要先看看数据库当前是什么Oracle字符集。

1)查询数据库字符集

select * from nls_database_parameters

其中 nls_language表示了显示方式, 就是sqlplus的程序的显示字体,有SIMPLIFIED CHINESE,American america

其中 nls_characterset是字符集设定, 常用的一些Oracle字符集有UTF8,US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK, AL32UTF8

2)修改数据库字符集

当发现数据库字符集不正确时,如我们期望时GBK的,而数据库当前是其他的,从而引起中文乱码。这时我们需要修改数据库字符集。步骤如下:

$sqlplus /nolog

SQL>conn / as sysdba;

若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:

SQL>STARTUP MOUNT;

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

SQL>ALTER SYSTEM SETJOB_QUEUE_PROCESSES=0;

SQL>ALTER SYSTEM SETAQ_TM_PROCESSES=0;

SQL>ALTER DATABASE OPEN;

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP

2 客户端字符集

如果服务器端的Oracle字符集是正确的,而在客户端下,如sqlplus仍然不能正确显示中文,这一般是由于服务器端的字符集设定与客户端的字符集设定不同造成的。只要将两者修改一致就可以解决问题。

1)查询客户端字符集

elect * from nls_instance_parameters

客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

select userenv('language') from dual;

会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如Oracle字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。 或者.zhs16gbk。注意zhs16gbk前面那个点是必须的哦!!

2) 修改客户端字符集

Oracle 的sqlplus会去读取OS中环境变量下的nls_lang信息

NSL_LANG包括三个部分(语言_地区.字符集)就是V$NLS_PARAMETERS表中的NLS_LANGUAGE,NLS_TERRITORY,NLS_CHARACTERSET

例如可以在cmd中键入

setnls_lang="Simplified chinese_china.utf8"

setnls_lang="american_america.us7ascii"

setnls_lang="american_america.zhs16gbk"

setnls_lang="Simplified chinese_china.zhs16gbk"

setnls_lang=".utf8"

setnls_lang=".zhs16gbk"

setnls_lang=".us7ascii"

unix下类似, 不过nls_lang要大写NLS_LANG, 在.profile或这.bash_profile(根据你用的shell)里更改NLS_LANG可以长久保持环境变量值.

3、终端字符集

如果数据库字符集和sqlplus的字符集一致, 还是不能正确显示了, 那很可能就是你的终端应用程序的Oracle字符集不支持了. 例如你用bash登陆sqlplus, 如果你的bash是个小字符集, 那么就不能正常显示了.linux修改bash的字符集, 可以先键入locale, 看有哪些环境变量, 再用export设置.

【编辑推荐】

【责任编辑:孙巧华 TEL:(010)68476606】

点赞 0

oracle字符集有哪几种,Oracle字符集的三大类型相关推荐

  1. oracle数据库出错0095,一种ORACLE数据库优化配置的方法及系统专利_专利查询 - 天眼查...

    1. 一种ORACLE数据库优化配置的方法,其特征在于,包括: 建立配置库类别,根据所述配置库类别分别对应建立配置参数,并为所述配置参数设 置取值列表,其中,所述配置参数的数据类型为数值型,布尔型或字 ...

  2. mysql和oracle用户管理_五种Oracle用户的授权与管理

    创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用 创建和删除用户是Oracle用户管理中的常见操作,但这其中隐 ...

  3. oracle 字符集 自造字,循序渐进Oracle:自定义字符集的使用、更改字符集的内部方式及字符集更改的案例...

    第3章  Oracle的字符集(3.9-3.11) Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据.通过全球支持,Oracle可以支持多 ...

  4. Oracle字符集的查看查询和Oracle字符集的设置修改

    本文主要讨论以下几个部分:如何查看查询oracle字符集. 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题. 一.什么是Oracle字符集 Oracle字符集是 ...

  5. oracle imp导入修改字符集,Oracle中IMP导入数据时提示字符集不一致解决

    生产环境中经常使用到Oracle的IMP导入和EXP导出来功能来达到数据迁移的目的,通常在源数据库和目标数据库中查询字符集是否致, 测试环境中导入IMP导入报错信息如下: 导入命令如下: [oracl ...

  6. oracle 查询字符代码dump,字符集问题(Linux、oracle、终端等,导入导出数据)

    locale的设定及其LANG.LC_ALL.LANGUAGE环境变量的区别 例如zh_CN.GB2312.zh_CN.GB18030或者zh_CN.UTF-8.很多人都不明白这些古里古怪的表达方式. ...

  7. linux 查看oracle数据库字符集,Oracle字符集的查看查询和Oracle字符集的设置修改

    三. 修改Oracle的字符集 8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误. Startup nomount; A ...

  8. oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)

    由于在安装oracle9i时不慎选错了字符集,然后手动update props$表修改了字符集(手动修改props$是oracle7的招数, 在oracle8和oracle9中虽然也能修改,但是会留下 ...

  9. Oracle 12.2 新特性 | PDB不同字符集变更深入解析

    从12c版本12.1开始,就有了新特性--Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Database实现了进一步的隔离,其中包含如下 ...

最新文章

  1. Go 中切片索引与 Python 中列表索引的差异
  2. 听说Java被玩儿淘汰了?骨灰级程序员:远比你们想象的强大!
  3. What's going to be? 2016-Oct-12
  4. IIS6配置Asp.net MVC运行环境
  5. 指向常对象的指针变量
  6. SQL Server2005 使用FOR XML选项进行字符串的串联聚合
  7. Netiler 开发规范
  8. fpga如何约束走线_FPGA时序约束实战篇之多周期路径约束
  9. c语言循环10次代码,C语言教学(七-上)for循环
  10. 前端 linux ps,Linux ps命令
  11. HDOJ-1272 小希的迷宫
  12. 关于网上商城开发的随笔记录1
  13. [转]WebGL中文教程
  14. ps 学习总结-卸载不了
  15. 云计算 三种模式 各种云的区别
  16. Activity的生命周期和启动模式
  17. 亲测成功 office 2007 安装问题 无法找到OfficeLR.cab/OfficeMUI.msi
  18. 一款好用的网速、内存实时显示插件----TrafficMonitor
  19. 关于三角恒等变换与正余弦定理的学习总结
  20. 仿果壳网手机登陆界面源代码

热门文章

  1. (保姆级)利用ffmpeg将flv批量转mp4
  2. 常用知识图谱数据集FB15K, YAGO, WN18
  3. 功能监控器MAX706SESA中文资料
  4. matlab-利用SVD(奇异值分解)来进行图片压缩
  5. 中国大数据金融中心崛起:贵州落子大数据
  6. 论文笔记:Highly accurate protein structure prediction with AlphaFold (AlphaFold 2 appendix)
  7. 如何计算近似纳什均衡_纳什-纳什解(Nash-in-Nash Solution)简介
  8. 根据byte数组,生成文件
  9. JavaScript学习手册十五:事件处理
  10. Hadoop生态系统的元数据管理和数据治理平台--Atlas 学习