Linux下oracle中文编码设置问题

最近项目要用到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显示也正常。

中文编码问题解决!

原文地址:https://www.cnblogs.com/isrc/p/2784445.html