加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 04:51:15 所属栏目:Java 来源:网络整理
导读:有没有办法使用 Java将ANSI字符串转换为UTF. 我有一个使用readUTF amp;的定制串行器. DataInputStream类的writeUTF方法用于反序列化和序列化字符串.如果我收到一个用ANSI编码的字符串太长,大约100000个字符我得到错误; Caused by: java.io.UTFDataFormatExce
有没有办法使用 Java将ANSI字符串转换为UTF.

我有一个使用readUTF& amp;的定制串行器. DataInputStream类的writeUTF方法用于反序列化和序列化字符串.如果我收到一个用ANSI编码的字符串太长,大约100000个字符我得到错误;

Caused by:
java.io.UTFDataFormatException:
encoded string too long: 106958 bytes

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

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

> Converting UTF-8 to ISO-8859-1 in Java – how to keep it as single byte
> How do I replace accented Latin characters in Ruby?

解决方法

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

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

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

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

if (utflen > 65535)
    throw new UTFDataFormatException(
            "encoded string too long: " + utflen + " bytes");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读