新手问题 File.open+ 中文路径传值郁闷了,求助!,在线等

praguepp · 2013年03月10日 · 最后由 praguepp 回复于 2013年03月10日 · 2481 次阅读

def self.createpuhash(f) f.gsub!(/\//,"\\\") ATT::KeyLog::info "The current file is #{f}" File.open("c:\\太原移动\\data\\x_O-x.dat".to_gbk) do |s| ATT::KeyLog::info "The current file is #{s}" s.each_line do |line| ......

File.open 路径怎样传都不对,报告没有这个文件,该如何处理,麻烦帮忙,谢谢。

irb(main):006:0> t = File.open("c:\太原移动\data\x_O-x.dat") => #File🇨datax_O-x.dat太原移动 irb(main):007:0> t.close

本地这样打开是没有问题的。

c:\\ 改成 c:\\\\

换成英文名 不行吗。。。

#encoding:utf-8 用 c:/太原移动/data/x_O-x.dat 行不?

//有用#encoding:utf-8 ATT::KeyLog::info "#{f}" f.gsub!(/\//,"\\\\") ATT::KeyLog::info "The current file is #{f}" #"c:\\太原移动\\data\\x_O-x.dat" #试了下直接这样是可以的 File.open("#{f}".to_gbk) do |s| ATT::KeyLog::info "The current file is #{s}"

#"c:\\太原移动\data\\x_O-x.dat" #试了下直接这样是可以的

//"c:\\太原移动\\data\\x_O-x.dat"

#"c:\\\\太原移动\\\\data\\\\x_O-x.dat"

#"c:\\太原移动\\data\\x_O-x.dat".to_gbk 这样可以

#"c:\\\\太原移动\\\\data\\\\x_O-x.dat".to_gbk 这样可以

#11 楼 @praguepp c: 后面 4 个反斜线就可以了,后面的 2 个就够了

已经是#encoding:utf-8 还需要 f.to_utf8 么

f.gsub! 该怎样写?

传入格式是 C:/太原移动/data/x_O-x.dat

传入格式是 C:/太原移动/data/x_O-x.dat f.gsub! 该怎样写?

#12 楼 @luikore 传入格式是 C:/太原移动/data/x_O-x.dat f.gsub! 该怎样写?

#16 楼 @praguepp File.open("c:\太原移动\data\x_O-x.dat") 这样不行么?

#18 楼 @zj0713001 10 楼的这样直接传可以 问题是要怎样用 f.gsub! 转换

#17 楼 @praguepp 别激动啊,你都激动得结巴了 f = f.sub(":/", ":\\\\").gsub("/", "\\")

#20 楼 @luikore 试了下,还是一样的问题

#21 楼 @praguepp 不懂... 搞不定了

#22 楼 @luikore 嗯,先谢谢你的帮忙

#4 楼 @themorecolor 项目因素,纠结。。。

#24 楼 @praguepp 显示的 bug c:后面两个\ 别的都是一个\ 这里回复以后就变成 1 个了...

已经搞定,是回车问题。。,用 strip 再处理下就好了。

谢谢大家

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