oracle插入中文之后查询输出乱码
一、建表进行测试
create table test(a varchar2(32)); insert into test values('你好'); commit; select * from test;
插入后查询表出现乱码,这是因为未设置NLS_LANG变量,这个变量告诉数据库服务端,当前客户端的字符集是什么,需要数据库在输出时决定要不要转码。NLS_LANG由language、territory、characterset三部分组成。
select * from v$nls_valid_values where parameter ='LANGUAGE'; //查看language的值范围 select * from v$nls_valid_values where parameter ='TERRITORY'; //查看territory范围 select * from v$nls_valid_values where parameter ='CHARACTERSET'; //characterset范围
调整NLS_LANG,修改环境变量export NLS_LANG=AMERICAN_AMERICA.UTF8
export NLS_LANG=AMERICAN_AMERICA.UTF8 sqlplus hr/hr123; insert into test values('你好'); //再次插入中文数据 select * from test; //查询
AL32UTF8是通用字符集,ZHS16GBK是数据库标准字符集,输入生僻字后会出现乱码。