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を書き換えたりしたら、保存したコードと違うんじゃね?と指摘してくれる。
ソフト側で知らぬ間に勝手にコントロールしたりはしない。