phpデータベースへのデータ挿入に文字化けしが発生
2228 ワード
一般的にデータベースに挿入されるデータの文字化けしは符号化の問題であり、データベースを挿入する前にコンテンツの符号化方式を確認することができ、データベース用の符号化方式(utf-8など)と同様に挿入操作を実行すれば、異なる場合に符号化を行う.まず、データベースに挿入するテキストの符号化方法を判断し、utf-8であれば挿入し、そうでなければutf-8に移行してから挿入します.
プログラム中の符号化とデータベース用の符号化が一致していれば文字化けしてこないと思っていたのですが、データベースに挿入されたデータはやはり文字化けしていて、符号化の不一致を排除した後、phpでmysqlに接続する際にmysql符号化が設定されていなかったせいか、やはり、データベース接続後にデータベースの符号化も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符号化が設定されていなかったせいか、やはり、データベース接続後にデータベースの符号化もutf 8に設定してからデータベース挿入操作を行うと文字化けしません.コードは次のとおりです:
$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