java 字符串 ansi转utf8_在Java中将ANSI字符转换为UTF-8

有没有办法使用

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");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值