Home  >  Article  >  Database  >  Linux平台上OCI操作ORACLE数据库时乱码问题的解决

Linux平台上OCI操作ORACLE数据库时乱码问题的解决

WBOY
WBOYOriginal
2016-06-07 16:51:221063browse

本人刚学Linux,还在研究OCI。前几日调通了OCI连接数据库的问题后,用ORACLE自带的例子测试了一下,能正常读取数据(都是英文的),就放心了

本人刚学Linux,还在研究OCI。

前几日调通了OCI连接数据库的问题后,用Oracle自带的例子测试了一下,能正常读取数据(都是英文的),就放心了,,转去开发别的模块。这几天做数据库模块是需要插入中文数据,才发现插进去的都是 "????"。确保数据都是GB2312格式,转换成UTF-8后依然无效。翻来覆去转了好多次,总是不见效。

google发现了一篇文章说要在客户端设置字符集NLS_LANG,记得以前安装oracle的时候是英文安装,只设置了LANG变量,这个没有设置。于是在ORACLE服务器端 SELECT * FROM sys.props$ ,得到

NLS_LANGUAGE=AMERICAN
NLS_TERRITORY=AMERICA
NLS_ISO_CURRENCY=AMERICA
NLS_CHARACTERSET=ZHS16GBK

根据这些参数设置NLS_LANG=AMERICAN_AMERICA.ZHS16GBK (GOOGLE出来的文章中设置为NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK",是因为安装的服务器的字符集设置不同)。

然后在/etc/profile中export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK ,然后source /etc/profile,再运行程序,哈哈,中文出来了啊!

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn