utf-8 - utf 8 从 ruby 1.8.7到系统调用 iconv,将文件从 utf 16转换为 utf 8

  显示原文与译文双语对照的内容
69 0

这是我得到

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 脚本中运行时,新文件创建的编码与原始文件的编码相同。关于缺少/错误的任何想法?

cheers!

我使用了 Mac OS X 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)}

同样的结果:

时间:原作者:0个回答

93 4

这应该是直接运行命令,所以确保它确实正确运行。如果执行中存在错误,system 将返回 false

你还可以使用 ruby 中的iconv 库直接执行它,而不用使用 命令行 工具。可以提供更多的控制。

原作者:
...