最近入手实验室项目,数据库均使用oracle,但发现使用mac连接oracle时出现数据库内容乱码问题,即中文全部会变为????符号,使用win虚拟机连接时没有此问题。
搜索发现相关资料和解决方案博客非常少,网络上总的较为靠谱的解决方案大致为:
(注: 此方案并不有效)
本地的编码模式与服务器编码模式不同导致乱码。因而在mac本地添加与服务器上oracle编码相同的环境变量NLS_LANG来解决
1.查看服务器oracle编码模式:
在Oracle中使用
Select userenv('language') from dual;
或者:
Select name, value$ from props$;
可查看NLS_LANG变量里保存的字符集
2.添加本地环境变量
在本机上
vi ~/.bash_profile
在其中添加变量:
export NLS_LANG=American_America.ZHS16GBK
之后
source ~/.bash_profile
保存
tips:输入env
可查看本机环境变量,输入locale
查看本机编码,输入local -a
查看本机支持的编码种类
然而我此方法实践之后,保持了本地与服务器NLS_LANG字符集一致,但仍无效,依旧乱码。
我猜测可能是因为使用工具连接oracle,但由于工具传输解析没设置编码,因而导致了乱码。
我使用的连接工具为一款mac轻量级的oracle连接工具:SQLPro for Oracle
之后去下载了Navicat Premium
,发现乱码问题果然解决!