关于PHP查询ORACLE数据乱码问题

数据库字符集 AMERICAN_AMERICA.WE8ISO8859P1
如果我不设置数据库第四个参数返回的中文信息为null,如果将第四个参数设置为utf8 返回乱码,代码如下
直接上代码

<?php 
header('Content-type:application/json;charset=utf-8');
putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1");
$Oracle_conn=oci_connect('user','pass','db','utf8');
$query="Select CMNAME,CDMMKT,CDMNO,CDMTYPE, CDMSTATUS,CDMFLAG,CDMCID,CCURJFYE CDMJF, CTOTXFJE CDMXFJE, NVL(CDMZHYE1, 0) CDMZHYE1,  CMNAME,CMBIRTHDAY,CMIDNO, CMMOBILE1,CMLCZHYE   From CARDMAIN,CUSTMEMBER, CUSTOMER Where CDMOWNER=CMMEMID And   CDMCID = CID   and  cdmno = '" . $_GET["ds"] ."'";
$statement=oci_parse($Oracle_conn,$query);
//执行语句;
oci_execute($statement);
//取得结果数据;
  while (($row = oci_fetch_object ($statement)) != false) {
    //var_dump($row);
echo json_encode($row);
}
//释放资源;
oci_free_statement($statement);
oci_close($Oracle_conn);
?>

分割线------------------------------------
以上代码查询ORACLE正常,但是库里有中文时显示乱码,以下为查询结果
图片说明
图片说明
因数据库内有大量数据,无法修改字符集,有没有什么办法能在不修改数据库字符集的情况下中文能正常显示,
请大神们不灵赐教

php

1个回答

我觉得出现这个问题组要有两个方面
首先接收到的字符串编码是否为utf-8
mb_convert_encoding($_GET['ds'],'utf-8',mb_detect_encoding($_GET['ds']))
可以把任意编码字符转换为utf-8
再者
你创建数据库时设置的数据库编码不是utf-8
这个可以打开数据库查看一下

