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)}



同样的结果:

时间: 原作者:

93 4

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

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

原作者:
...