From: Yutaka Kanemoto Date: 2008-05-14T23:17:47+09:00 Subject: [ruby-list:44936] yamlとencoding 金本と申します。 1.9で以下のようなコードを動かしました。 % cat y2.rb # -*- coding: utf-8 -*- require 'yaml' str = "nanika: なにか" print "str -> #{str.encoding}\n" y = YAML.load(str) a=["たとえば"] y.each {|k,v| a << k << v } a.each {|i| print "#{i}: #{i.encoding}\n" } print a.join YAMLに渡す前の文字列のencodingはUTF-8なのですが、 parseされると、それぞれの文字のencodingがASCII-8BITになります。 やりたかったことはYAMLの解釈後の文字列と、その他のUTF-8の 文字列を配列に突っ込んで、最後にjoinしたかったのですが、 % ruby -v y2.rb ruby 1.9.0 (2008-05-14 revision 0) [x86_64-linux] str -> UTF-8 たとえば: UTF-8 nanika: ASCII-8BIT なにか: ASCII-8BIT y2.rb:10:in `join': append incompatible encoding strings: UTF-8 and ASCII-8BIT (ArgumentError) from y2.rb:10:in `
' 上記のように怒られてしまいました。 個人的にはencodingを保持しておいてもらえるととてもうれしい気がするのですが、 YAMLの出力をUTF-8にforce_encodingするのが筋でしょうか? よろしくお願いいたします。 -- Yutaka KANEMOTO http://d.hatena.ne.jp/kinpoco/