一、环境
WIN7 x64,Oracle 11g,PL/SQL 32位
没解决之前是下面这样式的
二、解决过程
(一)、修改数据库部分
1.查看数据库编码格式
select userenv('language') from dual;
select * from v$nls_parameters;
2.添加系统变量 NLS_LANG AMERICAN_AMERICA.UTF8
3.再查看修改是否生效
PL/SQL需要重新启动!!!
select userenv('language') from dual;
4.修改Oracle服务器编码格式为UTF8
启动SQL Plus
用sys账户登录
然后依次执行下面的代码:
shutdown immediate;
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8;
shutdown immediate;
startup;
注意:(1)上面的这些修改在SQL Plus或者DOS里完成,而不是在PL/SQL中,否则会报错;
(2)标红的internal_use utf8注意是utf8,而不是utf-8
======一般到这里 数据库的乱码基本解决======
可以先去试试,不行再做下面的排查,可以做一步就去测试一下,不行的话再试试后面的步骤
(二)、配置文件等
1.tomcat配置文件
C:\App\apache-tomcat-8.0.52\conf 下的server.xml文件中修改为如下:
2.其他的有关数据库连接等的配置文件
(三)、代码部分
1.Servlet中加这两句代码
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
2.jsp等页面用utf-8编码方式
最后是这样式的,中文能正常显示,不乱码了。