php连接oracle设定字符集,避免乱码
数据库用oracle,当php连接oracle的时候,最好指定字符集。
查PHP手册,oci_connect的第四个参数为charset,这是关键。
首先获取oracle的字符集,运行“select * from V$NLS_PARAMETERS;”,变量NLS_CHARACTERSET对应的就是我们需要的字符集,比如我这里就是“ZHS16GBK”。所以,最终的PHP代码为:
- $c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');
$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');
我本地的PHP文件统一用utf-8,所以,获取的代码还要经过如下编码转换:
- while ($dat = oci_fetch_row($cur)) {
- print_r(iconv('gb2312', 'utf-8', $dat[0]));
- }
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就行了,连编码转换都省了。
- $c1 = oci_connect("scott", "tiger", $db, 'UTF8');
$c1 = oci_connect("scott", "tiger", $db, 'UTF8');
另外,有个奇怪的问题:前面编码转换的iconv在测试机环境正常,但是传到远程就不能正常解析了,后来换成了mb_convert_encoding就可以了,代码如下:
- $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设定字符集,避免乱码相关推荐
- linux连接oracle数据库中文显示乱码
问题背景: orclae服务的原本就是有也使用正常,win下的pl/sql developer客户端能正常访问且,中文字段也显示正常.unix的aix服务器访问oracle用occi和sqlplus也 ...
- c# 连接 oracle数据库字符集为us7ascii的问题,实验了好几个方案 成功了
利用System.Data.OleDb.OdbcConnection类访问数据库. 连接字符串:"Provider=MSDAORA.1;Data Source=(DESCRIPTION =( ...
- python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号
PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a) 安装PL/SQL.依据自己的操作系统安 ...
- 完美解决c# 连接oracle US7ASCII字符中文乱码 亲测
客户端:win10 64位 vs2017,服务器端linux oracle US7ASCII字符. 因单位数据编码不能改变,故测试了很多办法,真是找了很多解决,最终找到了比较可以的一个. 1.下载do ...
- php连接不同编码oracle,PHP连接Oracle出现中文乱码问题
数据库用 oracle,当 PHP连接 Oracle 的时候,如果指定字符集,会出现中文乱码. 查PHP手册,oci_pconnect 的第四个参数为 charset,只需设置这参数即可. 首先获取 ...
- 成功解决连接SQL输出出现中文乱码问题(10001, 'oracle¿ìËÙÈëÃÅ', 'Íõº£ÁÁ', 'Ë®Àû³ö°æÉç',
成功解决连接SQL输出出现中文乱码问题(10001, 'oracle¿ìËÙÈëÃÅ', 'Íõº£ÁÁ', 'Ë®Àû³ö°æÉç', 目录 解决问题 解决思路 解决方法 解决问题 解决连接SQL出 ...
- PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码
PL/SQL Developer在64位系统上连接Oracle,需要安装32位Oracle client客户端,使用后,发现操作数据库出现乱码的情况.经过查找资料,解决此问题,方法如下: 需要在系统的 ...
- php 连接oracle乱码,PHP查询oracle数据显示乱码问题
1.Linux下 执行前脚本前先执行一下命令 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" 2.Windows下在代码里添 ...
- oracle客户端改字符集没有用,ORACLE客户端乱码 修改Oracle客户端字符集
修改Oracle客户端字符集方法: 1:可以通过修改注册表键值永久设置,类似于这样的键值: HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0下, 如一般的简体中文 nl ...
- C#连接Oracle中文乱码问题解决方法
C#连接Oracle中文乱码问题解决方法 参考文章: (1)C#连接Oracle中文乱码问题解决方法 (2)https://www.cnblogs.com/ycdx2001/p/3246139.htm ...
最新文章
- Sciences:用膳食纤维钓出15株缓解糖尿病的细菌!
- Linux下JNI实现
- 汇编语言对显存直接输出字符串
- Qt窗口、控件、文本等的一些常用操作
- 国内ios分亨组件,
- [签名算法]DSA 算法
- PHP 中错误控制符@
- 优酷直播节目“冠军体育课”第二季收官 共吸引近百万用户观看互动
- C++新特性探究(五):for循环、范围for语句
- scikit-image 库简介
- [转]关闭不必要端口 让电脑固若金汤
- python查看数据库存在表_python sqlite3查看数据库所有表(table)
- MongoDB数据同步工具之 MongoShake
- K均值聚类算法(K-Means)
- Linux压缩、解压、打包文件 修改文件所属组
- redis知识盘点【陆】_客户端Jedis
- P1458 [USACO2.1]顺序的分数 Ordered Fractions
- 营销-营销方式:营销方式
- Bank Marketing预测一个客户购买理财产品的成功率
- 学习记录297@python全字符匹配
热门文章
- AE intersect、clip的实现
- 34个漂亮的应用程序后台管理界面设计(系列三)
- SQL Server2005完全版与精简版的一个差别(抄录)
- spring mvc 的上传图片是怎么实现的?
- createrepo命令
- Zabbix实现自动发现端口并监控
- 5028: 小Z的加油店(线段树)
- 正则表达式限制文本框内容
- Padavan 路由器系统如何放开wan口的samba访问
- 小明买了一箱鸡蛋,假设有n个,可以一天吃1个,也可以一天吃2个,请问有多 少种方法可以吃完?...