fix reinterpret(Char, ::UInt32) for "unnatural" values (fix #29181) (#29192)
This code was assuming that character values only have bit-patterns
that decoding a string can produce, but of course `reinterpret` can
produce any bit pattern in a `Char` whatsoever. The fix doesn't use
that assumption and only uses the cache for actual ASCII characters.