[ruby-trunk - Bug #6206][Open] encoding of empty string from String#split

Issue #6206 has been reported by no6v (Nobuhiro IMAI).


Bug #6206: encoding of empty string from String#split

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) # => [#Encoding:UTF-8, #Encoding:ASCII-8BIT]

関係あるかどうか分かりませんが、partition だと以下のようになります。

a = “a:”.partition(“:”) # => [“a”, “:”, “”]
a.map(&:encoding) # => [#Encoding:UTF-8, #Encoding:UTF-8,
#Encoding:UTF-8]

が、パターンが含まれていない場合は ASCII-8BIT になります。

a = “a:”.partition(“|”) # => [“a:”, “”, “”]
a.map(&:encoding) # => [#Encoding:UTF-8, #Encoding:ASCII-8BIT,
#Encoding:ASCII-8BIT]

SQLite3 が ASCII-8BIT の文字列を text なカラムに追加するときに、
勝手に blob になってしまって検索出来なくなるという問題を見かけました。

http://www.mew.org/pipermail/mew-dist/2012-March/029160.html

Issue #6206 has been updated by no6v (Nobuhiro IMAI).

“” が ASCII-8BIT になるのが問題というよりは、処理の途中で出来た ASCII-8BIT な
“” に対して何か + したり << したりして結果として ASCII-8BIT な文字列が出来てしまうのが
問題になるケースがあるということだと思います。


Bug #6206: encoding of empty string from String#split

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) # => [#Encoding:UTF-8, #Encoding:ASCII-8BIT]

関係あるかどうか分かりませんが、partition だと以下のようになります。

a = “a:”.partition(“:”) # => [“a”, “:”, “”]
a.map(&:encoding) # => [#Encoding:UTF-8, #Encoding:UTF-8,
#Encoding:UTF-8]

が、パターンが含まれていない場合は ASCII-8BIT になります。

a = “a:”.partition(“|”) # => [“a:”, “”, “”]
a.map(&:encoding) # => [#Encoding:UTF-8, #Encoding:ASCII-8BIT,
#Encoding:ASCII-8BIT]

SQLite3 が ASCII-8BIT の文字列を text なカラムに追加するときに、
勝手に blob になってしまって検索出来なくなるという問題を見かけました。

http://www.mew.org/pipermail/mew-dist/2012-March/029160.html

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]
[#Encoding:UTF-8, #Encoding:ASCII-8BIT]


Bug #6206: encoding of empty string from String#split

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) # => [#Encoding:UTF-8, #Encoding:ASCII-8BIT]

関係あるかどうか分かりませんが、partition だと以下のようになります。

a = “a:”.partition(“:”) # => [“a”, “:”, “”]
a.map(&:encoding) # => [#Encoding:UTF-8, #Encoding:UTF-8,
#Encoding:UTF-8]

が、パターンが含まれていない場合は ASCII-8BIT になります。

a = “a:”.partition(“|”) # => [“a:”, “”, “”]
a.map(&:encoding) # => [#Encoding:UTF-8, #Encoding:ASCII-8BIT,
#Encoding:ASCII-8BIT]

SQLite3 が ASCII-8BIT の文字列を text なカラムに追加するときに、
勝手に blob になってしまって検索出来なくなるという問題を見かけました。

http://www.mew.org/pipermail/mew-dist/2012-March/029160.html