数据库用oracle,当php连接oracle的时候,最好指定字符集。

查PHP手册,oci_connect的第四个参数为charset,这是关键。

首先获取oracle的字符集,运行“select * from V$NLS_PARAMETERS;”,变量NLS_CHARACTERSET对应的就是我们需要的字符集,比如我这里就是“ZHS16GBK”。所以,最终的PHP代码为:

Php代码  
  1. $c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');

$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');

我本地的PHP文件统一用utf-8,所以,获取的代码还要经过如下编码转换:

Php代码  
  1. while ($dat = oci_fetch_row($cur)) {
  2. print_r(iconv('gb2312', 'utf-8', $dat[0]));
  3. }

while ($dat = oci_fetch_row($cur)) {print_r(iconv('gb2312', 'utf-8', $dat[0]));
}

--------------------------------

2009-6-25 更新以下文字

--------------------------------

同事说,Oracle可以按照 客户端指定的字符集 提供数据。也就是说,如果我本地PHP文件用UTF-8,那么,我在oci_connect的时候,直接指定utf-8就行了,连编码转换都省了。

Php代码  
  1. $c1 = oci_connect("scott", "tiger", $db, 'UTF8');

$c1 = oci_connect("scott", "tiger", $db, 'UTF8');

另外,有个奇怪的问题:前面编码转换的iconv在测试机环境正常,但是传到远程就不能正常解析了,后来换成了mb_convert_encoding就可以了,代码如下:

Php代码  
  1. $nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');

$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');

可能原因在于iconv里面的第二个参数是否加了“//IGNORE”,请参考http://cn2.php.net/manual/en/function.iconv.php。有兴趣的,可以试试,我就不试了。

转载于:https://blog.51cto.com/zgqwork/530944

php连接oracle设定字符集,避免乱码相关推荐

  1. linux连接oracle数据库中文显示乱码

    问题背景: orclae服务的原本就是有也使用正常,win下的pl/sql developer客户端能正常访问且,中文字段也显示正常.unix的aix服务器访问oracle用occi和sqlplus也 ...

  2. c# 连接 oracle数据库字符集为us7ascii的问题,实验了好几个方案 成功了

    利用System.Data.OleDb.OdbcConnection类访问数据库. 连接字符串:"Provider=MSDAORA.1;Data Source=(DESCRIPTION =( ...

  3. python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号

    PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a)      安装PL/SQL.依据自己的操作系统安 ...

  4. 完美解决c# 连接oracle US7ASCII字符中文乱码 亲测

    客户端:win10 64位 vs2017,服务器端linux oracle US7ASCII字符. 因单位数据编码不能改变,故测试了很多办法,真是找了很多解决,最终找到了比较可以的一个. 1.下载do ...

  5. php连接不同编码oracle,PHP连接Oracle出现中文乱码问题

    数据库用 oracle,当 PHP连接 Oracle 的时候,如果指定字符集,会出现中文乱码. 查PHP手册,oci_pconnect 的第四个参数为 charset,只需设置这参数即可. 首先获取 ...

  6. 成功解决连接SQL输出出现中文乱码问题(10001, 'oracle¿ìËÙÈëÃÅ', 'Íõº£ÁÁ', 'Ë®Àû³ö°æÉç',

    成功解决连接SQL输出出现中文乱码问题(10001, 'oracle¿ìËÙÈëÃÅ', 'Íõº£ÁÁ', 'Ë®Àû³ö°æÉç', 目录 解决问题 解决思路 解决方法 解决问题 解决连接SQL出 ...

  7. PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码

    PL/SQL Developer在64位系统上连接Oracle,需要安装32位Oracle client客户端,使用后,发现操作数据库出现乱码的情况.经过查找资料,解决此问题,方法如下: 需要在系统的 ...

  8. php 连接oracle乱码,PHP查询oracle数据显示乱码问题

    1.Linux下 执行前脚本前先执行一下命令 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" 2.Windows下在代码里添 ...

  9. oracle客户端改字符集没有用,ORACLE客户端乱码 修改Oracle客户端字符集

    修改Oracle客户端字符集方法: 1:可以通过修改注册表键值永久设置,类似于这样的键值: HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0下, 如一般的简体中文 nl ...

  10. C#连接Oracle中文乱码问题解决方法

    C#连接Oracle中文乱码问题解决方法 参考文章: (1)C#连接Oracle中文乱码问题解决方法 (2)https://www.cnblogs.com/ycdx2001/p/3246139.htm ...

最新文章

  1. Sciences:用膳食纤维钓出15株缓解糖尿病的细菌!
  2. Linux下JNI实现
  3. 汇编语言对显存直接输出字符串
  4. Qt窗口、控件、文本等的一些常用操作
  5. 国内ios分亨组件,
  6. [签名算法]DSA 算法
  7. PHP 中错误控制符@
  8. 优酷直播节目“冠军体育课”第二季收官 共吸引近百万用户观看互动
  9. C++新特性探究(五):for循环、范围for语句
  10. scikit-image 库简介
  11. [转]关闭不必要端口 让电脑固若金汤
  12. python查看数据库存在表_python sqlite3查看数据库所有表(table)
  13. MongoDB数据同步工具之 MongoShake
  14. K均值聚类算法(K-Means)
  15. Linux压缩、解压、打包文件 修改文件所属组
  16. redis知识盘点【陆】_客户端Jedis
  17. P1458 [USACO2.1]顺序的分数 Ordered Fractions
  18. 营销-营销方式:营销方式
  19. Bank Marketing预测一个客户购买理财产品的成功率
  20. 学习记录297@python全字符匹配

热门文章

  1. AE intersect、clip的实现
  2. 34个漂亮的应用程序后台管理界面设计(系列三)
  3. SQL Server2005完全版与精简版的一个差别(抄录)
  4. spring mvc 的上传图片是怎么实现的?
  5. createrepo命令
  6. Zabbix实现自动发现端口并监控
  7. 5028: 小Z的加油店(线段树)
  8. 正则表达式限制文本框内容
  9. Padavan 路由器系统如何放开wan口的samba访问
  10. 小明买了一箱鸡蛋,假设有n个,可以一天吃1个,也可以一天吃2个,请问有多 少种方法可以吃完?...