Is there a way to convert an ANSI string to UTF using Java.
I have a custom serializer that uses readUTF & writeUTF methods of the DataInputStream class to deserialize and serialze string. If i receive a string encoded in ANSI and is too long, ~100000 chars long i get the error;
Caused by: java.io.UTFDataFormatException: encoded string too long: 106958 bytes
However in my Junit tests i'm able create a string with 120000 'a's and it works perfectly
I have checked the following posts but still having errors;
This error is not caused by character encoding. It means the length of the UTF data is wrong.
EDIT: Just realized this is a writing error, not reading error.
The UTF length is only 2 bytes so it can only hold 64K UTF-8 bytes. You are trying to writing 100K, it's not going to work.
This limit is hardcoded and no way to get around this,
if (utflen > 65535)
throw new UTFDataFormatException(
"encoded string too long: " + utflen + " bytes");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With