putsの余計なお節介のバグ
puts_test.rb
#!/usr/bin/ruby # -*- coding: UTF-8 -*- open("test.txt","w:UTF-8") {|f| f.puts "(1)test" f.puts "(2)test".encode("UTF-16BE") f.puts "(3)日本語" f.puts "(4)日本語".encode("UTF-16BE") f.puts "(5)\u0109" f.puts "(6)\u010a" f.puts "(7)\u010b" f.puts "(8)\u0109".encode("UTF-16BE") f.puts "(9)\u010a".encode("UTF-16BE") f.puts "(10)\u010b".encode("UTF-16BE") }
出力結果:test.txt
(1)test (2)test (3)日本語 (4)日本語 (5)ĉ (6)Ċ (7)ċ (8)ĉ (9)Ċ(10)ċ
なにがまずいか
(9)と(10)の行がつながってしまっている。
最後の文字ではなく最後のバイトが'\n'の場合に改行しない。