[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44436] Text Encoding in Ruby 1.9.0

From: "Hideo Konami" <konami@...>
Date: 2008-01-05 02:33:04 UTC
List: ruby-list #44436
小波です。

Ruby1.9.0 の仕様をソース(の中のコメント)を見ながら調べている
のですが,文字のエンコーディングで疑問なところが出てきました。
後の方に疑問と質問をつけました。よろしくお願いします。


次のソースとテキストファイルを用意します。

check_encoding.rb (UTF-8 で編集)
-------------------------------------------------------------
# This script is written in UTF-8
str = "これは日本語です。"            
puts str
puts str.encoding

line = ""
File.open("test_euc.txt") do |f| # Text file is written in EUC-JP
  line = f.gets.chomp
end
puts line
puts line.encoding

p str == line

line.force_encoding("ASCII-8BIT")
puts line
p str == line
-------------------------------------------------------------

test_euc.txt (EUC-JP で書かれたテキストファイル)
-------------------------------------------------------------
これは日本語です。
-------------------------------------------------------------

これを実行すると,
ruby check_encoding.rb
-------------------------------------------------------------
これは日本語です。
ASCII-8BIT
これは日本語です。
UTF-8
false
これは日本語です。
true
-------------------------------------------------------------

ruby -Ku check_encoding.rb
-------------------------------------------------------------
これは日本語です。
UTF-8
これは日本語です。
UTF-8
true
これは日本語です。
false
-------------------------------------------------------------

これに関していくつかの疑問と質問です。

1. ruby のオプションの -Ku があるかないかで,ソースの中の
 文字列リテラルのエンコーディングが UTF-8 になるか 
  ASCII-8BIT になるのかが決定されるという理解で正しいの
 でしょうか。

2. force_encoding は破壊的にエンコーディングを変更する仕様
 になっているようですが,それはむしろ force_encoding! の
 ほうがよかったのはないでしょうか。 "force" に "!" がすで
 に入っている?非破壊的なメソッドもあるべきだと思うのです
 が。

3. EUC-JP のテキストを読み込んだはずなのに,そのテキストが
  encoding が UTF-8 を返すのはへんだと思うのですが,どうい
 う考えでそうなるのでしょうか。SJIS, JIS のテキストでもやは
 り同様の動作になっています。

4. transcode.c には str.encode(encoding), str.encode!(encoding)
  というのがあり,これらは force_encoding(encoding) とだいたい同義
 だと思ったのですが,違うようです。もう少し調べてみようとは思い
 ますが,どう使うべきものか教えていただけると幸いです。






In This Thread