[ruby-dev:31822] Re: 文字列の式展開

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-09-22 21:08:49 UTC
List: ruby-dev #31822
なかだです。

At Sat, 22 Sep 2007 15:58:57 +0900,
eklerni wrote in [ruby-dev:31815]:
> encoding pragma無指定時の挙動ですが、
> 文字列の式展開がコマンドラインオプションによっては失敗します。

> C:\ruby-1.9\bin>ruby -Ks -v -e 'p "at#{}"'
> ruby 1.9.0 (2007-09-21 patchlevel 0) [i386-mswin32_80]
> -e:1:in `<main>': character encodings differ (ArgumentError)

1. nil.to_sはencodingに関係なく、US-ASCIIの""を返す
2. 文字列リテラルは、内容に関係なく-Kで指定されたencodingに従う
3. 結合の際にASCII-compatibleかどうかは考慮されない

詳細は[ruby-dev:31715]からのスレッドをみてください。

上の例に関しては、nil.to_sを直すだけでも通るようになると思います
が、たとえばutf-8のライブラリを使うときには必ず-Kuを付けなければ
ならないというのも、不便だと思います。

結局、自動変換をサポートするかという話になるのかもしれませんが、
外部からもらったStringは常にencodeしてから使え、というのもかなり
面倒です。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread