• ベストアンサー

掲示板CGIでの半角カナ使用について

leaz024の回答

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

半角だけが化けるというのは、ほぼ間違いなくCGIのデコード処理に問題があります。 デコードの際の漢字コード変換には jcode.pl がよく使われますが、多くのフリーCGIや書籍のサンプルはその使い方が甘いため、半角カナのみの場合は確実に化けるだけでなく、全角文字でもまれに文字化けすることがあります。 (jcode.pl は Shift_JIS 半角カナ文字を euc-jp と誤認します。) どんな場合でも確実にコードを特定する、というのは非常に困難ですが、プログラムを工夫すればある程度は精度を上げることができます。 また、現在利用されているほとんどのブラウザは、HTMLと同じ文字コードで送信してきますので、HTMLが Shift_JIS であるならば、ほとんどのユーザからの送信に対して文字コードの変換は不要ということです。 以前、比較的ユーザの多い掲示板サイトで仕事をしていたときに、実験的にコード変換ルーチンをスキップさせてみたことがありますが、投稿内容が文字化けするという不具合連絡はほとんどありませんでした。 (一般的に利用されているブラウザでの連絡はありませんでした。) 一度コード変換ルーチンを外して、様子を見てみてはどうでしょうか。

touyou
質問者

補足

ありがとうございます。 詳しい解説までいただき、感謝いたします。 実は以前CGIの掲示板を使用していた際に、ある方の書き込みが(全角の普通の日本語)突然化けてしまって、とても申し訳ない思いをしたことがありました。そういうこともあるのですね。 現在設置しようとしている掲示板はMETAタグを挿入し、Shift_JISで読み込むように設定しております。 それで、お手数なのですが 「コード変換ルーチンをスキップさせてみる」 という部分、具体的にスクリプトのどういった部分の記述を直せばよろしいか教えていただけるでしょうか。 CGIの、レイアウトに関する部分は読むことができ変更も普段やっておりますが、プログラミングが関わる部分については殆んど知識がない状態です。 見当違いでしたら申し訳ありませんが、もしかしたらこの部分は関係があるでしょうか。 #------------------- フォームデコード if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } else { $formdata = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$formdata); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\n//g; $value =~ s/\,/,/g; &jcode'convert(*value,'sjis'); $FORM{$name} = $value; } もし良い方法があるようでしたら是非教えていただければと思います。 宜しくお願い致します。

関連するQ&A

  • 「x-sjis」「Shift_JIS」同じ意味?

    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis"> の「x-sjis」は「Shift_JIS」と同じ意味ですか? 「x-sjis」はIEのブラウザ右クリック→エンコードのどれに該当するのでしょうか?

    • ベストアンサー
    • HTML
  • タグの意味が分からなくって...

    <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=Shift_JIS"> って、どういう意味なんでしょう?

    • ベストアンサー
    • HTML
  • 半角カナを使用して公開しているサイト名

    作成したソフトの動作試験に使うために以下のHTMLファイルを探しています。 <meta http-equiv="Content-type" content="text/html:charset=EUC-JP"> のコードで半角カナ(&h8e &h??)も使って公開しているサイトをご存知のかたいらっしゃいませんか。

  • 文字コード

    HPを作る際は <meta http-equiv="content-type" content="text/html;charset=shift_jis"> と <meta http-equiv="content-type" content="text/html;charset=utf-8"> のどちらにすればいいのでしょうか?

    • ベストアンサー
    • HTML
  • CGIで画像更新??

    初めて投稿します。 短い間隔でサーバに送られてくるJPEG画像をcgiか何かを使って一定間隔で更新するホームページを作りたいのですが・・・ 数少ない知識を使っては見たのですが、 META content="text/html; charset=shift_jis" http-equiv=Content-Type META http-equiv="refresh" content="20" META HTTP-EQUIV="Pragma" CONTENT="no-cache" これだと、リロードの時に画像が上から表示されるので、シャッターを切っているみたいで使用できないと言われてしまいました。 特に言語は問いませんので宜しくお願いします。

    • 締切済み
    • CGI
  • ホームページビルダー

    ホームページビルダー こちらhttp://htmllint.itc.keio.ac.jp/htmllint/のサイトで HTMLの構文をビルダー上で直していたらおかしなことになりました たとえば、<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />を <META>http-equiv="Content-Type" content="text/html; charset=Shift_JIS" </META> とし、プレビューしたら、文字で出てきてしまったんです!! ビルダーは8です どうすればいいのでしょうか>

    • ベストアンサー
    • HTML
  • metaタグ終りの/(スラッシュ)の意味

    metaタグの最後に <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> 上記のように半角スペースとスラッシュがついたものをみたのですが、これはどういう意味なのでしょうか? また、metaタグ以外にも使うものなのでしょうか? 教えていただけると幸いです。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • ▲▲METAタグについて▲▲

    HTMLとCSSでHPを作るとき。 METAタグはこれでよいでしょうか?? <meta http-equiv="content-type" content="text/html;charset=shift_jis"> <meta http-equiv="content-style-type" content="text/css">

    • ベストアンサー
    • HTML
  • 文字化け

    HPを少しずつ作っているのですが、少しだけできたのでyahooのところにアップしてみました。しかし文字化けしてしまいました(涙) <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS"> このタグが関係あるのでしょうか? IE6

  • ホームページの文字コードが勝手にunicodeに

    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> 上記タグを入れて、METAでShift_JIS設定を行っているのですが、 FTPしたものをブラウザで見るとUnicodeになってます。 ためしにMETAタグを全部削除しても、同じでした。 METAよりすごい命令がでているか、METAを見ないような指令が どこかにあるとしか思えないんですが、さっぱり検討がつきません。 だれか心当たりのある方、教えてください。