I don't think that's the same thing. This problem happens with on disk files as well as in-memory file handles.
It looks like ord() is returning the correct unicode code point, but ungetc() is interpreting it as a byte sequence instead of a code point. That seems like a different bug to me.