Ruby File.basename ("/ 包 /rubychina") 的返回值是多少?Ruby1.8.7

kgra · 2014年07月15日 · 最后由 luikore 回复于 2014年07月15日 · 2205 次阅读

如题,

str = "/包/rubychina"
puts File.basename(str)

返回值是“包/rubychina”,为什么中文"包"就会这样,其他的中文不存在这个问题 ruby 版本是没办法换的,公司内项目你懂的。 我该怎么解决?除了自己解析外,还有别的办法吗?

返回 rubychina,

class Yy
  def basename=(s)
    ss = File.basename(s)
    puts ss if ss != nil
  end
end

S = "/包/rubychina"
y = Yy.new
y.basename=(S)

我的路径是C:\Documents and Settings\Administrator\桌面\桌面 打印桌面 我的是 2.0.0

#1 楼 @flowerwrong 我的返回是

/rubychina

ruby 是 1.8.7,你的呢? 你可以把 S 换成"/包/rubychina"测试下,关键在原“包”这个中文

#2 楼 @kgra 返回 rubychina,不过我的是 2.0.0/windows

3 楼 @flowerwrong 我详细测试了下,与 ruby 版本,以及 rb 文件的编码有关系,测试结果如下,具体原因就不了解了,期待高手解答啊

#5 楼 @kgra 既然 gbk 可以,那你在第一行加上# coding: GBK试试,或者,ruby1.8 好像没有内置编码转换,你找一下有没有支持 1.8 的编码转换的库。

得用 Iconv 转码

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