php がデータベースにデータを挿入するときに文字化けするデータの解決策: 最初にデータベースのエンコーディングを utf8 に設定し、次にデータベースに挿入するテキスト エンコーディング メソッドを決定します。最後に、switch ステートメントを使用して決定します。データの挿入。
推奨: 「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 サイトの他の関連記事を参照してください。