人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Rubyです。基本的な質問ですみません(><)。あるif文をdefでまとめて動かしたところ、西欧のエンコードで表示されてしまうのですが、
これはエラーですよね?正しい動作にならないのですが、どうしたらよいでしょうか。

def search_kansi(h)
if h == 1
kansi = "甲子"
elsif h == 2
kansi = "乙丑"
elsif h == 3
kansi = "丙寅"
else
kansi ="無効な値が入力されました"
end
return kansi
end #def

nikkan = search_kansi(h)
print nikkan

●質問者: tisei
●カテゴリ:インターネット ウェブ制作
✍キーワード:def print Ruby エラー エンコード
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● こうき
●18ポイント

それはダウンロードエラーですか?

それさえわからばなんとかなるかも

◎質問者からの返答

ダウンロードエラーではないとは思うのです。


2 ● deflation
●18ポイント

ご利用のOS、Rubyのバージョンが分からないのですが、まず、ソースコードの下記の行が間違っています。


(誤)nikkan = search_kansi(h)

(正)nikkan = search_kansi(1) ※具体的な値を代入してください。


次に「西欧のエンコードで表示されてしまう」とのことですが、ソースコードの文字コードについて、Windowsをご利用ならシフトJISで、Linuxをご利用ならEUC-JPで保存してから実行してみてください。

◎質問者からの返答

行をはしょってしまいましたが、hの中身には整数値が入っています。

で、ケータイサイト対応なのでシフトJISを用いています。下記の補足コメントの通り、三重にエンコード指定しています。


3 ● taka-hr
●36ポイント ベストアンサー

試してみたところ"乙丑" という文字列に対して、FireFox だと文字コードの

自動判別に失敗するようです。

この文字列だけの html ファイルを作成して開いてみるとわかります。

CGI として実行しているならば、Content-type: text/html; charset=Shift_JIS を

HTTPヘッダとして出力するのがよいのではないでしょうか。

自前で Content-type を出力しているなら charset の指定を文字列として追加するか、

たとえば CGI.rb を利用しているなら cgi.out のオプションを指定してみてください。

◎質問者からの返答

あ、IEで動きました☆。ありがとうございます。

Content-type: text/html; charset=Shift_JISは指定しています。

もう三重くらい宣言しているんですが、FireFoxには利かないみたいですねぇ。

FireFoxはユーザーが多いので対応したいなぁ。


4 ● taka-hr
●18ポイント

文字コード判別だけの問題であるなら(プログラムが正しく動いているなら)

必要な出力文章などを適宜追加すれば、それによって正しく判別

されるようになると思います。

どうしても上記文字列しか出力したくない場合は、コメントとして

ただしく判別されるような文字列を入れるという方法もあります。

手元の静的HTMLだと で直りました。

◎質問者からの返答

文字列で判別しなきゃならないので、困っているんですよね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