如何在Ruby中解析UTF-8数据并将其存储到选项卡分隔的文件中?

如何在Ruby中解析UTF-8数据并将其存储到选项卡分隔的文件中?,ruby,utf-8,Ruby,Utf 8,我有一个哈希名hsh,它的值是UTF-8编码的。例如: hsh ={:name => some_utf_8_string, :text => :some_other_utf_8_string} 我目前正在做以下工作: $KCODE="UTF8" File.open("save.tsv","w") do{|file| file.puts hsh.values.map{|x| x.to_s.gsub("\t",' ')}.join("\t") } 但它会随机发出嘎嘎声,因为我认

我有一个哈希名hsh,它的值是UTF-8编码的。例如:

hsh ={:name => some_utf_8_string, :text => :some_other_utf_8_string}
我目前正在做以下工作:

$KCODE="UTF8"

File.open("save.tsv","w") do{|file|
  file.puts hsh.values.map{|x| x.to_s.gsub("\t",' ')}.join("\t")
}

但它会随机发出嘎嘎声,因为我认为某些多字节内容与“\t”匹配,但它失败了。是否有一个推荐的字符串可以代替“\t”使用?是否有更好的方法执行上述操作?

如果您的数据是有效的utf8,制表符无法“排序”匹配多字节序列的一部分(这是utf8优于其他一些多字节编码的优点之一)。你能更详细地说明你所说的“呱呱”是什么意思吗

Logan的右边-在UTF8中,有三种字节-包括7位ascii(0XXXXXXX)、多字节字符的第一个字节(110XXXXX、1110XXXX、11110XXX)或多字节字符的后续字节(10XXXXXX)。制表符(00000101=0x09)只匹配自身,不匹配多字节的任何部分。