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

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

刚刚接触 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 版本

这问题真坑爹。

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

#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 的好~~

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