• 締切済み

携帯電話でCGIのファイルを読むと文字が・・・

携帯電話で読めるようなホームページを作っています。 ところが、FORMでCGIファイルを見に行くと、日本語が文字が化けます。 CGIファイルはPERLですが、UNIXサーバでPERLスクリプトをSHIFT JISで書くとうまく動作しないことがある、と、手持の本には書いてありました。 みなさんは、どの様にされておられるのでしょうか? あるいは先の本に書かれていることは昔の話しで、今はUNIXのPERLでもSHIFT JISとCR+LFでスクリプトを書いても問題ないのでしょうか? よろしくお願いします。

みんなの回答

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

>> シフトJISにはその他にも色々な問題点がありますので、面倒がいやな場合はスクリプトをEUCにし、表示の際にシフトJISに変換するとよいでしょう。 > 上記のヒントなどをいただければありがたいです。 文字コード変換用のライブラリとしては jcode.pl がもっとも有名だと思われますので、そちらを紹介しておきます。 jcode.pl の最新版は下記から入手できます。 http://www.srekcah.org/jcode/ jcode.pl の利用方法については、こちらで詳しく解説されています。 http://www.mikeneko.ne.jp/~lab/kcode/jcode.html 実現方法としては、表示するHTML全体を1つの変数(例えば $html など)に格納し、表示の直前に jcode::convert を通す、のような案が考えられます。 変換の部分は次のような感じになるでしょう。 jcode::convert(\$html, "sjis", "euc"); print "Content-Type: text/html; charset=Shift_JIS\n\n"; print $html;

参考URL:
http://www.srekcah.org/jcode/,http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

今も昔もOSにも関係なく、シフトJISで何も考えずにスクリプトを書けば問題が起こる可能性があります。 (使ったことがありませんが、JPERLでは大丈夫だそうです。) ただしこれは、シフトJISの文字コードに関するクセを熟知した上でコーディングすれば、何ら問題はありません。 また、UNIXの改行コードは「LF」であり、「CR+LF」で通用するようになることはないでしょうから、改行コードに関しては必ず LF にするようにしてください。 文字化けすると言うことですが、例えば「表示」や「予定」という文字列は、それぞれ「沸」「苓」のように表示されてしまいます。 これはシフトJISでスクリプトを書く際の問題の一角で、「表\示」「予\定」のように化けてしまった2文字の間に半角の「\」を入れることで解消できます。 シフトJISにはその他にも色々な問題点がありますので、面倒がいやな場合はスクリプトをEUCにし、表示の際にシフトJISに変換するとよいでしょう。

chrilake
質問者

補足

ご回答いただき、ありがとうございました。 エスケープの使い方を丁寧に説明して頂き、何となく分かりました。 >シフトJISにはその他にも色々な問題点がありますので、面倒がいやな場合はスクリプトをEUCにし、表示の際にシフトJISに変換するとよいでしょう。 CGIをたまに使っている程度なので、命令など忘れがちです。 上記のヒントなどをいただければありがたいです。 指定により文字をEUCとかSHIFT JISに変換するライブラリは使用したことがあります。 宜しければ、お願い致します。 ありがとうございました。

  • Kirishima
  • ベストアンサー率32% (155/480)
回答No.2

主にシフトJISで作ってます。 化ける文字は\でエスケープしています。 文字列を操作する(検索・置換など)のはシフトJISではうまくいかないので、 一時的にEUCに変換して処理しています。

  • Seiryo
  • ベストアンサー率13% (27/203)
回答No.1

動かない場合は変換するよりないでしょう。

関連するQ&A