DB内の文字化けが解消しました。

14日の大雪で危うく帰宅困難者になりそうになったYu-ichiです:neko:

15日はみごとに電車運休していましたが・・・。:kaeru_snow:

さて、タイトルの通りDB内の文字化けを無事に解消することができました。:otukare:
といいますのも、このブログのDBなのですが、元々、WordPressMEから使い始めておりました。
その時はWordpressMEの文字コードが「EUC」で、用意したMySQLは「UTF-8」にテーブル「latin1」で格納されているという複雑な環境でした。:kaomoji4::kaomoji4:
その為、UTF8のDBにEUCで文字が格納されておりましたので、
Myphpadminから覗くと、見事に文字化けをしておりました。:naku:
(表示はEUCでしたので問題ありません。)

エクスポートして文字コードを変換してからインポートする作業を行おうと思ったのですが、
Myphpadminから「latin1」でエクスポートできなかった為、ずっと解消されずにおりました。
(SSHはよくわからないので不安でした・・・。:kaomoji3:

とりあえず動作しているし、まぁいいか~なんてやり過ごしておりました・・・がっ!:cat_5:
この度、当社ホームページのリニューアルが決定し、どうしても綺麗にしておく必要があったので問題を解決する必要がでてきたのです。:orooro:

で、結論からいうと、PHPでDBをエクスポートできました。:wa-i:

</p>
<p>&lt;?php<br />
$dbHost = &quot;localhost&quot;;<br />
$dbUser = &quot;【DBユーザー名】&quot;;<br />
$dbPass = &quot;【DBパスワード】&quot;;<br />
$dbName = &quot;【DB名】&quot;;</p>
<p>$filePath = &quot;【保存する場所への絶対パス】&quot;;<br />
$fileName = date('ymd').'_'.date('His').'.sql';<br />
$command = &quot;mysqldump --default-character-set=latin1 &quot;.$dbName.&quot; --host=&quot;.$dbHost.&quot; --user=&quot;.$dbUser.&quot; --password=&quot;.$dbPass.&quot; &gt; &quot;.$filePath.$fileName;<br />
system($command);</p>
<p>$dlFile = $filePath . $fileName;<br />
header('Content-Type: application/octet-stream');<br />
header('Content-Disposition: attachment; filename=&quot;' . $fileName . '&quot;');<br />
header('Content-Length: '.filesize($dlFile));<br />
readfile($dlFile);<br />
?&gt;</p>
<p>

はい、たったこれだけ。
拡張子を「.php」にしてサーバーにアップしてアクセスすれば、
指定したDBをエクスポートできます。:kaoemoji3:
–default-character-set=latin1」の部分で、出力の文字コードを指定しています。

あとはエクスポートしたsqlファイルをエディタで開いて、「latin1」を「utf8」に置換えしてインポートするだけ。
いままで悩んでいたのはなんだったんだろう・・・というくらいあっけなく解決しちゃいましたとさ・・・┐(´-`)┌

トラックバックURL