oracle查询中文数据为乱码
来源:互联网 发布:开源实时数据库有哪些 编辑:程序博客网 时间:2024/06/05 00:22
乱码的问题,都知道是字符集的问题,需要查看数据库服务器的字符集和客户端的字符集
oracle数据库的字符集更改
A、oracle server 端 字符集查询
select userenv('language') from dual
其中NLS_CHARACTERSET 为server端字符集
NLS_LANGUAGE 为 server端字符显示形式
B、查询oracle client端的字符集
$echo $NLS_LANG
如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
C、server端字符集修改
*****************************************************************
* 更改字符集步骤方法(WE8ISO8859P1 --> ZHS16GBK) *
*****************************************************************
SQL>
将数据库启动到RESTRICTED模式下做字符集更改:
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> alter database open;
Database altered.
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
SQL> select * from v$nls_parameters;
略
19 rows selected.
重启检查是否更改完成:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> select * from v$nls_parameters;
略
19 rows selected.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D、client端字符集修改
在 /home/oracle与 /root用户目录下的.bash_profile中
添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句
关闭当前ssh窗口。
如果你是用的PL/SQL工具查询是乱码需要设置系统环境变量
NLS_LANG="AMERICAN_AMERICA.UTF8"
再次登录plsql查询,显示正常了!
- oracle查询中文数据为乱码
- Oracle查询中文数据乱码
- rails oracle查询中文数据乱码问题
- oracle 中通过使用客户端导致查询出来的中文数据为乱码的解决方式
- 32位连接64位oracle查询数据中文乱码
- 解决ORACLE字符集为US7ASCII,插入数据中文乱码问题
- Oracle写入中文为乱码
- 以中文为查询条件查询mysql数据库时有数据却查不到数据或者中文乱码的问题
- oracle 数据中文出现乱码 ???
- 使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况
- 中文乱码--查询条件为中文时乱码
- mysql 数据查询时 中文乱码问题 以 php 为例
- Oracle plsql 查询时中文乱码
- [解决策略]JSP--查询数据中文乱码
- python mysqldb 查询数据,中文乱码问题
- informix查询中文数据输出乱码问题解决
- linux下查询MySQL中文数据乱码
- PLSQL查询数据中文乱码,显示问号
- 时间处理Calendar
- 米斯特白帽培训讲义 漏洞篇 提权
- 文字阴影效果
- $(document).ready() 和 window.onload()的区别
- 深入理解abstract class和interface
- oracle查询中文数据为乱码
- jsoup获取html页面中的内容
- jQuery遍历对象、数组、集合
- 支持安卓和苹果充电协议的QC3.0快充方案-UP9616
- 页面上加载地图(一)
- Android中ListView嵌套CheckBox的问题
- View 的事件分发机制
- 要做酒店,写一个酒店的时间选择器
- 树莓派挂载硬盘远程迅雷