Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のコンテンツ ホームへ戻る

日本語の取り扱い

コマンドラインオプションでの文字コード指定

プログラムの中に日本語が書かれているプログラムを実行する時は、文字コードを正しく指定しないと正常に動作しない場合があります。たとえば、以下のプログラムのエンコーディングをShift_JISにしてからputs-hyou.rbという名前で保存してください。

puts("表")

以下のように実行すると正しく動作しません。

> ruby puts-hyou.rb
puts-hyou.rb:1: unterminated string meets end of file
puts-hyou.rb:1: syntax error, unexpected $end, expecting ')'

これは、Shift_JISの「表」という日本語の1文字が2バイトの文字からなっており、2バイト目の文字がASCIIの「\」と同じ文字のコードを使い、「""」の中では「\」が特別な意味を持つために起こります。

Rubyはプログラムのエンコーディングを、コマンドラインオプションの-Kオプションで指定することで解決できます。上記のようにShift_JISで書かれているプログラムを実行する時は、以下のように実行します。

> ruby -Ks puts-hyou.rb
#=> 表

この場合Rubyインタプリタが、Shift_JISで書かれたプログラムであることを認識した上で解釈するので「表」という文字も正しく実行できます。Rubyは他にも日本語の表現に使われるEUC-JP、UTF-8といった文字コードを扱うことができます。それぞれの文字コードがどのコマンドラインオプションに対応しているのかを、以下にまとめます。

  • UTF-8のときは-Ku
  • Shift_JISのときは-Ks
  • EUC-JPのときは-Ke
  • NONE(ASCII)のときは-Kn 無指定時はこちら

また、プログラムの一番上で以下のように文字コードを指定する方法もあります。

#! /usr/bin/env ruby -Ku
# この/usr/bin/envの部分はUnix系のOSのディレクトリ構造のみ有効

puts("表")

irb

irbを使う場合でも同様に-Kオプションを指定しなければ、端末の文字コードによっては正しく動作しないことがあります。irbでも端末が使用している文字コードを指定してください。

# 端末がUTF-8で入力されるとき
> irb -Ku


次のコンテンツ ホームへ戻る