Oracle数据库 乱码问题

场景:php连接linux的oracle数据库时,发现读取的数据是乱码。用的 sqlplus导入的。编码格式UTF8。
发现问题:用客户端登录oracle后发现,是数据库导入的内容就已经乱码了。
解决过程:

查看oracle数据库编码:
$ sqlplus / as sysdba
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_CHARACTERSET
al32utf8
查看linux客户端编码
$ env | grep LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LANG=en_US.UTF-8
查看SQL文件编码
PC UTF8

综上也没看出什么具体问题,解决问题切入点,统一编码

最终解决流程:

1.修改数据库编码 改为UTF8:

注:字符集最好不要轻易修改,会直接影响数据库的数据!!!

$ conn /as sysdba;          #以sysdba登录
SQL> shutdown immediate;    #关闭数据库
SQL> startup mount;         #用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 UTF8; #修改成想要的编码
SQL> shutdown immediate;    #关闭数据库
SQL> startup;               #开启数据库

2.修改客户端编码 改为UTF8
$ vim .bash_profile    #最后add一下两行:
export NLS_LANGUAGE="SIMPLIFIED CHINESE"
export NLS_LANG="Simplified Chinese_china".UTF8
保存wq
$ source .bash_profile #使生效

问题解决。

PS:具体要看用什么编码了,相应改成要的编码,原则是 编码统一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值