Class: OneApm::JSONWrapper::EncodingNormalizer
- Inherits:
-
Object
- Object
- OneApm::JSONWrapper::EncodingNormalizer
- Defined in:
- lib/one_apm/support/json_wrapper.rb
Class Method Summary collapse
Class Method Details
.normalize(s) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/one_apm/support/json_wrapper.rb', line 64 def self.normalize(s) encoding = s.encoding if (encoding == Encoding::UTF_8 || encoding == Encoding::ISO_8859_1) && s.valid_encoding? return s end # If the encoding is not valid, or it's ASCII-8BIT, we know conversion to # UTF-8 is likely to fail, so treat it as ISO-8859-1 (byte-preserving). normalized = s.dup if encoding == Encoding::ASCII_8BIT || !s.valid_encoding? normalized.force_encoding(Encoding::ISO_8859_1) else # Encoding is valid and non-binary, so it might be cleanly convertible # to UTF-8. Give it a try and fall back to ISO-8859-1 if it fails. begin normalized.encode!(Encoding::UTF_8) rescue normalized.force_encoding(Encoding::ISO_8859_1) end end normalized end |