[#44909] VRDdeClientについて — Toshiyasu Soejima <clev@...2.so-net.ne.jp>

17 messages 2008/05/11

[#44936] yamlとencoding — "Yutaka Kanemoto" <kinpoco@...>

金本と申します。

16 messages 2008/05/14

[ruby-list:44936] yamlとencoding

From: "Yutaka Kanemoto" <kinpoco@...>
Date: 2008-05-14 14:17:47 UTC
List: ruby-list #44936
金本と申します。

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 `<main>'

上記のように怒られてしまいました。
個人的にはencodingを保持しておいてもらえるととてもうれしい気がするのですが、
YAMLの出力をUTF-8にforce_encodingするのが筋でしょうか?

よろしくお願いいたします。
-- 
Yutaka KANEMOTO
http://d.hatena.ne.jp/kinpoco/

In This Thread

Prev Next