ビジネス シナリオ: PHP ページは、1 つの入力パラメーターと 1 つの出力パラメーターを持つ mysql ストアド プロシージャを呼び出します。
問題点: 正常に実行できるのですが、データベースにパラメータを入力すると必ず文字化けが表示されます。
PHP ページのコードは次のとおりです
<head> <meta charset="utf-8"> </head> <?php $conn = new MySQLi("数据库地址","数据库用户","密码","数据库名"); mysqli_query($conn,"SET NAMES utf8"); $info_name_cn='测试x201'; $info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8'); $result=$conn->query("CALL x2('$info_name_cn',@exeout_rows)"); $result=$conn->query("SELECT @exeout_rows"); $recordset=mysqli_fetch_assoc($result); $exeout_rows=(int)$recordset["@exeout_rows"]; ?> <div>---|<?php echo $exeout_rows; ?>|<?php echo mb_detect_encoding($exeout_rows); ?>|---</div>
mysql ストアド プロシージャのコードは次のとおりです
CREATE DEFINER=`数据库名`@`%` PROCEDURE `x2`( IN exein_info_name_cn VARCHAR(5) ,OUT exeout_rows int ) BEGIN set exeout_rows=1; insert into 测试表 ( info_name_cn ) values ( exein_info_name_cn ); END
mysql データベースでは、テストテーブルは「utf8/utf8_ganaral_ci」、文字セットとテストテーブルの内部フィールド info_name_cn の文字セット
*.phpファイルのエンコードの問題
補足:同じ状況で、ファイル保存時のエンコード方式をASCIに変更したところ、GBKに設定するとページコードが正常に動作しました。