Ruby windows+ 中文的环境好像很坑爹

clippit · 2012年04月13日 · 最后由 comme 回复于 2012年04月15日 · 2321 次阅读

刚刚接触Ruby,电脑上暂时没装其他系统,就在Windows下面,于是遇到了一个非常奇怪的问题。

写一个test.rb

# encoding: utf-8
path1="D:/生活/test.txt"
puts File.dirname(path1)
path2="D:/技术/test.txt"
puts File.dirname(path2)
path3="D:/你好/test.txt"
puts File.dirname(path3)

然后运行的时候,按理说应该是这样的输出:

D:/生活 D:/技术 D:/你好

但是实际上是这样的输出:

D:/生活 D:/ D:/你好

太诡异了,不知道是什么地方有问题。我用的是 http://rubyinstaller.org/ 的1.9.3p125版本

共收到 9 条回复

这问题真坑爹.

我给你的答案是: 不可能!

#1楼 @zw963 我在两台电脑上试了都是一样的结果,直觉也告诉我不可能……囧

你试验一下把杠杠反过来看看。

我似乎感觉到问题所在了,我那个文件用的是UTF-8无BOM的格式保存的。我强制使用中文系统编码(GB2312之类)打开那个文件后……

# encoding: utf-8
path1="D:/鐢熸椿/test.txt"
puts File.dirname(path1)
path2="D:/鎶€鏈?test.txt"
puts File.dirname(path2)
path3="D:/浣犲ソ/test.txt"
puts File.dirname(path3)

三个乱码中,只有第二个影响到了斜杠,于是就解析错误了……?于是现在的问题是,如何避免这种情况?请教各位,在必须要使用中文作路径的情况下。

Windows装开发环境是万恶之源, 遇到问题浪费的时间足够你学会用linux了。

#5楼 @linjunhalida 不是我不会用,事实上我自己电脑上就是装的Arch,但是现在的情况是只有Windows……而且有时候我得兼顾Windows上的其他软件(比如Photoshop什么的,其实Mac能很好兼顾到不过现在没钱买)。如果纯英文的话Windows也不会有太大问题,主要就是中文麻烦。

#5楼 @linjunhalida +1,

#4楼 @clippit 你干嘛要加# encoding: utf-8这一行? 去掉这一行, 另存为gb2312. utf-8从来就不属于Windows.

@clippit 我的策略是linux下面再加上windows虚拟机。

windows 下ruby1.9.3对中文的支持确实存在问题~比如File.chmod 一个含有中文路径的文件就会出错,没有特殊需求,还是linux的好~~

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