- ベストアンサー
CGIで記述した文字が 化けてしまいます
簡単な掲示板を作成していますが、 CGIで記述した文字が画面に表示されると文字化けしてしまいます。 作成した掲示板の入力文字は、文字化けせずにファイルに書き出され 表示できます。 CGI内で記述した文字だけ出来ません? OSはWIN/ME, 編集は ワードパッドで行っています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
「表示」が「侮ヲ」になること (最初の文字の2バイト目が5Cのとき)と同じならば、 「表\示」というようにやれば、うまくいきます。
その他の回答 (5)
- burn
- ベストアンサー率65% (25/38)
例えば「表示」と記述したら文字化けしてしまうという事ですね。 それの対処法は文字化けしている文字の前に「\」をつけると解決します。 やってみてください。
- a-kuma
- ベストアンサー率50% (1122/2211)
いろいろアドバイスがついてますが、まずは CGI の出力できちんと META タグを かいて、このページのコードはどれだ、というのを明記しましょう。 ワードパッドで CGI の編集を行っているということは Shift-JIS のはずですね。 であれば、 <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> を <HEAD> にきちんと記述しましょう。 後は No.3 の回答に有るようにメッセージをシングルクォートで括って、 エスケープを無効にしておくことです。
- taba
- ベストアンサー率61% (349/567)
文字化けする文字一覧は、こちらを見ていただくといいと思います。 個人的にはEUCで書くことをお勧めします。Windowsでは、EUCであっても読み書きできるEditorも結構あると思いますので、そういうのを使えば不便さはほとんどありません。 ぜひ試してください。
- leaz024
- ベストアンサー率75% (398/526)
inoue64さんのおっしゃる通り、2バイトコードの2バイト目のコードが5Cの場合に、これが\と認識されて文字化けがおきます。(5Cは「\」の文字コードです。) 文字化けの可能性がある(2バイト目が5Cの)漢字一覧を載せたHPなども検索すれば見つかるので、それら全てを「表\示」のように書いてもいいのですが、シングルクオートで囲んで\の働きを無効化すれば化けることはないので、こっちの方がラクではあります。 変数などを表示する際は、 print '変数の内容は' . $val . 'です。<BR>' . "\n"; のようにすればOKです。 多少面倒ですが。
- crimson
- ベストアンサー率40% (900/2202)
Shift-JISで記述されたCGIの場合、ある特定の文字で 文字化けが生じることがあります。 EUC-JPで書き直せば一番いいのですが、化ける文字を エスケープコード "\" で挟むことでも解決可能ですの で、処理後に再度アップロードして下さい。
補足
ありがとうございます。 早速やってみまして、文字化けはなくなりましたが、 コンボボックス風に作ってましたが、次の設定してる人 が消えてる現象も起こってまして・・・ とりあえず、何かやってみます。