【SQL】文字化けを修正する
SQLとかphpmyadminの話
日本語を代入すると文字化けする場合
1. 日本語が入ると予想される項目(例えばusernameとか)の照合順序を
「latin1_swedish_ci」から「utf8_unicode_ci」に変更する。
これで新しく入るデータは問題なし。
2. すでに入っているデータの文字化けは無くならないので以下のコードを実行する。
$Usrdb = mysqli_connect(/*アクセス先*/) // すでに入っているデータはlatin1_swedish_ciなので // latin1に合わせてから取得する mysqli_set_charset($Usrdb, 'latin1'); $FileRlt = mysqli_query($Usrdb, "SELECT `ID`, `Filename` FROM `Uploadfiles`"); if(!$FileRlt){ die("ERROR"); } // utf8で挿入したいので指定する mysqli_set_charset($Usrdb, 'utf8'); while($FileRow = mysqli_fetch_assoc($FileRlt)){ // remove space $Name = mb_convert_encoding($FileRow["Filename"], "UTF-8", "auto"); mysqli_query($Usrdb, "UPDATE `uploadfiles` SET " . "`Filename` = '" . $Name . "', " . "' WHERE `ID` = '" . $FileRow["ID"] . "'"); }
これを全項目にやればOKなはず。
あ、バックアップは取ることを推奨します。