Module: Encodings
- Defined in:
- lib/encodings.rb
Class Method Summary collapse
- .delete_bom!(string) ⇒ Object
- .force_utf8(string) ⇒ Object
- .to_utf8(string) ⇒ Object
- .try_utf8(string, source_encoding) ⇒ Object
Class Method Details
.delete_bom!(string) ⇒ Object
28 29 30 31 |
# File 'lib/encodings.rb', line 28 def self.delete_bom!(string) string.sub!(/\A\xEF\xBB\xBF/, "") unless string.blank? string end |
.force_utf8(string) ⇒ Object
23 24 25 26 |
# File 'lib/encodings.rb', line 23 def self.force_utf8(string) encoded_string = string.encode(Encoding::UTF_8, undef: :replace, invalid: :replace, replace: "") delete_bom!(encoded_string) end |
.to_utf8(string) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/encodings.rb', line 6 def self.to_utf8(string) result = CharDet.detect(string) encoded_string = try_utf8(string, result["encoding"]) if result && result["encoding"] encoded_string = force_utf8(string) if encoded_string.nil? encoded_string end |
.try_utf8(string, source_encoding) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/encodings.rb', line 14 def self.try_utf8(string, source_encoding) encoded = string.encode(Encoding::UTF_8, source_encoding) encoded&.valid_encoding? ? delete_bom!(encoded) : nil rescue Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError, Encoding::ConverterNotFoundError nil end |