ウェブページの文字をShift_JISからUTF-8Nに変更
私はウェブページをHTML5で作っていて、UTF-8の文字コードを使うべきところをShift_JISを使っていたので、今回、思い切って文字コードをUTF-8に変更しました。大量のページの変更が必要で、苦労した所やつまずいた所を紹介します。
HTML5では文字コードUTF-8Nがデフォルトです
HTML5はHTML4やXHTMLの後継で、最近HTML5に移行する人が増えてきました。HTML5では文字コードはUTF-8が推奨でShift_JISは非推奨になっているために、私は以前まで、HTML5への移行にためらっていましたが、Shift_JISのままでHTML5に移行を決行していました。
しかし、Expression Web4でページを作成していると、突然文字コードがShift_JISからUTF-8に変わることがあり、仕方なく文字コードを変更することにしました。
UTF-8とUTF-8Nの違い
UTF-8のファイルは、その先頭にBOMというものが付いていて、UTF-8Nはファイルの先頭にBOMが付いていないということです。BOMとは、Byte Order Markの略で文字コードを識別するための特別なコードの事です。
ウェブページを作成する時にはUTF-8Nを使う方が問題無いようです。普通にUTF-8といったらUTF-8Nの事を言うようですが、UTF-8とUTF-8Nの両方が扱えるTeraPadなどのエディタを使う時には特に注意が必要です。
従って、文字コードはUTF-8Nを使うことにします。
Shift_JISからUTF-8Nに変換する方法
ただ、文字コードをShift_JISからUTF-8Nに変更するだけなら、TeraPadなどのUTF-8に対応したエディタでファイルを読み込んで、「文字コード指定保存」でUTF-8Nを指定すればできます。
しかし、大量のファイルを変更するにはこれでは時間が掛かってしまいますので、他の文字コードの自動変換ソフトを探すことにしました。
文字コード変換ソフトKanji Translatorを使う方法
私は 文字コード楽天 変換ソフトのKanji Translator 1.60を使って変換してみました。ダウンロードしてソフトを起動したら、文字コードを「UTF-8のBOM無し」に指定して、ファイルフォルダ毎ドラッグ&ドロップして、「変換」をクリックするだけで変換してくれます。
HTMLファイル(PHPファイル)だけではなく、インクルードファイルも含めて日本語を使っている全てのファイルの変更が必要になります。
文字コードの指定の変更
HTMLファイルのメタタグを次のようにshift_jisからutf-8に変更します。これも大量のファイルの変更が必要ですので、TextSSというファイル一括置換ソフトを使いました。
<meta charset="shift_jis" />
<meta charset="utf-8" />
しかし、この方法でTextSSを使用すると、文字コードが「BOM無し」になっていてもBOM付になってしまうようです。メタタグの変更は最初にする方が良いでしょう。
BOM付をBOM無しに変換する方法
BOM付をBOM無しに変換するには、「nbom.exe」というソフトを使ってみました。この使い方は実にシンプルで動作も速いようです。ファイルのフォルダ毎このソフト上にドラッグ&ドロップして、変換するかどうかを1つずつ指定するだけです。1つずつ指定するのが少し面倒ですがすぐに終わります。
その他の変更
その他、PHPで文字コードの変更を行なっていた箇所の書き換えが必要になります。私は楽天広告を生成する所でShift_JISからUTF-8に変更していたのでこれを削除しました。他にも文字コード特有の操作をしている所があり、UTF-8用に書き換えました。
CGIで作成していたPostmailやWebmartなどのソフトも全てUTF-8Nに書き換えが必要です。これらは全てTeraPadのエディタで行いました。
UTF-8に書き換えた結果
Expression Web4で編集しても文字コードの書き換えは無くなりました。また、HTML5でUTF-8になったので、W3Cの文法チェックの警告が一つ減りました。後は、チェッカーが暫定的なものだという警告だけです。