Module: Ensure::Encoding::String
- Included in:
- String
- Defined in:
- lib/ensure/encoding.rb
Instance Method Summary collapse
-
#ensure_encoding(target_encoding, options = {}) ⇒ Object
Ensures the character encoding in a string.
-
#ensure_encoding!(target_encoding, options = {}) ⇒ Object
Performs just like String#ensure_encoding, only it changes the string in place instead of returning it.
Instance Method Details
#ensure_encoding(target_encoding, options = {}) ⇒ Object
Ensures the character encoding in a string. It employs a number of techniques to detect and transcode characters to make sure they end up in a usuable form in the encoding you need.
Arguments
target_encoding
The character encoding you want to ensure; this is usually the
internal encoding of your application. Accepts both string
constants and encoding constants. (ie. 'UTF-8' or Encoding::UTF_8)
options
Options to trigger activate certain algorithms.
Options
:external_encoding Specifies both your certainty about the external encoding and what you think it might be. Valid options are :sniff, an array of encodings, or a single encoding. When you specify :sniff, we will sniff around in the data to guess which encoding it is. When you supply a list of possible encodings we will check them from begin to end if one of them matches the data. Finally, when you specify a specific encoding we assume you know which it is and we will use that. By default we use :external_encoding => [target_encoding, self.encoding]. :invalid_characters Specifies what to do with invalid characters. There are three valid values: :raise, :drop, and :transcode. The first raises and exception on an invalid character. The second will strip all invalid characters the last will try to transcode them to the wanted encoding. By default we transcode.
Example
response = REST.get('http://www.google.com')
if match = /charset=([^;]*)/.match(response.content_type)
encoding = match[1]
else
encoding = 'UTF-8'
end
body = response.body.ensure_encoding('UTF-8',
:external_encoding => encoding,
:invalid_characters => :drop)
117 118 119 |
# File 'lib/ensure/encoding.rb', line 117 def ensure_encoding(target_encoding, ={}) Ensure::Encoding.force_encoding(self, target_encoding, ) end |
#ensure_encoding!(target_encoding, options = {}) ⇒ Object
Performs just like String#ensure_encoding, only it changes the string in place instead of returning it.
123 124 125 |
# File 'lib/ensure/encoding.rb', line 123 def ensure_encoding!(target_encoding, ={}) Ensure::Encoding.force_encoding!(self, target_encoding, ) end |