具体的には、下記クラスのputsメソッドを実行すると、
class Jpmsg
def self.prt
puts "テスト"
end
end
下記のようなエラーが発生する。irb(main):001:0> Jpmsg.prt
SyntaxError: E:/Sites/mytest/app/models/jpmsg.rb:3: invalid multibyte char (US-A
SCII)
E:/Sites/mytest/app/models/jpmsg.rb:3: invalid multibyte char (US-ASCII)
E:/Sites/mytest/app/models/jpmsg.rb:3: syntax error, unexpected $end, expecting
keyword_end
puts "���������"
^
(以下略)
Rubyでは内部的にはUTF-8を利用している。一方で、WindowsのコマンドプロントはShift-JIS。
コマンドプロントの文字コードは、「chcp 65001」と入力することで変更できるのだが、変更後は自動的に欧文フォントになってしまう。
下記のブログでは、レジストリの値を変更して、UTF-8で日本語フォントを利用する方法が紹介されているものの、自分の環境ではうまくいかなかった。
コンソール(cmd.exe)の文字コードを UTF-8 に
試行錯誤した結果、コマンドプロンプトの問題ではなく、ソースコードで利用する文字コードを明示的に指定しなければならないという問題のようである。
下記のように、文字コードを指定する一文を追加したことでちゃんと表示されるようになった。
# coding: utf-8
class Jpmsg
def self.prt
puts "テスト"
end
end
irb(main):002:0> Jpmsg.prt テスト => nil下記のブログが参考になった。情報公開に感謝。
OSとRubyスクリプトの文字コードが異なる場合の対策
http://pgnote.net/?p=211
0 件のコメント:
コメントを投稿