From: "no6v (Nobuhiro IMAI)" Date: 2012-03-30T00:22:39+09:00 Subject: [ruby-dev:45455] [ruby-trunk - Bug #6206] encoding of empty string from String#split Issue #6206 has been updated by no6v (Nobuhiro IMAI). r35146 の 1.9.3 へのバックポートを希望します。 私にはプロジェクト間のチケットの移動は出来ないようなので、 よろしければどなたかお願いします。 $ ruby -ve 'p "a:".split(":", 2).map(&:encoding)' ruby 1.9.3p168 (2012-03-29 revision 35166) [x86_64-linux] [#, #] ---------------------------------------- Bug #6206: encoding of empty string from String#split https://bugs.ruby-lang.org/issues/6206#change-25379 Author: no6v (Nobuhiro IMAI) Status: Closed Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-03-26 trunk 35141) [x86_64-linux] String#split が空文字列を返す場合に、エンコーディングが ASCII-8BIT になる時がありますが、 これは意図的でしょうか? a = "a:".split(":", 2) # => ["a", ""] a.map(&:encoding) # => [#, #] 関係あるかどうか分かりませんが、partition だと以下のようになります。 a = "a:".partition(":") # => ["a", ":", ""] a.map(&:encoding) # => [#, #, #] が、パターンが含まれていない場合は ASCII-8BIT になります。 a = "a:".partition("|") # => ["a:", "", ""] a.map(&:encoding) # => [#, #, #] SQLite3 が ASCII-8BIT の文字列を text なカラムに追加するときに、 勝手に blob になってしまって検索出来なくなるという問題を見かけました。 http://www.mew.org/pipermail/mew-dist/2012-March/029160.html -- http://bugs.ruby-lang.org/