プロが教える店舗&オフィスのセキュリティ対策術

Rubyで申(さる)を出力したいのですが、
print文でInternal Server Errorが出てしまいます。
なぜでしょうか。他の十二支はちゃんと出力されます。
なぜ申だけでないのでしょうか。
エンコードの問題なのでしょうか?
私はShiftJISなんですが、何が問題なのでしょうか。

A 回答 (1件)

「申」を SHIFT JIS で表現したバイト列は "\x90\x5c"になりますが、


この"\x5c"は、1バイト文字「\」の文字コードに一致します。
そのため、SHIFT JIS と解釈せずにコードを見ると、不可解な「\」が現れてエラーになります。

そのため、文字列中に「申」などの文字を使いたい場合は、rubyに、文字のエンコードはSHIFT JIS であると認識させる必要があります。

ruby 1.8系の場合は、起動オプション(1行目の「#! /usr/local/bin/ruby」といった行)に -Ks を追加してください。
http://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBD …

ruby 1.9系の場合は、#!の次の行にmagic comment 「# -*- coding: Windows-31J -*-」を追加します。
http://dgames.jp/dan/permalink/20090828_00
    • good
    • 0
この回答へのお礼

-Ksで動きました。本当にありがとうございます。
初歩的ですみません。

お礼日時:2011/02/24 15:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!