2.我们究竟有多少个汉字呢:
3.官方建议及字符集转换工具
所以linux伊甸园论坛,想要正常录入这种冷僻字,oracle官方建议建库时使用AL32UTFUTF8字符集。
或则目前在11.2和12c上linux 中文字符集深度linux系统,当须要从ZHS16GBK字符集转换为AL32UTFUTF8时,官方建议使用DMU工具进行转换工作linux 中文字符集,该工具可以帮助顾客对当前数据库内容进行检测和解决字符集转换过程中出现数据问题。
具体实现方式请参考MOS文档TheDatabaseMigrationAssistantforUnicode(DMU)Tool(DocID1272374.1)。
4.这么,在不变字符集的情况下,录入这种冷僻字如何办?
5.测试
--数据库服务器端:
select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
--数据库顾客端:
select userenv('language') from dual;
--顾客操作系统端:
echo $NLS_LANG--unix,linux
echo %NLS_LANG%--windows,修改系统环境变量或者注册表信息
--创建测试表
create table test(name varchar2(32),name_special nvarchar2(32));
insert into test values('䶮䫻',n'䶮䫻');
select * from test;
在linux系统下,设置两个环境变量后问题解决
--设置前
ZHYU@ora11> create table test(name varchar2(32),name_special nvarchar2(32));
Table created.
ZHYU@ora11> insert into test values('䶮䫻',n'䶮䫻');
1 row created.
ZHYU@ora11> select * from test;
NAME NAME_SPECIAL
-------------------------------- --------------------------------
?????? ??????
--设置后
[oracle@vm1 ~]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[oracle@vm1 ~]$ export ORA_NCHAR_LITERAL_REPLACE=TRUE
ZHYU@ora11> create table test(name varchar2(32),name_special nvarchar2(32));
Table created.
ZHYU@ora11> insert into test values('䶮䫻',n'䶮䫻');
1 row created.
ZHYU@ora11> select * from test;
NAME NAME_SPECIAL
-------------------------------- ----------------------------------------------------------------
䶮䫻 䶮䫻
windows环境下pl/sqldeveloper配置,要添加系统环境变量,如右图所示时