原因:因为数据库的编码格式和plsql developer的编码格式不统一造成的。
解决方案:
1.
查询数据库编码
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
在电脑属性里设置系统环境变量
变量名:NLS_LANG
变量值:language_territory.charset(更改为数据库编码一致)
AMERICAN _ AMERICA. ZHS16GBK(数据库默认的字符编码)
SIMPLIFIED CHINESE_CHINA.AL32UTF8(或者utf8字符编码)等
重新启动qlsql。
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式,
Charset: 指定字符集。(真正影响数据库字符集)
2.修改数据库编码格式(不建议修改),一般创建数据库时已经确定字符集编码,如果直接更换数据库编码,会导致浏览器显示编码乱码,如果要换,需要重新创建数据库,创建编码格式,修改dmp文件的字符编码,进行导入
更改数据库字符编码:
修改字符集
使用sqlplus链接,sys用户以DBA身份登陆
sys as sysdba
然后关闭数据库服务
shutdown immediate;
然后以mount方式启动
startup mount
进入数据库维护模式
ALTER SYSTEM ENABLE RESTRICTED SESSION;
然后启动数据库
ALTER DATABASE OPEN;
然后修改字符集,(跳过超子集校验)
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
然后停止数据库服务
shutdown immediate;
然后启动服务
STARTUP;