【PR】 【レンタルサーバーのスピーバー】 CGI・SSI・PHP・TELNET・SSH 全て標準装備・月額1,785円〜(税込)
【PR】 JavaScript暗号化ソフト「プランセスJS Encoder」 【PR】 ニュー・スーパーマリオブラザーズ・Wii 【PR】 Wiiフィット プラス(バランスWiiボードセット) |
||||||
JSファイル内でdocument.writeしたら文字化け(Macネスケ4.7編)前のページでは、Mac版IE4.5利用時にのみ発生するJSファイル内でのdocument.writeを取り上げました。Mac版IE4.5では、外部ファイルのエンコードをUTF-8であると決め付けるために文字化けが発生していたのですが、同様に、このページで取り上げるMac版ネットスケープ4.7でも同種の「決め付け」による文字化けが発生します。Mac版ネットスケープ4.7では、ページの本体をShift_JISで作成し、JSファイルをShift_JISで作成している分には問題が発生しませんが、ページの本体をEUC-JPで作成し、JSファイルをEUC-JPにした場合に、左の画像のように文字化けが発生します。 EUC-JPの『あいうえお』が『』に化けるのは、今後さまざまな形で文字化け解決に役立つと思いますので、覚えておいたら良いですが、EUC-JPの文字列をShift_JISで無理やり読み込んだ場合です。つまり、Mac版ネットスケープ4.7では、Shift_JIS以外の文字コードでページ本体を作ると、そのページ本体の文字コードに合わせた文字コードで外部ファイルを作成すると文字化けします。 つまり、Shift_JIS以外の文字コードでページ本体を作成した場合、前のページのMac版IE4.5の対策と合わせて、下のような感じでJavascriptを書く必要があります。UA(ユーザー・エージェントもしくはブラウザ)を判別して、読み込む外部ファイルを変更します。 また、「Mac版ネットスケープ4.XでJavascriptが動かないとき」の章でも説明しましたように、Mac版ネットスケープ4.XでのみJavascriptが動かない事例になります。対策を施さないと、外部ファイルの読み込みに最初は失敗したかのように何もdocument.writeされません。.htaccessやHTTPヘッダーを活用することになります。詳しくはこちらを参照してください。
したがって、Mac版IE4.5用とMac版ネットスケープ4.7とそれ以外のブラウザ用のファイルの3種類が必要です。これはかなり面倒です。正直、Shift_JIS以外でページを作成する場合は、外部ファイル内でdocument.writeするのは避けたほうが無難でしょう。 ちなみに、.htaccessを使ってなんとか解消できないかと、「AddType "text/html; charset=EUC-JP" js」とやってみたましたが、これは駄目でした。ただ、「<script type="text/javascript" src="js.js" charset="EUC-JP"> 」などと外部ファイルの文字コードを指定してあげるのは、効果が見られました。(いずれにしても、先述のように、ページ本体の文字コードがEUC-JPであるために、対策なしでは、最初のロード時にはMac版ネスケ4.xでは、外部ファイルに記述したJavascriptが動きません。.htaccessもしくはHTTPヘッダーで明示的にEUC-JPであることを示す必要があります。具体的な方法はこちらを参照してください。) 次のページでは、「Javascriptのprompt関数でユーザー入力を受け付けるとゴミがつく問題<」 という文字化けを取り扱います。
|