Geschäftsszenario: Die PHP-Seite ruft die gespeicherte MySQL-Prozedur auf, die 1 Eingabeparameter und 1 Ausgabeparameter hat.
Es ist ein Problem aufgetreten: Es kann normal ausgeführt werden, aber nach Eingabe der Parameter in die Datenbank werden immer verstümmelte Zeichen angezeigt.
Der PHP-Seitencode lautet wie folgt:
<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>: Reihenfolge des internen Feldes info_name_cn der Testtabelle ist „utf8/ utf8_ganaral_ci“
Ich habe verschiedene Konvertierungsmethoden ausprobiert – der folgende Text
, aber die Ergebnisse waren alle verstümmelt – die Ergebnisse nach der Ausführung sind wie folgt
(ID ist) 29: Nicht konvertiert
//$info_name_cn=mb_convert_encoding($info_name_cn,' UTF-8');
(id is)30: In UTF-8 konvertieren
$info_name_cn=mb_convert_encoding($info_name_cn,'UTF-8');
(id is)31: Konvertieren in GB2312
$info_name_cn= mb_convert_encoding($info_name_cn,'GBK');
(id is)32: Konvertieren in GBK
$info_name_cn=mb_convert_encoding($info_name_cn,'GBK');
(id is)33: In BIG5 konvertieren
$info_name_cn= mb_convert_encoding($info_name_cn,'ASCII');
(id is)34: In ASCII konvertieren
$info_name_cn=mb_convert_encoding($info_name_cn,'ASCII');
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
*.php文件编码问题
补充:同样情况下,我将文件保存编码方式改为ASCI,页面代码设置为GBK后运行正常。