記述方法は間違いないのに、文字化けしてしまう。
xhtmlはutf-8で宣言していたのだが、Javascriptで記述された日本語がブラウザで確認すると文字化けしてしまった。
「なぜ?」
もう少し試して分かったことは、xhtml内に直接書いたスクリプトでは文字化けしない。それを外部化すると文字化けすることが分かった。
文字コード宣言していないからいけないのだろうか?
例えばスタイルシートでは先頭に「@charset〜」を記述するが、javascriptの場合はどうなのだろう?
ネットサーフィンして分かったことは、もともとJavascriptはutf-8で認識される。・・・。よく分からん。ものは試し、とりあえずxhtmlソース内のスクリプト部分に「charaset="shift-jis"」を追加してみる。
<script type="text/javascript" src="test.js" charaset="shift-jis"></script>
「文字化けしてない!」
これで一見落着と思ったが、よくよく考えて奇妙な疑問にぶち当る。
なぜ、xhtmlのutf-8で書かれた日本語は正しく解釈されていて、javascriptのutf-8は文字化けしてしまうのだろうか?
そもそも根本的な事柄として、utf-8とshift-jisの違いを含めた文字コードを調べてみる。
- Shift_JIS
- 日本語コード。通常、WindowsやMacintoshで取り扱う文字コード
- EUC-JP
- 日本語コード。UNIXで日本語をサポートする文字コード
- iso2022-jp
- 日本語コード。単にJISとも呼ばれる。日本語コードの基本となるもので、HTML以外にも電子メールなどに使われる。
- UTF-8
- 各国の文字、アクセント記号、漢字の利用が可能。ただしブラウザによっては間違った表示がなされることもある
- ASCII
- アメリカの標準の文字コード。すべてのコードの基本となる、アルファベットや記号が含まれる
- ISO-8859-1
- 西洋諸語コード。Laten1と呼ばれる文字コード。LatinコードにはLatin1からLatin10までがあり、Latin1ではカバーしきれない言語や記号に対応できるようになっている
ふむふむ、utf-8で漢字の利用ができる。つまり、Javascriptの文字コードがutf-8でも問題はないはずなのだ。
制作の段階で、果たしてほんとにUTF-8で書かれていただろうか?
utf-8で呼び出したはずの文が文字化けしているということは、そもそも制作段階で果たしてほんとにutf-8で保存されているのだろうか?という新たな疑問にぶちあたった。
問題の解決の糸口はここにあった。
確認したところ、外部ファイルで容易したJavascriptファイル自体が、実はShift-JISで保存されていたのだ。だから、utf-8で書かれた外部ファイルを呼び出すと、文字化けしてしまい、shift-jisで呼び出すと、文字化けが直っていたのである。
Dreamweaverで文字コードを変換する
つまり、utf-8で呼び出すには、スクリプト自体もutf-8で制作する必要があったのだ。
今にして思えば当たり前のことだが・・・。お恥ずかしい限り。
最後にDreamweaverでの文字コードの設定方法を紹介しておく。
新規で制作するファイルの文字コード設定方法
「環境設定」>新規ドキュメント>エンコーディングの設定
すでに制作されたファイルの文字コード変換方法
- 修正したいファイルを開く
- 「コマンド」+「J」
- 任意の文字コードを選択