ホームページ  >  記事  >  バックエンド開発  >  PHPがデータベースにデータを挿入すると文字化けが発生する

PHPがデータベースにデータを挿入すると文字化けが発生する

藏色散人
藏色散人オリジナル
2020-09-29 10:49:042802ブラウズ

php がデータベースにデータを挿入するときに文字化けするデータの解決策: 最初にデータベースのエンコーディングを utf8 に設定し、次にデータベースに挿入するテキスト エンコーディング メソッドを決定します。最後に、switch ステートメントを使用して決定します。データの挿入。

PHPがデータベースにデータを挿入すると文字化けが発生する

推奨: 「PHP ビデオ チュートリアル

php はデータベースにデータを挿入しますが、次の問題が発生します。文字化けが発生する

一般に、データベースに挿入されたデータの文字化けはエンコードの問題です。データベースに挿入する前に、コンテンツのエンコード方式を確認できます。エンコード方式と同じであれば、データベースで使用されているもの (utf-8 など) を使用している場合は挿入を実行し、操作が異なる場合はトランスコードします。

まず、データベースに挿入するテキストのエンコード方式を決定します。utf-8 の場合は挿入します。そうでない場合は、utf-8 に変換してから挿入します。

        $e=mb_detect_encoding($text, array('UTF-8', 'GBK', 'gb2312'));
        switch($e){
            case 'UTF-8' : //如果是utf8编码就直接插入数据库
                break;
            case 'GBK': //如果是gbk编码就转换为utf-8之后再插入数据库
            iconv("GBK", "UTF-8",$data) ;
            break;
            case 'GB2312': //如果是GB2312编码就转换为utf-8之后再插入数据库
            iconv("GB2312", "UTF-8",$data) ;
        break;
        }

プログラムのエンコーディングがデータベースのエンコーディングと一致していれば文字化けはしないのではないかと思ったのですが、データベースに挿入したデータは依然として文字化けしています。 PHPでmysqlに接続する際に、mysqlのエンコードが設定されていないのではないかと思ったのですが、案の定、データベースに接続した後、データベースのエンコードをutf8にしてからデータベースに挿入すると文字化けせずに済みました。

コードは次のとおりです:

$this->conn = mysqli_connect($db['default']['hostname'], $db['default']['username'], $db['default']['password'], $db['default']['dbname']) or die('Connect error!'); //连接到数据库
mysqli_set_charset($this->conn, 'utf8'); //此处不能用utf-8

以上がPHPがデータベースにデータを挿入すると文字化けが発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。