成瀬です。 askar wrote: > お世話になっています。アスカルです。 > > 久保秋 真氏の作りながら学ぶRUBY入門という本を演習しています。 > > 使っているエディターはTextWranglerです。 > > ex517.rbという演習は下記の通りです: > > #! ruby -Ks > # -*- coding* Windows-31J -*- > > fruits_prices =[["apple", 200],["orange", 100],["melon", 600]] > > fruits_prices.each { |fp| > puts "名前: #{fp[0]}、値段:#{fp[1]}円" > } > > sum=0 > fruits_prices.each {|fp| sum += fp[1]} > puts "1個ずつ買うと全部で#{sum}円です。" > > 質問: > 1)EncodingはJapanese-Shiftで実行されますが、日本語が文字化けする。 この手の問題の場合は毎回自分の環境を書くべきです。 幸い、直前のメールで Mac だということが分かっていますが。 で、Mac はコンソールのエンコーディングが UTF-8 になっているので、 -Ks やマジックコメントで指定している Windows-31J (シフトJIS の Windows 版) では化けてしまいます。 > UTF-8にするとプラグラムが実行されず: > /Users/askar/Documents/programming/ruby/ex517.rb:1: Invalid char > `\357' in expression > /Users/askar/Documents/programming/ruby/ex517.rb:1: Invalid char > `\273' in expression > /Users/askar/Documents/programming/ruby/ex517.rb:1: Invalid char > `\277' in expression > というエラーが生じる Windows-31J として書かれているものを UTF-8 で実行しようとしたので、 当然エラーが出ます。 > 2)プラットフォーム関係なく共通なencodeの設定は可能でしょうか。 Mac のコンソールのエンコーディングをシフトJISに合わせるか、 プログラムのエンコーディングを UTF-8 に変えるかの二択ですね。 前者はコンソールの設定から変えられたはずです。 後者の場合は多分 TextWrangler に文字コードを指定して保存する機能があるので、 1 行目を -Ku にし、2行目を UTF-8 にした上で、UTF-8 として保存すればいいでしょう。 -- NARUSE, Yui <naruse / airemix.jp>