In TF ByteString is more of a byte buffer than valid utf8. Reading it as a String adds escape characters to non-valid utf8. Then converting it to utf16 causes separate issues. Going from ByteString to byte[] fixes both of these.