欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle托马斯回旋乱码问题解决:select*会乱码。select具体字段不乱码

程序员文章站 2022-03-24 13:38:36
前几天在centos7云服务器上装了个oracle,也是第一次安装,虽有些坎坷最终也算搞定了 之前遇到过navicate或者plsql远程登录oracle查询会乱码的问题,所以这次提前做好了准备:...

前几天在centos7云服务器上装了个oracle,也是第一次安装,虽有些坎坷最终也算搞定了

之前遇到过navicate或者plsql远程登录oracle查询会乱码的问题,所以这次提前做好了准备:


看下数据库的字符编码:

oracle托马斯回旋乱码问题解决:select*会乱码。select具体字段不乱码


windows环境变量相应设置一下

oracle托马斯回旋乱码问题解决:select*会乱码。select具体字段不乱码

但是数据导进去之后远程登录查询的时候还是傻眼了:

不管是navicate还是plsql都是这样的结果!

查询单个字段妥妥的

oracle托马斯回旋乱码问题解决:select*会乱码。select具体字段不乱码

查出整个表就乱码了

oracle托马斯回旋乱码问题解决:select*会乱码。select具体字段不乱码

谁懂我内心的崩溃吗?

后来找了个查询没问题的数据,两个库对比了一下:

select * from nls_database_parameters;

左边是正常库的结果,右边是我的乱码库的结果,只发现了一处不同

oracle托马斯回旋乱码问题解决:select*会乱码。select具体字段不乱码

好吧只能死马当活马医了,改吧:

sqlplus / as sysdba
startup

alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database character set internal_use al32utf8;
update props$ set value$='al16utf16' where name='nls_nchar_characterset';
commit;

alter system disable restricted session;

修改字符集之后重启了数据库(不知道有没有必要但是以防万一我这么做了):

shutdown immediate;
startup;

数据库删了重新导数据

问题解决了。激动

不过还是不清楚根本原因,查资料说一个是数据库字符集,一个是国家字符集,搞不懂,难道查全表和查字段是两套字符集嘛

如果有大神看到还请指导下