■■■■■■■■■■■■■■■■■■■■ CGI講座・リプレイ -第5講- 対決!文字コード!! ■■■■■■■■■■■■■■■■■■■■ ■1、文字化けの発生とその原因■ 前回から本格的にCGIの作成に入ったわけだが、 文字が表示されるもの、特に日本語を扱うCGIは 「文字化け」と呼ばれる現象がよく起こる。 市販されているパソコンで使える日本語の形式は 「シフトJIS」という形式が一般的に使われているが、 CGIを使用するインターネット上では 「EUC」と呼ばれる形式が使われている。 つまり文字コードの形式の違いによって 文書がうまく読み込めない、というのが文字化けの正体である。 これがページ全体の文字が化けている場合ならば 表示されているときに右クリック→エンコードで正しく表示されるが 厄介なのは「文章の一部だけが文字化けしている」という場合である。 その対処方法を2つ紹介するので、今回も下記からお手本を見てもらいたい。 http://isukenet.s20.xrea.com/ren/recgi/ ■2、文字化けを抑える■ 文字化け対策その1:シングルクォーテーションの使用 通常「print」命令のあとにはダブルクォーテーション(”)を使用するが、 これをシングルクォーテーション(’)に変更することによって 部分的な文字化けを抑えることができる。 ただし、この方法だとソースコードにおける改行記号(\n)など Perlの命令も無効になってしまう。 文字化け対策その2:\マークの使用 部分的に文字化けが発生するときはもう一つ方法がある。 文字化けを起こしている文字の前に\マークをいれる方法である。 お手本の方では「表示」という文字列が部分的に文字化けしたと想定して この方法をとっている。 \マークにはいろいろな文字と組み合わせることによって いろいろな効果を発揮する(\nで改行するのもその一つ)が、 日本語に対して使うと\マークの直後にある一文字を そのまま表示する、という効果がある。 もちろん\マークは表示されないので安心して使ってほしい。 ■3、掲示板での文字化け対策■ 上記の方法を使えば確かに自分で作った文章については 文字化けを抑えることができる。 しかし、大量の日本語を扱う掲示板ともなれば、この方法は使えない。 なので掲示板のほうではライブラリファイルと呼ばれるPerlの拡張機能を用いて 一気に文字コードを変換している。 この方法は後に掲示板を作成するときにまた詳しく触れたいと思う。 第6講につづく おまけ 師範の今日の戯言:「日本語を使うCGIは文字コードとの戦いである」 --------------------------------------------------------------------- 発行人: 塚田 伊助 発行所: 伊助の鍛錬場 http://isukenet.s20.xrea.com/ 連絡先: isuke_tukada@hotmail.com
もどる