From: sue445fukuoka@... Date: 2019-01-10T06:57:09+00:00 Subject: [ruby-dev:50757] [Ruby trunk Bug#15521] encoding is missed when using `CSV.generate` Issue #15521 has been updated by sue445 (Go Sueyoshi). Thank you. I used `ruby/csv@master`, I confirmed this is fixed ---------------------------------------- Bug #15521: encoding is missed when using `CSV.generate` https://bugs.ruby-lang.org/issues/15521#change-76181 * Author: sue445 (Go Sueyoshi) * Status: Closed * Priority: Normal * Assignee: kou (Kouhei Sutou) * Target version: * ruby -v: ruby 2.6.0p0 * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- # Sample code ~~~ ruby require "csv" rows = [ ["a", "b", "c", "d", "e"], ["あ", "い", "う", "え", "お"], ] str = CSV.generate do |csv| rows.each do |row| csv << row end end p str p str.encoding ~~~ # Expected (on Ruby 2.5.3) ~~~ $ ruby csv_generate.rb "a,b,c,d,e\nあ,い,う,え,お\n" # ~~~ # Actual (on Ruby 2.6.0) ~~~ $ ruby csv_generate.rb "a,b,c,d,e\n\xE3\x81\x82,\xE3\x81\x84,\xE3\x81\x86,\xE3\x81\x88,\xE3\x81\x8A\n" # ~~~ This behavior is same to ruby-trunk ~~~ $ ruby -v ruby 2.7.0dev (2019-01-10 trunk 66768) [x86_64-darwin17] ~~~ # Workaround Use `force_encoding` ~~~ruby require "csv" rows = [ ["a", "b", "c", "d", "e"], ["あ", "い", "う", "え", "お"], ] str = CSV.generate do |csv| rows.each do |row| csv << row end end.force_encoding("UTf-8") p str p str.encoding ~~~ This works, but little dirty... -- https://bugs.ruby-lang.org/