Dreamweaverを通すと文字化けする件
文字コード周りの設定って、ホントに大変。
いつも何が問題なのか、どこで引っかかっているのかが分かりにくい。
PHPでウェブアプリケーションを動かし、かつUTF-8で統一する場合、
①サーバー:PHP.iniの設定で文字コード周りをしっかりセットする。
②プログラムコード:使っているエディタでUTF8で保存する。
(BOMなし/BOMありがたまに問題になる)
という、単純なことで済むのだけれど、
以前Shift-JISで作っていたHPをUTF-8に移行しようとしたときに
延々ハマった記憶がある。
その時使っていたのが、Dreamwearver!!
結局、Dreamweaverが邪魔しているような気がして、それ以来DWを捨てて
TeraPadなどを使うようになったのだけれど・・・
この度、職場で同じようにShift-JIS⇒UTF-8への移行があり、
同じようにハマっていたので、再整理。
まず、【間違った手順】をおさらい。
①対象となるファイルの文字エンコーディングをツールを使って一気に
Shift-JIS -> UTF-8 に変換
②DWで開いて、charsetを Shift-JIS -> UTF-8 に置換処理。
③確認・・・って、DWで開いたときから実は文字化けしてる。
ここで気づきそうなものだけれど、意外に気づかなかったりする(笑)
④おかしいぞ、ということでサーバーの設定か?変換ツールがおかしいのか?とか調べる。
⑤直らないので、やっぱりDWが何かしてるんじゃないのかと、ぐぐる。
→「Dreamweaver 文字化け」とかネットでググると、
環境設定やら、修正→タイトルエンコーディングの設定やらが出てくるんだけど、
これをそのままやっても直らない。
で、何が邪魔してるのって、とにかく、注意すべきは、
Dreamweaverは
ソース内の"charset"を読み取り
ファイル自身の文字コードは無視し
頼んでもないのに
charsetに記述した文字コードで
ファイルを開いてくれちゃう
ってこと。
この「仕様」が、DWに慣れてない人間には想像できない!
おいおい、そんなの勝手にやらないでくれ、こっちはちゃんと文字コード変更してて
あとから一気にcharset書きなおそうとしてるんだから・・・
と言っても、DWは待ってくれない。
なので、【正しい手順】
①Dreamweaverで、charsetを Shift-JIS -> UTF-8 に置換(ローカルサイトを全て一括置換)
②そのまま上書き保存。(ここで、charsetとファイル自身の文字コードにはまだ矛盾がある)
③ツールを使ってShift-JIS -> UTF-8に文字コードを"本当に"変換。
これでok
【補記】
charsetとファイルの文字コードとの矛盾があると文字化けするのは当たり前で
考えてみれば初歩的なミスなわけだけど、
それでも普通のエディタはファイル読み込み時にcharsetに従って
"勝手に"エンコーディング掛けたりしないだろうし
この辺がDWを敬遠する理由の一つでもある。
ちなみにPHP開発のために最近よく使っているNetBeansは
保存コードと開こうとしている設定コードの矛盾をちゃんと指摘してくれるし、
charsetを書き換えたりしたら、保存したコードと違うんじゃね?と指摘してくれる。
ソフト側で知らぬ間に勝手にコントロールしたりはしない。