- ベストアンサー
ルビープログラムのフォーム入力について
- ルビープログラムのフォーム入力についての質問です。簡単な掲示板を作成しているのですが、実行するとうまく動きません。ヒントや原因を教えてください。
- フォーム入力でルビープログラムを実行する際に、半角英数の場合は値が返されますが、全角入力の場合は値が返されません。参考サイトのデータを実行していますが、原因が分かりません。お知恵をお貸しください。
- Rubyプログラムを使ったフォーム入力の問題です。掲示板の作成に取り組んでいますが、実行時にうまく動作しません。半角英数の場合は値が返されますが、全角入力の場合は値が返されません。どのような原因が考えられるでしょうか?お教えいただけますと幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>しかし入力するページが今度は文字化けします。 >ブラウザのエンコードを変えても文字化けしたままです。 ひょっとして、そのスクリプトのファイル自身がUTF-8で保存してないんじゃないですか?(入力するHTMLページも)
その他の回答 (1)
ごく単純な話ですが、文字コードが日本語向けに設定されてないからでは。リンクのページでも日本語は出力してないですよね? printでヘッダー書きだすやり方は面倒なので、CGI.newしてからheaderする形で書きますが、こんな感じでキャラクタセットをUTF-8に設定してはどうでしょう。 #!/usr/bin/ruby require "cgi" cgi = CGI.new() puts cgi.header("charset"=>"UTF-8") #以下、出力内容を適当に puts cgi['t'] # ※できればコードの改行は正確にしてください。複数行がつながっていて一瞬、意味がわかりませんでした。
お礼
丁寧にありがとうございます。 しかしまだうまく表示されないようです。 言葉すくなくてすみません。
補足
あれからいろいろ試してみました。 フォーム入力を表示するhtmlページのコードをUTF-8にして 教えていただいた puts cgi.header("charset"=>"UTF-8") で出力すると日本語が表示されました。 しかし入力するページが今度は文字化けします。 ブラウザのエンコードを変えても文字化けしたままです。 フォーム入力のhtmlを <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> にして出力画面も puts cgi.header("charset"=>"shift_jis") にして日本語入力すると今度は下記のエラーを返してきます。 Internal Server Error Premature end of script headers: C:/rubima012-cgi/bar_echo_improved1.rb いろいろと組み合わせてみましたがうまくいきません。 だれかわかる方教えていただけませんでしょうか。
お礼
ありがとうございました。 おっしゃるとおり保存するファイルを全部UTF-8で保存したところうまくいきました。 重ねてありがとうございました。