Make best effort to encode to UTF-8. On failure log error and retain original.

This commit is contained in:
Chris Roberts 2017-07-24 17:04:25 -07:00
parent d14b230b6c
commit da2c57d3d3
1 changed files with 13 additions and 2 deletions

View File

@ -44,8 +44,19 @@ module Vagrant
# Re-generate strings to ensure common encoding
@@logger.debug("Converting command and arguments to common UTF-8 encoding for exec.")
@@logger.debug("Command: `#{command.inspect}` Args: `#{args.inspect}`")
command = "#{command}".force_encoding("UTF-8")
args = args.map{|arg| "#{arg}".force_encoding("UTF-8") }
begin
command = "#{command}".encode("UTF-8")
rescue Encoding::UndefinedConversionError => e
@@logger.warn("Failed to convert command - #{e.class}: #{e} (`#{command}`)")
end
args = args.map do |arg|
begin
"#{arg}".encode("UTF-8")
rescue Encoding::UndefinedConversionError => e
@@logger.warn("Failed to convert command argument - #{e.class}: #{e} (`#{arg}`)")
arg
end
end
@@logger.debug("Converted - Command: `#{command.inspect}` Args: `#{args.inspect}`")
end
Kernel.exec(command, *args)