PHP アクセスでデータ クエリのパラメータとして中国語を使用すると文字化けが発生する

WBOY
リリース: 2016-06-13 12:29:53
オリジナル
884 人が閲覧しました

PHPアクセスでデータクエリのパラメータとして中国語を使用すると文字化けが発生します。
まずコードを入力してください:

<?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=office
すると図のようなエラーが表示されますが、パラメータが英語の場合はエラーは発生しません。


アドレスバーに次のように入力すると:
http://192.168.0.30:81/fkfs/jsons_a/json_deptchpro.php?dept=general
現時点ではエラーは発生しません。このパラメータによって得られる結果は正しいはずですが、レコードは表示されません。
この問題の解決方法を皆さんにお聞きしたいのですが、よろしくお願いします。 $str = iconv('utf-8', 'gbk', トリム($_GET['dept'])); $mysql =" select *,0 as ord from checkpro where ifstop=0 and dept like '*".$str."*' ";
$rs = $conn->Execute($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."%' ";
エラー メッセージは次のように表示されます。エラー行は行 21
です。 21 行目がどこにあるかを指摘してください。
投稿したコードでは、21 行目は echo $mydept; ですが、これは明らかに当てはまりません

出力データに対してエンコード変換を実行しました (iconv('gb2312','utf-8',$rs->Fields['dept']->Value))
明らかに、ページは utf-8
です すると $_GET['dept'] も utf-8
これによると、中国語

に関連する結果を見つけることは不可能です。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート