linux下Oracle显示中文乱码

CRT 客户端 添加数据后,查询内容中文的数据都是???,网上搜索下内容,解决方法如下:

1.Oracle数据库出现乱码的原因:
操作系统与服务器一致,但客户端与服务器字符集不一致
客户端与服务器一致,但操作系统与服务器不一致

2.解决办法:
设置相关的字符集,保证操作系统、客户端、数据库服务器,保证这三者的字符集都相同。

3.针对
情况:
设置客户端的字符集与服务器一致,假如服务器的字符集为:UTF8(建议创建数据库的时候用这个字符集,中英文都能兼容)

客户端Linux设置步骤:
1.切换至oracle数据库的安装用户,我的用户名就是oracle
$ su - oracle
$ cd ~    //进入oracle用户的家目录
$ vim .bash_profile  //编辑oracle用户下的.bash_profile文件
.bash_profile文件内容:(每个人的这个文件具体的设置可能都不太一样,不用担心,注意红色那一行就行了)                                       

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8   //设置这个参数就代表设置用户客户端的字符集,在创建数据库的时候不设置这个参数也没问题,建议是最好规划好自己的库需要用到什么时候类型的字体,然后再设置这个值,最好保持与数据库一致,当然这个参数可以随时改变.(我自己的数据库是用UTF8字符集)


SQL> select userenv('language') from dual;    //oracle中查询的字符集
USERENV('LANGUAGE')
--------------------------------------------------------------------------------
AMERICAN_AMERICA.AL32UTF8


$ source .bash_profile  //执行source命令使修改完的.bash_profile文件生效

至此,设置完毕,再次登录Oracle数据库,查询显示正常,但有一点要注意,就是如果你插入数据时的字符集不是UTF8下执行的,当你客户端和服务器都变成UTF8字符集后,以后插入的中文可能显示就为乱码了。所以说只有三个点(客户端、操作系统、数据库)的字符集保持一致的时候才能让数据库里面的中文正常显示。  

你可能感兴趣的:(Oracle)