今天很开心又能跟技术大神们学到知识。
起因是在redhat Linux上装oracle 11g,装完之后,把.bmp后缀格式的数据导入数据库里面,然后客户端中文字符被显示成乱码,web页面也被显示成乱码。忽的记起前天遇到过另外一种情况就是web页面的中文不是乱码,但是数据库客户端表格里中文被显示的是乱码。我表达的清楚么 = = 嗯就是这两种情况接连两天频频遇到。
呐 先说说前天的情况,数据导入mysql, web页面没有乱码,PL/SQL客户端有乱码。
参考链接http://www.jb51.net/article/49946.htm 在本机添加环境变量即可。
今天的记忆深刻,记载下来今天的情况,数据倒入oracle之后 PL/SQL客户端显示的是乱码,然后项目的web页面也同样是乱码,先快速定位是哪里的字符集不对或是不一致,想到添加环境变量,于是先添加好windows本机,重启tomcat刷新页面,依然乱码,确定是oracle server、PL/SQL和dmp数据文件三者字符集设定不一致的原因,那么如何查看并修改呢,在百度上找到大神博文http://www.cnblogs.com/rootq/articles/2049324.html
--以下是今天用到的解决方式----
一、查看数据库字符集
1.查看oracle server字符集命令:
SQL> select userenv('language') from dual;
会返回一个字符集,记着。
2.查看PL/SQL端字符集
SQL> select * from nls_instance_parameters;
然后其实重点就是要修改oracle server端的字符集啊,因为本地添加了环境变量 PL/SQL端已经可以支持显示中文了,先不考虑bmp文件的字符集了,一定就是bmp文件与oracle server的字符集不一致,导入到oracle server里面才会在PL/SQL中查询显示成中文乱码,web页面必然乱码(当然这么说话有些事后诸葛了,但是这样的思路有点对的样子 = 。=
二、修改字符集使一致。
sys用户连接数据库,
SQL>shutdown immediate;
SQL>startup mount;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP
启动成功,需要把bpm文件删掉重新导入数据库,并重启tomcat,刷新页面,成功 ,PL/SQL客户端也没有乱码了
题外 觉得Java开发们大多性格好棒,和你们一起共事我很开心并且深感荣幸~真的~其实超喜欢这样跑来跑去的奔波感觉,总能认识新朋友,永远对下一站任务充满期待与感激,在点点滴滴的工作中积累经验,忙碌并快乐着。
另外http://jelly.iteye.com/blog/654300这篇博文自认为讲的也不错,有时间可以细致全面的理解一下字符集的问题。
现在是22:42 晚安