[ruby-list:46469] encodingに関する問題?

View: New views
8 Messages — Rating Filter:   Alert me  

[ruby-list:46469] encodingに関する問題?

by askar-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

お世話になっています。アスカルです。

久保秋 真氏の作りながら学ぶ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で実行されますが、日本語が文字化けする。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
というエラーが生じる


2)プラットフォーム関係なく共通なencodeの設定は可能でしょうか。


[ruby-list:46470] Re: encodingに関する問題?

by NARUSE, Yui-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬です。

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@...>


[ruby-list:46471] Re: encodingに関する問題?

by askar-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬さん

返事をありがとうございます。
今後使用環境を書くようにします。

私は2つの方法でプラグラムを実行しています:
1)TextWranglerには実行機能がついています
2)Macにあるターミナル(これは成瀬さんが話しているコンソールと同じ意味
ですよね)

言われた通り、1 行目を -Ku にし、2行目を UTF-8 にしました。
#! ruby -Ku
# -*- coding: UTF-8 -*-

ターミナルのENCODINGリストには沢山のENCODEが選択されていますが、一つにし
ないといけないのですか。

今の時点で実行してもエラーが起きています:
/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



NARUSE, Yui wrote:

>
>> 2)プラットフォーム関係なく共通なencodeの設定は可能でしょうか。
>
> Mac のコンソールのエンコーディングをシフトJISに合わせるか、
> プログラムのエンコーディングを UTF-8 に変えるかの二択ですね。
>
> 前者はコンソールの設定から変えられたはずです。
> 後者の場合は多分 TextWrangler に文字コードを指定して保存する機能があるので、
> 1 行目を -Ku にし、2行目を UTF-8 にした上で、UTF-8 として保存すればいいでしょう。
>


[ruby-list:46473] Re: encodingに関する問題?

by NARUSE, Yui-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬です。

askar wrote:
> 今の時点で実行してもエラーが起きています:
> /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

おっと失礼、エラーメッセージを精査していませんでした。
これは UTF-8 の BOM がついているからですね。
TextWrangler で UTF-8 として保存する際に「BOMをつける OR つけない」的な
オプションがどこかにありませんか。
そこで「BOM をつけない」の方を選んでください。

Unix 系 (Mac OS X 含む) のスクリプトを UTF-8 で保存する時は BOM をつけると
上記のようなエラーが出てしまうのです。

--
NARUSE, Yui  <naruse@...>


[ruby-list:46474] Re: encodingに関する問題?

by askar-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬さん、

今度はエラー発生しませんでしたが、下記のように文字化けしています:

ñºëO: appleÅAílíi:200â~
ñºëO: orangeÅAílíi:100â~
ñºëO: melonÅAílíi:600â~
ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB
ñºëO: appleÅAílíi:200â~
ñºëO: orangeÅAílíi:100â~
ñºëO: melonÅAílíi:600â~
ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB

NARUSE, Yui wrote:

> 成瀬です。
>
> askar wrote:
>> 今の時点で実行してもエラーが起きています:
>> /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
>
> おっと失礼、エラーメッセージを精査していませんでした。
> これは UTF-8 の BOM がついているからですね。
> TextWrangler で UTF-8 として保存する際に「BOMをつける OR つけない」的な
> オプションがどこかにありませんか。
> そこで「BOM をつけない」の方を選んでください。
>
> Unix 系 (Mac OS X 含む) のスクリプトを UTF-8 で保存する時は BOM をつけると
> 上記のようなエラーが出てしまうのです。
>


[ruby-list:46475] Re: encodingに関する問題?

by NARUSE, Yui-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

askar wrote:

> 今度はエラー発生しませんでしたが、下記のように文字化けしています:
>
> ñºëO: appleÅAílíi:200â~
> ñºëO: orangeÅAílíi:100â~
> ñºëO: melonÅAílíi:600â~
> ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB
> ñºëO: appleÅAílíi:200â~
> ñºëO: orangeÅAílíi:100â~
> ñºëO: melonÅAílíi:600â~
> ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB

うーん、これはなんだろう。
なんとなくまだシフトJISで出力されているようにも見えます。
もしくは、日本語を含まれていないフォントが設定されているのかなぁ。

これって、ターミナルでの出力ですか?

--
NARUSE, Yui  <naruse@...>


[ruby-list:46476] Re: encodingに関する問題?

by askar-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬ん、

今確認したら、ターミナルでは日本語は問題なく表示されています。
TextWrangler内で実行すると文字化けするのです。
調べます。

アスカル

NARUSE, Yui wrote:

> askar wrote:
>> 今度はエラー発生しませんでしたが、下記のように文字化けしています:
>>
>> ñºëO: appleÅAílíi:200â~
>> ñºëO: orangeÅAílíi:100â~
>> ñºëO: melonÅAílíi:600â~
>> ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB
>> ñºëO: appleÅAílíi:200â~
>> ñºëO: orangeÅAílíi:100â~
>> ñºëO: melonÅAílíi:600â~
>> ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB
>
> うーん、これはなんだろう。
> なんとなくまだシフトJISで出力されているようにも見えます。
> もしくは、日本語を含まれていないフォントが設定されているのかなぁ。
>
> これって、ターミナルでの出力ですか?
>


[ruby-list:46477] Re: encodingに関する問題?

by askar-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬さん、

分かりました。
TextWrangler-->PreferencesのEncodingの画面ではUse UTF-8 for unix script
I/Oにチェックを入れたら文字化けしなくなりました。

ありがとうございました。

askar wrote:

> 成瀬ん、
>
> 今確認したら、ターミナルでは日本語は問題なく表示されています。
> TextWrangler内で実行すると文字化けするのです。
> 調べます。
>
> アスカル
>
> NARUSE, Yui wrote:
>> askar wrote:
>>> 今度はエラー発生しませんでしたが、下記のように文字化けしています:
>>>
>>> ñºëO: appleÅAílíi:200â~
>>> ñºëO: orangeÅAílíi:100â~
>>> ñºëO: melonÅAílíi:600â~
>>> ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB
>>> ñºëO: appleÅAílíi:200â~
>>> ñºëO: orangeÅAílíi:100â~
>>> ñºëO: melonÅAílíi:600â~
>>> ÇPå¬Ç∏ǬîÉǧÇ∆ëSïîÇ≈900â~Ç≈Ç∑ÅB
>>
>> うーん、これはなんだろう。
>> なんとなくまだシフトJISで出力されているようにも見えます。
>> もしくは、日本語を含まれていないフォントが設定されているのかなぁ。
>>
>> これって、ターミナルでの出力ですか?
>>
>
>