最近项目要用到oracle数据库。期间遇到一些中文乱码问题。经过一番痛苦的折腾,中文能正常显示了,现把过程介绍如下:
1 首先查看linux的语言设置echo $LANG ,本人的LINUX上为zh_CN.UTF8
2 查看oracle的字符编码:本人oracle数据库版本为10.2.0.1
select *from nls_database_parameters;
3 用sysdba用户修改字符编码为AL32UTF8(UTF-8的编码子集)
alter database character set AL32UTF8;
如果遇到不能修改,则调用以下步骤:
alter system enable restriced session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
然后,alter database character set AL32UTF8;
当系统提示字符集必须为旧字符集的超集时,可用下面的句强制修改字符集
alter database character set internal_use AL32UTF8;
4 修改.bash_profile文件的语言设置(oracle客户端,该文件在用oracle用户登录的默认目录下)
增加export NLS_LANG=AMERICAN_AMERICA.UTF8或将NLS_LANG修改为AMERICAN_AMERICA.UTF8 ,保存。
5 导入客户端配置
source .bash_profile
6 重启数据库
shutdown immediate;
startup mount;
7 登录oralce数据库,插入中文字符,select 查询的内容正常。
通过调用OCI库中的函数插入中文数据,用select显示也正常。
中文编码问题解决!