From a86b8c0a1db8a66f4b156cd60551525a3841548f Mon Sep 17 00:00:00 2001 From: Andrew Newdigate Date: Wed, 18 Oct 2017 21:56:42 +0100 Subject: Don't re-encode UTF8 as UTF8 --- lib/gitlab/encoding_helper.rb | 3 +++ spec/lib/gitlab/encoding_helper_spec.rb | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/encoding_helper.rb b/lib/gitlab/encoding_helper.rb index 7b3483a7f96..406d648e64c 100644 --- a/lib/gitlab/encoding_helper.rb +++ b/lib/gitlab/encoding_helper.rb @@ -50,6 +50,9 @@ module Gitlab end def encode_utf8(message) + return nil if message == nil + return message if message.encoding == Encoding::UTF_8 + detect = CharlockHolmes::EncodingDetector.detect(message) if detect && detect[:encoding] begin diff --git a/spec/lib/gitlab/encoding_helper_spec.rb b/spec/lib/gitlab/encoding_helper_spec.rb index 3793f1590c5..2d288f1fc23 100644 --- a/spec/lib/gitlab/encoding_helper_spec.rb +++ b/spec/lib/gitlab/encoding_helper_spec.rb @@ -81,6 +81,16 @@ describe Gitlab::EncodingHelper do describe '#encode_utf8' do [ + [ + "nil", + nil, + nil + ], + [ + "empty string", + "".encode("ASCII-8BIT"), + "".encode("UTF-8") + ], [ "encodes valid utf8 encoded string to utf8", "λ, λ, λ".encode("UTF-8"), @@ -93,7 +103,7 @@ describe Gitlab::EncodingHelper do ], [ "encodes valid ISO-8859-1 encoded string to utf8", - "Rüby ist eine Programmiersprache. Wir verlängern den text damit ICU die Sprache erkennen kann.".encode("ISO-8859-1", "UTF-8"), + "Rüby ist eine Programmiersprache. Wir verlängern den text damit ICU die Sprache erkennen kann.".encode("ISO-8859-1"), "Rüby ist eine Programmiersprache. Wir verlängern den text damit ICU die Sprache erkennen kann.".encode("UTF-8") ], [ @@ -104,9 +114,9 @@ describe Gitlab::EncodingHelper do ] ].each do |description, test_string, xpect| it description do - r = ext_class.encode_utf8(test_string.force_encoding('UTF-8')) + r = ext_class.encode_utf8(test_string) expect(r).to eq(xpect) - expect(r.encoding.name).to eq('UTF-8') + expect(r.encoding.name).to eq('UTF-8') if !xpect.nil? end end -- cgit v1.2.1