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 |