1、查看数据库编码、客户端编码
--数据库编码,查询的数据来源props$,这个代表的是数据库字符集。
select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
--其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表会话字符集环境
select * from nls_instance_parameters where parameter='NLS_LANGUAGE';
--session参数
select * from nls_session_parameters;
2、查看表数据的字节存储信息
select
--数据的二进制编码表示
asciistr(col1) A,
--字节数据,10进制表示
dump(col1) C10,
--字节数据,16进制表示
dump(col1,1016) C16,
--数据的uncode编码表示
compose(col1) uncode,
--数据的16进制表示
utl_raw.cast_to_raw(col1) cn,
--数据的16进制的字符串格式
utl_raw.cast_to_varchar2(utl_raw.cast_to_raw(col1)) cn2,
col1
from
schema1.table1
;
3、设置客户端(sqlplus)编码
docker登陆:
docker exec -it e48c9419b4d4 /bin/bash
登陆oracle安装用户:
su - oracle
设置服务器编码:
vi ~/.bash_profile
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
# export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
source ~/.bash_profile
echo $NLS_LANG
# 显示AMERICAN_AMERICA.ZHS16GBK表示编码修改成功
sqlplus / as sysdba
# 向表中插入中文数据测试