By way of another example. If your input is encoded with Latin-1 (ISO-8859-1), and you have a british pound symbol (£). This symbol in Latin-1 is 0xA3, but in UTF-8 it is 0xA2 0xA3

So let's start with Latin 1 pound symbol:

```
>> puts raw.inspect
"\xA3"
>> puts raw.encoding
ASCII-8BIT

# Now, try to convert it to UTF-8 as proposed by this patch:
>> p raw.encode("UTF-8", :invalid => :replace, :undef => :replace)
"�"

# Encode it the way the current code does:
>> raw.force_encoding("ISO-8859-1")
>> p raw.encode("UTF-8", :invalid => :replace, :undef => :replace)
"£"
```

Does this help explain things?