Wenn MySQL eine gespeicherte Prozedur aufruft, ist das eingehende MySQL immer verstümmelt. (Anbei sind der Betriebsablauf, Details und Screenshots)
**越狱兔
**越狱兔 2019-07-22 15:35:41
0
3
1142

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');






Darüber hinaus kann das Ausführen des folgenden Codes normal funktionieren. Chinesisch zur Datenbank hinzufügen

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
1.png

**越狱兔
**越狱兔

Antworte allen(2)
innocence

*.php文件编码问题

  • Antwort 对,非常感谢。现在已经搞定了。 我感觉是直接使用Notepad++复制粘贴,造成.php文件内编码问题。 操作过程留一下给后面的东西吧(我是菜鸡,大神请不要介意) 1、新建abc.txt文件,文件另存为utf8格式,修改名字为abc.php打开。 2、将以前写过的代码,以txt记事本打开,复制,粘贴到abc.php文件中。保存关闭。 3、用软件Notepad++打开abc.php,“编码”项选择UTF-8(避免出现BOM头)。
    **越狱兔 Autor 2019-07-27 15:12:50
流氓越狱兔

补充:同样情况下,我将文件保存编码方式改为ASCI,页面代码设置为GBK后运行正常。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!