123456789_123456789_123456789_123456789_123456789_

Exception: Encoding::UndefinedConversionError

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: EncodingError
Defined in: transcode.c,
transcode.c

Overview

Raised by ::Encoding and ::String methods when a transcoding operation fails.

Class Attribute Summary

::Exception - Inherited

.to_tty?

Returns true if exception messages will be sent to a tty.

Class Method Summary

::Exception - Inherited

.exception

With no argument, or if the argument is the same as the receiver, return the receiver.

.new

Construct a new ::Exception object, optionally passing in a message.

Instance Method Summary

::Exception - Inherited

#==

Equality—If obj is not an ::Exception, returns false.

#backtrace

Returns any backtrace associated with the exception.

#backtrace_locations

Returns any backtrace associated with the exception.

#cause

Returns the previous exception ($!) at the time this exception was raised.

#exception

With no argument, or if the argument is the same as the receiver, return the receiver.

#full_message

Returns formatted string of exception.

#inspect

Return this exception’s class name and message.

#message

Returns the result of invoking exception.to_s.

#set_backtrace

Sets the backtrace information associated with exc.

#to_s

Returns exception’s message (or the name of the exception if no message is set).

Constructor Details

This class inherits a constructor from Exception

Instance Method Details

#destination_encodingString

Returns the destination encoding as an encoding object.

[ GitHub ]

  
# File 'transcode.c', line 4312

static VALUE
ecerr_destination_encoding(VALUE self)
{
    return rb_attr_get(self, rb_intern("destination_encoding"));
}

#destination_encoding_nameString

Returns the destination encoding name as a string.

[ GitHub ]

  
# File 'transcode.c', line 4300

static VALUE
ecerr_destination_encoding_name(VALUE self)
{
    return rb_attr_get(self, rb_intern("destination_encoding_name"));
}

#error_charString

Returns the one-character string which cause UndefinedConversionError.

ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP")
begin
  ec.convert("\xa0")
rescue Encoding::UndefinedConversionError
  puts $!.error_char.dump   #=> "\xC2\xA0"
  p $!.error_char.encoding  #=> #<Encoding:UTF-8>
end
[ GitHub ]

  
# File 'transcode.c', line 4333

static VALUE
ecerr_error_char(VALUE self)
{
    return rb_attr_get(self, rb_intern("error_char"));
}

#source_encodingEncoding

Returns the source encoding as an encoding object.

Note that the result may not be equal to the source encoding of the encoding converter if the conversion has multiple steps.

ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP") # ISO-8859-1 -> UTF-8 -> EUC-JP
begin
  ec.convert("\xa0") # NO-BREAK SPACE, which is available in UTF-8 but not in EUC-JP.
rescue Encoding::UndefinedConversionError
  p $!.source_encoding              #=> #<Encoding:UTF-8>
  p $!.destination_encoding         #=> #<Encoding:EUC-JP>
  p $!.source_encoding_name         #=> "UTF-8"
  p $!.destination_encoding_name    #=> "EUC-JP"
end
[ GitHub ]

  
# File 'transcode.c', line 4288

static VALUE
ecerr_source_encoding(VALUE self)
{
    return rb_attr_get(self, rb_intern("source_encoding"));
}

#source_encoding_nameString

Returns the source encoding name as a string.

[ GitHub ]

  
# File 'transcode.c', line 4262

static VALUE
ecerr_source_encoding_name(VALUE self)
{
    return rb_attr_get(self, rb_intern("source_encoding_name"));
}