• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php access以汉语言作为参数进行数据查询时出现乱码

php 搞代码 3年前 (2022-01-24) 15次浏览 已收录 0个评论

php access以中文作为参数进行数据查询时出现乱码。
先上代码:

<?php<br /><br />include_once("Conn.php");<br /><br />$testJSON=array();<br />$str = trim($_GET['dept']);  <br /><br />$mysql ="  select *,0 as ord from checkpro where ifstop=0 and dept like '*".$str."*'  ";<br /><br />echo $mysql; <br /> <br /> $rs = $conn->Execute($mysql);<br /> while(!$rs->EOF) <br />            { 				<br /><br />	$mydept =iconv('gb2312','utf-8',$rs->Fields['dept']->Value);<br />	$mypro =iconv('gb2312','utf-8',$rs->Fields['pro']->Value);<br />	$mynote =iconv('gb2312','utf-8',$rs->Fields['note']->Value);<br />	$mykf =iconv('gb2312','utf-8',$rs->Fields['kf']->Value);<br /><br />	echo $mydept;<br />	<br />    $testJSON[] = array('dept'=>"".$mydept."","pro"=>"".$mypro."","note"=>"".$mynote."","kf"=>"".$mykf."");   <br />   	$rs->MoveNext();<br />      }<br />  <br /> foreach ( $testJSON as $key => $value ) { <br /> <br />     foreach ( $testJSON[$key] as $key_k => $value_k ) { <br />        $testJSON[$key][$key_k] = urlencode ($value_k);  <br />	 }<br />    }  <br />   echo urldecode ( json_encode ( $testJSON ) );  <br /><br />         /*释放资源*/<br />         $rs->Close();<br />      $conn->Close();<br />      $rs = null;<br />      $conn = null;<br /><br />?> 

如果我在地址栏输入:
http://192.168.0.30:81/fkfs/jsons_a/json_deptchpro.php?dept=办公室
那么就会出现如图的错误,如果参数是英文的就不会。

如果我在地址栏输入:
http://192.168.0.30:81/fkfs/jsons_a/json_deptchpro.php?dept=通用
这时不会出现错误,这个参数得到的结果应该是正确的,但是却不显示任何记录。
问大家,这个该怎么解决,谢谢!
——解决方案——————–
错误信息显示:出错行是 21 行
请指出 21 行在哪里!
你贴出的代码中,21 行是 echo $mydept;,显然不是的

你对输出的数据做了编码转换(iconv(‘gb2312′,’utf-8’,$rs->Fields[‘dept’]->Value))
显然页面是 utf-8 的
那么 $_GET[‘dept’] 也就是 utf-8 的了
据此,你不可能查找到中文相关的结果
——解决方案——————–
$str = iconv(‘utf-8’, ‘gbk’, trim($_GET[‘dept’]));
$mysql =” select *,0 as ord from checkpro where ifstop=0 and dept like ‘*”.$str.”*’ “;
$rs = $conn->Execute($1本文来#源gaodai$ma#com搞$代*码*网

搞代gaodaima码

mysql);
——解决方案——————–
另外
$mysql =” select *,0 as ord from checkpro where ifstop=0 and dept like ‘*“.$str.”*‘ “;
为什么是 *
应该
$mysql =” select *,0 as ord from checkpro where ifstop=0 and dept like ‘%”.$str.”%’ “;
才对


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php access以汉语言作为参数进行数据查询时出现乱码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址