原因:是服务端和客户端的编码不一致造成的。
查看服务端的编码:select userenv ('language') from dual;
查看结果:SIMPLIFIED CHINESE_CHINA.ZHS16GBK(一般都为这个,这个是安装Oracle时默认的字符编码,没有改变就是这个)
1.解决方法:
第一步:win + R-->regedit 打开注册表 依次单击HKEY_LOCAL_MACHINE --->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(KEY_OraDb11g_home1根据自己安装的数据库而定),找到NLS_LANG,查看数值数据是否为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK(前提是查询的服务器端的编码也是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,要与服务器端的编码一致)
第二步:添加环境变量
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK(这个值即注册表中设置的字符编码,也是服务器端的字符编码,服务器端要与客户端字符编码保持一致)
第三步:重启pl/sql developer
注:修改客户端的字符集并不会修改之前插入的数据的编码,所以之前的还是乱码,重新插入的就不会在乱码。