当前位置: 首页 > article >正文

ORACLE的字符集

我们在ORACLE数据库中常见的两种字符集:AL32UTF8/ZHS16GBK

什么是字符集: 
在计算机语言中每个国家对于自己国家语言的二进制代码设计是不一样的,例如:
zhs16gbk 简体中文字符集 :中   01010 国 01100  0101001100
utf8 A 010 B 100 C 110  ABC 010001110
0101001100  ABC
乱码

字符集是在创建数据库时选择的。请选择最能满足您现在和将来业务需要的字符集,因为选定字符集后很难再更改。
很难再更改=改不了 非要修改 只能删库重建

DBA在建库之间 数据库叫什么 用什么字符集

查询操作系统字符集:
locale  (  unix or linux)
chcp  (windows)

查询数据库所支持的数据库字符集:

select * from v$nls_valid_values where parameter='CHARACTERSET';


数据库服务器字符集select * from nls_database_parameters where parameter like '%CHARACTERSET%';  其来源于props$,是表示数据库的字符集。
  
客户端字符集环境 select * from v$nls_parameters where parameter in   ( 'NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');  --查看客户端字符集
  

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

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

影响Oracle数据库字符集最重要的参数是NLS_LANG参数。

它的格式如下: NLS_LANG = language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。

其中:

Language: 指定服务器消息的语言, 影响提示信息是中文还是英文

Territory: 指定服务器的日期和数字格式

Charset:  指定字符集。

如:AMERICAN _ AMERICA. ZHS16GBK

从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
 
set NLS_LANG=AMERICAN_CHINA.ZHS16GBK
set NLS_LANG=Simplified Chinese_china.ZHS16GBK


echo $NLS_LANG$ 查看当前的操作系统的环境变量的字符集设置

修改当前会话的字符集:   export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 
当前数据库使用的字符集:

SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';--当前数据库使用的字符集

  
select * from v$nls_parameters where parameter in   ( 'NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');  --查看客户端字符集

ALTER SESSION SET NLS_LANGUAGE= 'SIMPLIFIED CHINESE' NLS_TERRITORY= 'CHINA' NLS_NUMERIC_CHARACTERS='AL32UTF8';

alter session set NLS_NUMERIC_CHARACTERS= '.,';

###########################################################################


set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 windows上设置    set NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280


select id,name,dump(name,1016) from t;

export  NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

set NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280

set NLS_LANG=AMERICAN_AMERICA.US7ASCII

set NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280"

set NLS_LANG=AMERICAN_AMERICA.AL32UTF8

set nls_lang=Simplified Chinese_China.AL32UTF8
#####################################################################################

如果想正确导出源数据库数据,则 Export 过程中用户会话字符集应等于源
数据库字符集或是源数据库字符集的超集

查询 oracle client  端的字符集:
在 windows 平台下,就是注册表里面相应 OracleHome 的 NLS_LANG。还可
以在 dos 窗口里面自己设置,
比如: set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量。

在 unix 平台下,就是环境变量 NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现 server 端与 client 端字符集不一致,请统一修改为同
server 端相同的字符集。


http://www.kler.cn/a/388695.html

相关文章:

  • MySQL数据库:SQL语言入门 【下】(学习笔记)
  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • C++单例模式实现
  • 闯关leetcode——3174. Clear Digits
  • 【C++】类与对象的基础概念
  • linux 下查看程序启动的目录
  • 选择适合你的报表工具,山海鲸报表与Tableau深度对比
  • 【基于轻量型架构的WEB开发】课程 作业4 AOP
  • 98_api_intro_websitetools_sslcertinfo
  • 【GeoJSON在线编辑平台】(2)吸附+删除+挖孔+扩展
  • SpringBoot框架:打造下一代共享汽车系统
  • 深度学习为什么不用二阶优化?
  • [极客大挑战 2019]HTTP 1
  • ChatGPT中的“GPT”是什么含义?
  • <<机器学习实战>>27-30节笔记:sklearn使用方法
  • UDP checksum(UDP校验和)
  • 嵌入式硬件实战基础篇(一)-STM32+DAC0832 可调信号发生器-产生方波-三角波-正弦波
  • Java基础07
  • 2025年前端能否抵挡住AI浪潮的正式冲击 - 是否前端已死?我们又该何去何从
  • 腾讯会议pc端3.29.11开启悬浮窗口
  • C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信
  • ScheduledThreadPoolExecutor 定制化线程池任务调度及起底层原理
  • tcpdump 是一款功能强大的网络数据包分析工具
  • Centos安装Minio
  • Spring Boot中实现多数据源连接和切换的方案
  • QML-简单项目实战一