新手问题 关于 sublime2 中文的 map 的输出问题

saltwater · 2013年06月19日 · 最后由 saltwater 回复于 2013年06月22日 · 2120 次阅读

为什么在 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方法才能在控制台显示你想要看到的值

# 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 只能这么认为了。唉反正不影响使用,也懒的折腾了..

需要 登录 后方可回复, 如果你还没有账号请 注册新账号