这是我得到的:
path_js = 'path/to/a/js/file.js'
path_new_js = 'path/where/the/converted/file/should/go.js'
puts('iconv -f utf-16le -t utf-8 ' + path_js + ' > ' + path_new_js)
system('iconv -f utf-16le -t utf-8 ' + path_js + ' > ' + path_new_js)
puts语句的输出是:
iconv -f utf-16le -t utf-8 path/to/1-1-2_E1_MC105.js > compiled/path/to/1-1-2_E1_MC105.js
如果我在终端中复制粘贴完全相同的行,则转换会成功进行,但是当它在我的ruby脚本中运行时,新文件的创建编码与原始文件相同(在本例中为utf-16) 。关于什么是缺失/错误的任何想法?
干杯!
更新:我在Mac OS X Snow Leopard上使用ruby 1.8.7(系统默认)和1.9.2(使用RVM安装)尝试了相同的脚本。我也尝试了以下内容:
f = File.open(path_js,'rb')
js = f.read
f.close
new_js = Iconv.conv('utf-8', 'utf-16', js)
File.open(path_new_js,'w'){|f| f.write(new_js)}
结果相同:S
答案 0 :(得分:0)
这应该等同于直接运行命令,因此请确保它实际上正确运行。如果执行中出现错误,system
将返回false
。
您还可以使用Ruby中的iconv
库直接执行,而不需要命令行工具。这可能会提供更多控制。