avoid reliance on system default encoding

String.getBytes() relies on system default encoding, so for the sake of
consistency, we'll use UTF-8 everywhere.

Happy 27th birthday @reedcourty ;)