--- from: http://rosettacode.org/wiki/UTF-8_encode_and_decode