コンピュータで書かれている多くの文字は、コンピュータ内では文字コードに置き換えられています。コンピュータの世界で最も有名な文字コードは、ASCIIコードです。しかし、このコードには、アルファベットと数字と特殊文字しかありません。つまり日本語(全角文字)はないのです。
そこで日本語を表現するには、別のコードが使用されています。この日本語文字コードには、現在以下の3種類があります。
現在のホームページには、上記3種類のコードが混在しています。 時々、ホームページを表示すると、文字化けが起こるのは、SHIFT-JISで書かれたページをブラウザがEUCと思って表示するためです。
これはブラウザの「表示」-->「文字コードセット」などで変更することによって、正しく表示することが可能です。
現状では、それぞれに一長一短(メリットとデメリット)があって、どれが最も良いかは分かりません。一般的に、UNIXのOSを使う場合は、EUCコードが使われることが多く、Windows系の場合はSHIFT-JISコードが使われます。
第一演習室でCGIプログラムを作成する場合、最も都合が良いのはEUCコードです。しかし、単にxemacsで文字入力した場合、Windowsとの親和性をもつためにEUCコードにはならず、SHIFT-JISになります。そのために、課題0のプログラムを下記のように書くとエラーとなります。
#!/usr/bin/perl #---------------------- # program-ID:test0.cgi # auther :名前 # date :2001/10/9 #---------------------- print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "すわ!世界\n"; print "\n"; __END__これを回避する方法には、次の3通りがあります。
[egi@stella cgi]$ nkf -e test0.cgi > test0e.cgi <- EUCに変換し結果をtest0e.cgiに格納 [egi@stella cgi]$ mv test0e.cgi test0.cgi <--変換したファイルをtest0.cgiとする
これで、CGIプログラム test0.cgi のコードは、EUCになります。
課題0で示したプログラムをみて下さい。漢字を使用している部分だけ’’で囲まれていますね。
この3の方法は、私もやってみましたが、どの箇所に¥を置いたら良いかがなかなか掴めず、あまりお勧めできません。
上記のうち、私は1の方法が最も確実で良いと思います。ちょっとの部分だけを変更するのであれば、2の方法も良いかもしれません。しかし、本格的にプログラムを作成するとなると、2の方法も煩わしいところがあります。
現状では、漢字コードの問題はインターネット上での悩ましい問題として様々な形で残っています。