読者です 読者をやめる 読者になる 読者になる

【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なはず。
あ、バックアップは取ることを推奨します。

広告を非表示にする