如题,
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
C:\Documents and Settings\Administrator\桌面\桌面
桌面
#1 楼 @flowerwrong 我的返回是
包/rubychina
ruby 是 1.8.7,你的呢? 你可以把 S 换成"/包/rubychina"测试下,关键在原“包”这个中文
#2 楼 @kgra 返回 rubychina,不过我的是 2.0.0/windows
3 楼 @flowerwrong 我详细测试了下,与 ruby 版本,以及 rb 文件的编码有关系,测试结果如下,具体原因就不了解了,期待高手解答啊
#3 楼 @flowerwrong
#5 楼 @kgra 既然 gbk 可以,那你在第一行加上# coding: GBK试试,或者,ruby1.8 好像没有内置编码转换,你找一下有没有支持 1.8 的编码转换的库。
# coding: GBK
得用 Iconv 转码