qq_17755657
qq_17755657 数据库的字符集是WE8ISO8859P1,我在PHP中设置字符集为WE8ISO8859P1 查询的返回结果中文为null
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
oracle数据乱码问题````求解答```
我装的oracle9i rnrn刚刚装好的时候差出来的数据 中文显示乱码,rnrn别人帮我弄一下后就显示中文了, 但是它的错误提示 系统提示是英文的,rnrn我把查出的数据复制到Execle的时候,数字显示正常,中文是乱码? 怎么解决?rnrnrn本人第一次用oracle, 希望大家说得详细点```谢谢 谢谢``
asp.net读取oracle数据乱码问题
问题是这样的,我本机装有oracle客户段,连接远程的oracle服务器,我发现数据读出来后,凡是汉字的都是字符显示(好象有规律,不像是乱码),我上网查了一下,做了以下修改rn服务器:查出服务器段字符集是:AMERICAN_AMERICA.US7ASCIIrn客户段:打开注册表:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/NLS_LANG,把NLO_LANG的值改成和服务器段一致。rn打开oracle/ora8i/sysman/config下的dbappscfg.properties,把里面的 # SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 改为 去掉“#”,SQLPLUS_NLS_LANG=AMERICAN_AMERICA.US7ASCIIrnrn可是,我发现改过后好象没效果。。。。数据还是乱码显示,请各位高人帮我看看还有什么地方没有改对,谢谢了啊
JSP读取ORACLE数据乱码问题
在从oracle数据库中读取数据时出现乱码,但是通过pl/sql developer查询正常。具体情况如下: jsp,页面编码:gb2312 oracle编码:us7ascii 使用过滤器进行编码转换,request.setCharacterEncoding(gb2312),能够使传参时编码转换成中文,但是从数据库中读来的中文却显示为乱码。
读Oracle数据,中文乱码问题
我用程序把oracle表中的字段逐条取出,然后写到文件里,中文字符全是乱码,代码如下:rn======================================================================rn while (rs.next()) rn System.out.print( "result="+rs.getMetaData().getColumnCount());rn for(int j=1; j<=rs.getMetaData().getColumnCount(); j++) rn System.out.print( rs.getObject(j)+"|+|"); rn strLine = strLine + rs.getObject(j)+"|+|";rn rn======================================================================rn导出的时候怎么转换一下编码不出乱码?请高手指点,感谢!
PHP关于文件上传下载的乱码问题
文件下载的PHP代码我写在了upload.php文件中了,当点击页面的文件名下载的时候(url显示的也对),总是找不到文件,提示内容是,No such file or directory in upload.php,文件名如果为中文则出现这个问题,英文则不会出现,请帮帮忙解决下
关于PHP乱码问题的解决办法
问题描述: php中文代码以及注释在页面中显示正常,但是在chrome开发工具中的network栏目下的preview和response中显示为乱码。 思路: 一开始按照其他博客上的方法,把chrome浏览器的编码设置成utf-8,但是查阅资料后发现这个选项早在chrome55中就取消了。然后无意中修改了php文件的头注释,就好了。 最终解决方案: ...
关于PHP乱码问题
用easyeclipse for php编程,默认编码是gbk,可以显示中文。rn网上有很多编写好的类,直接拿过来用,发现都是UTF-8编码的,把整个程序的编码方式改成UTF-8后,类中的汉子部分在rneclipse里面就能显示了,但是在浏览器显示的还是乱码啊,这种编码问题怎么解决呢,有没有好的解决方案或者建议。在加上数据库那一套,出现乱码的可能性就更大了
php关于phpexcel乱码问题
导出excel文件 出现了一个问题 在导出行数5行以上的时候 导出数据格式正常 在5行一下数据的时候 中文全部乱码 这个问题请教各位大神 代码贴出来下面rn$filename='exceptionOrder'.date('Y-m-d');rn header("Content-type:application/octet-stream");rn header("Accept-Ranges:bytes");rn header("Content-type:application/vnd.ms-excel;charset=UTF-8");rn header("Content-Disposition:attachment;filename=".$filename.".xls");rn header("Pragma: no-cache");rn header("Expires: 0");rn $table = '';rn $table.=' '.PHP_EOL;rn $table.=' rn rn 序号'.iconv("gb2312","UTF-8",'序号').'rn SKUrn 仓库rn 库位rn 实库存rn rn '.PHP_EOL;rn $i = 1;rn foreach($data as $key =>$val)rn if($val['orders_warehouse_id']==1000)rn $str = "深圳一仓";rn else if($val['orders_warehouse_id']==1025)rn $str = "义乌仓";rn rn $table.=' '.$i.'rn '.$val['product_sku'].'rn '.$str.'rn '.$val['products_location'].'rn '.$val['actual_stock'].''.PHP_EOL;rn $i++; //序号自增rn rn $table.=''.PHP_EOL;rn echo $table;
sqlplus 导oracle数据数据乱码问题
使用的sqlplus导出数据,前段时间还好好的,现在突然乱码,数据库中不乱码 解决方法: 1. export 参数  $ export NLS_LANG="simplified chinese_china.ZHS16GBK"   2. 修改配置单数 修改/etc/bashrc中的参数,添加相关信息 NLS_LANG="simplified chin
急!Java读取Oracle数据乱码问题!
嗯,遇到一个问题,Java读取Oracle数据乱码。rn数据库编码是奇葩的:AMERICAN_AMERICA.AL32UTF8rn[img=http://imgsrc.baidu.com/forum/w%3D580/sign=b7d84eb878310a55c424defc87444387/6f061d950a7b02083b1aebaa63d9f2d3562cc8ae.jpg][/img]rn把里面的数据使用Java读出来,到本地是乱码rn于是...各种转码:rn[img=http://imgsrc.baidu.com/forum/w%3D580%3Bcp%3Dtieba%2C10%2C205%3Bap%3Djava%B0%C9%2C90%2C213/sign=88e0663feaf81a4c2632ecc1e7110329/faf2b2119313b07e4e5384430dd7912396dd8c8b.jpg][/img]rn结果。。。rn[img=http://imgsrc.baidu.com/forum/w%3D580%3Bcp%3Dtieba%2C10%2C172%3Bap%3Djava%B0%C9%2C90%2C180/sign=a54dd0d6caef76093c0b99971ee6c0bc/e4dde71190ef76c60e562f609c16fdfaae5167f1.jpg][/img]rn求拯救!
使用hibernate查询oracle数据
使用hibernate怎样查询数据库表中某个字段不为null的数据......
jbuilder8中用“Database Pilot”查询oracle数据时出现乱码问题!
本人用的数据库是oracle release 8.0.5,驱动是oracle_jdbc_classes12.zip用juilder8中的“Database Pilot”查询表中的数据时出现乱码,请问如何解决?
急!oracle数据无法查询!
用jdbc连接到oracle数据库查询数据. 连接都正常. 打印出来的sql在oracle也能查询出来. 但是在eclipse中却一直提示nullrn select * from dual; 都查不出来. 连接肯定正常. 如果把用户密码或驱动有意的更改会正常提示错误. rnrn望高手给解释下 谢谢1
PHP 关于乱码问题的iconv的问题
原文:https://blog.csdn.net/mpqz1065ok/article/details/81008319 1.在echo前面加入 header(&quot;Content-Type:text/html;charset=gb2312&quot;); 2.iconv  iconv(&quot;GB2312&quot;,&quot;UTF-8&quot;,'中文'); 实际中遇见奇怪的现象, 在本机服务器上正常显示的页面,传上服务器就...
关于php输出xml的乱码问题
我用php输出xmlrn里面一句是echo "";rn这样中文显示没有问题,rn现在我改成echo "";rn却不能显示,因为有中文。rnrn请教一下,这个怎么来解决呢?rnrn
关于php写数据库乱码问题
在php页面内插入数据到数据库后,数据库内显示乱码。rn数据库字符集:rnrn[img=https://img-bbs.csdn.net/upload/201504/11/1428737570_36852.jpg][/img]rn页面字符集:rn[img=https://img-bbs.csdn.net/upload/201504/11/1428737632_389479.png][/img]rnrn在插入前执行mysql_query("set names 'utf8'")能解决问题rn网上说set names 'utf8'就是将character_set_connection,character_set_result,character_set_client设置成utf8,rn但是我已经将数据库的所有字符集都设置成了utf8,却还是会乱码rn另外,在前端插入中文乱码,在后台直接插入中文不会乱码。rn想知道哪里还有问题,求各位大神解答rn
php 关于fgetcsv中文乱码问题
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';'); 这里var_export函数可以输出或返回一个变量的字符串表示。此函数返回关于传递给该函数的变量的结构信息,它和 var_dump()  类似,不同的是其返回的表示是合法的 PHP 代码。可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示
php乱码问题
用php通过cmd命令执行了一个应用程序text.exe,本来应该显示“执行成功”,但是在cmd中能正常显示,在浏览器中却是乱码。php文件中meta标签已规定charset是utf-8,浏览器的字符编码也是utf-8.但要是把浏览器的字符编码改为GBK的话,“执行成功”这四个字倒是能正常显示,可是页面上的其他中文字符就成乱码了。该怎么处理呢?
PHP乱码问题
[code=HTML]rnrnrn rn 模式rn rn rn rn rn rn rn 新闻标题: rn 内容:rn rn rn rnrn rn rn[/code]rnrnadd.php[code=PHP][/code]rnrnselect.phprn[code=PHP]rnrnrn rn 添加新闻';rnecho " ";rnecho " 新闻标题 新闻内容 发布时间 操作";rnfor($i = 0; $i<$count;$i++)rn $arr = mysql_fetch_row($res);rn if($arr[4] == 0)rn echo ' '.$arr[1].' 'rn .substr($arr[2],0,6).' 'rn .$arr[3].' 查看 修改 删除';rnrnecho '';rn?>rn[/code]rnrnlook.phprn[code=PHP]rnrnrn rn 添加新闻';rnecho $arr[1].' 发布时间:'.$arr[3].' '.$arr[2];rnecho '';rnrn?>rn[/code]rnrnrn现在的乱码情况是:rn插入数据库的是乱码rnselect.php页面显示正常rnlook.php页面乱码rnrnrn乱码问题,怎么解决啊??rn整了N久了。
PHP的乱码问题
"; rnecho ""; rn?>rnrnrn rnrnrnrn rnrnrnrn上面是我写WAP的源码编码是GB2312的,可是手机是UTF-8的,添加进MYSQL的全是乱码,该怎么办?
php 乱码问题
rnstr_ret = showModalDialog("AUT_MCRPON_Controller.php?rep_netno1="+para1+"&rep_netno2="+para2,window,"resizable:on;scroll:off;");rnrn其中para2里有汉字,在AUT_MCRPON_Controller.php里,用 rnif (isset($_GET["rep_netno2"])) rn $req_netno2= $_GET["rep_netno2"];rn elsern $req_Netno5 = "";rn rn取得时出现乱码,2叶面都是“ ”。怎么解决?
PHP 乱码问题
1. php页面处理 header("Content-Type:text/html; charset=utf-8"); 2. HTML页面 3. 文件设置:选择编码utf-8 4. 数据库,创建表结构时 default charset=utf8; 访问设置,mysql_query('set names utf8');
JDBC操作Oracle数据-----Array,struct乱码问题
这是我实习时遇到的一个问题,就是头让我去看看Oracle中的自定义类型,利用JDBC去调用存储过程,输入输出参数为Table类型。    这个功能实现很简单,推荐一个博客,讲的不错, http://blog.csdn.net/hzw2312/article/details/8444462。    但是,我在具体实现时,往数据库中插入数据时,会报错,错误分别为   1、Non suppor
如何解决插入Oracle数据中文为乱码问题?
我用ADOQuery连接Oracle数据库显示中文的时候是正常的(因为我已经改了注册表里的字符集),但插入中文的时候在数据库里就显示成乱码了,是不是需要把中文转换一下,这个问题该如何解决,望高手指点。谢谢。
请问php如何调用oracle数据
mysql数据库已经连接好,现在想要在oracle数据库里面抓取数据,然后写入mysql数据里面...请问如何操作rnrnrn自己写的,但是无法写入mysql里面...rnrn
C#实现oracle数据的查询和删除
[code=C#]rnpublic static void doInsertData()rn rn rn string conStr = "provider='OraOleDb.Oracle';Data Source=" +rn "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))" +rn "(CONNECT_DATA =(SERVICE_NAME = test)));User Id=test;Password=test;";rnrn string sqlInsertStr = "insert into SYM_SOFTWARE_COLLECTION" +rn "(USERNAME,IP,MAC,YONGYOUSTATUS,YONGYOUEDITION,JINDIESTATUS,JINDIEEDITION,GUANJIAPOSTATUS,GUANJIAPOEDITION,RECORDTIME)" +rn "values('" + username + "','" + ip + "','" + mac + "','" + yySta + "','" + yyEdition + "','" + jdSta + "','"rn + jdEdition + "','" + gjpSta + "','" + gjpEdition + "', sysdate )";rnrn String sqlQueryStr = "select * from SYM_SOFTWARE_COLLECTION where USERNAME='test3';";rn String sqlDeleteStr = "delete from SYM_SOFTWARE_COLLECTION where USERNAME='test2';";rnrn OleDbConnection sqlCon = new OleDbConnection(conStr);rn tryrn rn sqlCon.Open();rn //执行插入没问题,执行查询和删除时都有报错了rn //OleDbCommand cmd = new OleDbCommand(sqlInsertStr, sqlCon);rnrn //OleDbCommand cmd = new OleDbCommand(sqlDeleteStr, sqlCon);rnrn OleDbCommand cmd = new OleDbCommand(sqlQueryStr, sqlCon);rn rn cmd.ExecuteNonQuery();rn rn catch (Exception ex)rn rn Console.WriteLine(ex.Message);rn rn finallyrn rn sqlCon.Close();rn rn rnrn[/code]rnrn执行查询和删除时都报错了:ORA-00911: invalid characterrn刚接触oraclern有点急,求有经验的高手帮忙解答一下,谢谢。。。。
Jdbc 查询oracle数据时间错误
查询oracle数据库时间为: --------------------------------------------------------------------- 查询结果为: ------------------------------------------------------------------------------------
oracle数据怎么实现 时间段查询
数据库表里的字段是varchar2,表单里两个输入框,一个按钮,输入好时间,一点查询,出现个人的信息。rn如何实现,oracle sql语句 时间段如何查?
查询oracle数据库里面的时间段
我要查询oracle 数据库里的表里的一日期型数据,并要求以一时间段为查询条件,rn语句如下:rnrntryrn with qry1 dorn beginrn Close;rn SQL.Clear;rn SQL.Add('select Flt_Nbr,Lcl_Dpt_Dt');rn SQL.Add('from DEP_PNR_DAILY');rn SQL.Add('where Flt_Nbr like '+''''+'%'+ Trim(RzEditlinenum.Text) + '%'+''''); //查询航班号rn SQL.Add('and (Lcl_Dpt_Dt >= :a) and (Lcl_Dpt_Dt<= :b)');rn Parameters.ParamByName('a').Value:=Trunc(RzDateTimeEditlinedata1.Date);rn Parameters.ParamByName('b').Value:=Trunc(RzDateTimeEditlinedata2.Date);rnrn但是老是报错: 不一致的数据类型,要求date得到的却是number....rn不知道怎么办,各位高手帮帮忙啊!rn
请问:在php中怎样才能不停的查询oracle数据库里面的值?
如题。
关于连接oracle数据问题.
我的客户端运行Enterprise Management Console后出现两个选项,1.独立启动2.登录到Oracle Management Server;选择独立启动后可以连接到后台数据库,但是在asp程序中却无法连接,错误提示"Ora-12154.TNS,无法处理服务名";如果选择第二项登录到Oracle Management Server,则无法登录.不知道到底是为什么?还望赐教.具体连接代码如下:rndim myconn=now oledbconnection("provider=msdaora.1;UseId=fd;Password=888;Data source=ora_server")rn这里的Data source到底应该填写什么名称?rn
关于oracle数据插入排序的问题
现有三张表a、b、c,rn从b、c两张表里取数给a,rn我先将数取出并按照某一个字段排序,后插入a表,rn取数的部分单独运行是正常排序的,但插入a表后,最后面的几条数据总是排到了最前面,rn我试了临时表、借助另一张表过渡都没用,rn请问各位知道为什么吗?rn谢谢
关于oracle数据加长问题
tablern A rn123rn423rn323rn233rnrn我想让A中数据所有的都变成rna123rna123rna423rna323rna233rnrnSQL是什么样的?rnrnrnrn
关于oracle数据打包的问题
请问高手,如何将oracle数据库的客户端打到安装文件中去呀。需要拷贝那些文件,注册那些信息。
关于oracle数据显示问题
我有一个字段医院简介,数据类型是clob型的,数据很多都是上万字的。rnrn为什么我在EM中查看医院简介数据的时候,只能显示前面256个字呢?rnrn这要是在网页上能不能全部显示呢?怎么解决呢?
关于Oracle数据的监控!
有没有一种方法可以监控:插入数据到某张表,但存在数据已经存在,导致失败的情况。rn用什么方法能得到哪个数据失败了,可以用触发器或者其他什么方法吗?
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法