Вот что я получил:
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)}
Тот же результат :С