@samphippen the encoding always happened in `diff_as_string` too, the reason why this class has all this code to handle encoding is to make sure our internal literals aren't being mixed into external strings with incompatible encoding and blowing up. Originally all of our internal strings were `us-acscii`, which was causing complications in more esoteric encodings. 

There is a bug in `1.9.3` where `PP` will occasionally generate `us-ascii` strings from a `UTF-8` or other source encoding. That could still be a problem, as you're still trying to introduce a now `us-ascii` string back into a foreign encoding back in `diff_as_string`.

Also you've removed the comment explaining why `PP` is used here at all :P