在Java中将ANSI字符转换为UTF-8

n00*_*13f 3 java ansi utf-8 character-encoding

有没有办法使用Java将ANSI字符串转换为UTF.

我有一个自定义序列化程序,它使用DataInputStream类的readUTF和writeUTF方法来反序列化和序列化字符串.如果我收到一个用ANSI编码的字符串太长,大约100000个字符我得到错误;

引起:java.io.UTFDataFormatException:编码的字符串太长:106958字节

然而,在我的Junit测试中,我能够创建一个120000'a的字符串,它完美无缺

我检查过以下帖子但仍有错误;

ZZ *_*der 6

此错误不是由字符编码引起的.这意味着UTF数据的长度是错误的.

编辑:刚刚意识到这是一个写错误,而不是读错误.

UTF长度只有2个字节,因此它只能容纳64K UTF-8字节.你正在尝试写100K,它不会起作用.

这个限制是硬编码的,无法解决这个问题,

if (utflen > 65535)
    throw new UTFDataFormatException(
            "encoded string too long: " + utflen + " bytes");
Run Code Online (Sandbox Code Playgroud)