为什么在 sublime2 环境下不能直接输出 map 的中文字符呢?多谢 map = {"宝宝"=>{"贝贝"=>1}} puts map
给出的结果是: {"\u5B9D\u5B9D"=>{"\u8D1D\u8D1D"=>1}}
但是如果是直接输出中文,则没有问题: puts "宝宝" 宝宝
此外,虽然输出有问题,但是如果直接访问也没有问题,如 puts map["宝宝']["贝贝"] 则可以得到 1
操作系统是 win7,请高手指点。
刚才忘了说了,ruby 的版本是 2.00p195
我和你一样,怎么没有问题呢
宝宝贝贝 1 输出。环境是 os x sublime text 2.
#2 楼 @zlfera 怪就怪在只有 MAP 有问题,输出中文数组输出中文文件,都是没有问题,输出就是中文,唯有 map 的现象很怪异
@saltwater 你是直接在 irb 里输入的吗,这把你中文编码了
@zlfera 不是,就是在 sublime 的编辑环境里面编码直接输入中文,然后用 sublime 直接 build 结果。反正 map 就是不支持中文输出,但是字符处理比较之类的都没有问题。
@saltwater 那是 sublime 问题吧,
那是因为你需要显示的用to_s方法才能在控制台显示你想要看到的值
to_s
# encoding: utf-8 map = {"宝宝"=>{"贝贝"=>1}} map.keys.each {|k| puts k.to_s}
@ywjno 不是这样的。如果按你的代码,也可以输出中文。 但是如果是直接输出 map,那就不可以了。
例如: map.keys.each {|k| puts k.to_s} 宝宝
这样可以的 但是如果是: puts map.to_s
则还是这样的。 {"\u5B9D\u5B9D"=>{"\u8D1D\u8D1D"=>1}}
唉,算了,懒得折腾了...
#7 楼 @zlfera 只能这么认为了。唉反正不影响使用,也懒的折腾了..