From efd9a717c10f1cafd05fb20729eafb61226d9c1d Mon Sep 17 00:00:00 2001 From: Saito Date: Wed, 30 May 2012 11:44:36 +0800 Subject: [PATCH] solve the binary problem --- lib/gitlab/encode.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/encode.rb b/lib/gitlab/encode.rb index cee3ace..ba7fe27 100644 --- a/lib/gitlab/encode.rb +++ b/lib/gitlab/encode.rb @@ -8,17 +8,21 @@ module Gitlab # return nil if message is nil return nil unless message + # return message if message type is binary + detect = CharlockHolmes::EncodingDetector.detect(message) + return message if detect[:type] == :binary + # if message is utf-8 encoding, just return it message.force_encoding("utf-8") return message if message.valid_encoding? - # if message is not utf-8 encoding, detect and convert it - detect = CharlockHolmes::EncodingDetector.detect(message) - if detect[:encoding] && detect[:confidence] > 60 + # if message is not utf-8 encoding, convert it + if detect[:encoding] message.force_encoding(detect[:encoding]) message.encode!("utf-8", detect[:encoding], :undef => :replace, :replace => "", :invalid => :replace) end + # ensure message encoding is utf8 message.valid_encoding? ? message : raise # Prevent app from crash cause of encoding errors -- libgit2 0.21.2