diff --git a/lib/git/diff.rb b/lib/git/diff.rb index 52189ea8..12c3ef7f 100644 --- a/lib/git/diff.rb +++ b/lib/git/diff.rb @@ -118,7 +118,8 @@ def cache_stats def process_full_diff final = {} current_file = nil - @full_diff.split("\n").each do |line| + full_diff_utf8_encoded = @full_diff.encode("UTF-8", "binary", :invalid => "replace", :undef => "replace") + full_diff_utf8_encoded.split("\n").each do |line| if m = /diff --git a\/(.*?) b\/(.*?)/.match(line) current_file = m[1] final[current_file] = {:patch => line, :path => current_file, diff --git a/lib/git/lib.rb b/lib/git/lib.rb index 03b19995..472a2a7e 100644 --- a/lib/git/lib.rb +++ b/lib/git/lib.rb @@ -730,7 +730,9 @@ def meets_required_version? private def command_lines(cmd, opts = [], chdir = true, redirect = '') - command(cmd, opts, chdir).split("\n") + cmd_op = command(cmd, opts, chdir) + op = cmd_op.encode("UTF-8", "binary", :invalid => "replace", :undef => "replace") + op.split("\n") end def command(cmd, opts = [], chdir = true, redirect = '', &block)