Oracle数据库 乱码问题

来源:互联网 发布:登陆淘宝网账号 编辑:程序博客网 时间:2024/05/21 10:45

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

查看oracle数据库编码:$ sqlplus / as sysdbaSQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';PARAMETER----------------------------------------------------------------VALUE----------------------------------------------------------------NLS_CHARACTERSETal32utf8
查看linux客户端编码$ env | grep LANGNLS_LANG=AMERICAN_AMERICA.AL32UTF8LANG=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
原创粉丝点击