在ORACLE查询出来的结果凡是中文的都是乱码 ,用pl/sql亦如此,该如何解决呢?

如题所述

数据是怎么来的是导入还是客户端录入的
如果是导入的那就是你导入数据的字符集和导入的oracle的字符集不一致,那就修改数据库的字符集重新导入数据
如果是客户端录入的那就是客户端的字符集和oracle的不一致 有两个办法一是修改客户端的代码使客户端的字符集和oracle一致,二是修改数据库的字符集重新录入数据追问

我是从excel表中 通过pl/sql导进去的 但是只要是中文就显示乱码 包括 比如给一个字段起个中文的别名 例如 select name "姓名" from student 其中查询出来的结果 姓名这个字段显示的也是‘??’还请帮忙 谢谢了 最好步骤详细些

追答

估计是客户端和服务端的字符集不一致修改字符集把
1.修改客户端字符集
先查看服务端字符集
sqlplus /nolog
SQL>conn / as sysdba;
SQL>select userenv(‘language’) from dual;
修改客户端的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG
和服务端一致 后再重新导入数据

2.或者修改服务端字符集
服务端执行
sqlplus /nolog
SQL>conn / as sysdba;
若此时数据库服务器已启动,则先执行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 ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
  SQL>STARTUP

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-26
查看客户端字符集和数据库字符集是否一致
第2个回答  2012-05-26
转字符格式GBK
相似回答