From: "no6v (Nobuhiro IMAI)" Date: 2012-03-27T07:55:11+09:00 Subject: [ruby-dev:45443] [ruby-trunk - Bug #6206] encoding of empty string from String#split Issue #6206 has been updated by no6v (Nobuhiro IMAI). "" が ASCII-8BIT になるのが問題というよりは、処理の途中で出来た ASCII-8BIT な "" に対して何か + したり << したりして結果として ASCII-8BIT な文字列が出来てしまうのが 問題になるケースがあるということだと思います。 ---------------------------------------- Bug #6206: encoding of empty string from String#split https://bugs.ruby-lang.org/issues/6206#change-25228 Author: no6v (Nobuhiro IMAI) Status: Open 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/