在ORACLE查询出来的结果凡是中文的都是乱码 ,用pl/sql亦如此,该如何解决呢?
3个回答
展开全部
数据是怎么来的是导入还是客户端录入的
如果是导入的那就是你导入数据的字符集和导入的oracle的字符集不一致,那就修改数据库的字符集重新导入数据
如果是客户端录入的那就是客户端的字符集和oracle的不一致 有两个办法一是修改客户端的代码使客户端的字符集和oracle一致,二是修改数据库的字符集重新录入数据
如果是导入的那就是你导入数据的字符集和导入的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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询