为了账号安全,请及时绑定邮箱和手机立即绑定

writeUTF写入汉字占用空间字节数问题

不知道是不是64位系统问题,我这边显示当使用WriteUTF输入“中国”汉字时,内存中对应的ASC码值为 00  06  e4  b8  ad  e5  9b  bd ,总共占8字节。 我测试方法为:   dos.write('A');   dos.writeUTF("中国");   dos.write('A');   dos.writeChars("中国");   dos.write('A');

正在回答

2 回答

老师没有讲错,在UTF-8编码中,非英文的大部分字符占用3个字节。

wrteUTF()方法输出的UTF-8编码是“以与机器无关方式使用 UTF-8 修改版编码 将一个字符串写入基础输出流。”

  • 首先,通过 writeShort 方法将两个字节写入输出流,表示后跟的字节数。该值是实际写出的字节数,不是字符串的长度。

  • 根据此长度,使用字符的 UTF-8 修改版编码按顺序输出字符串的每个字符。

  • 如果没有抛出异常,则计数器 written 增加写入输出流的字节总数。

  • 该值至少是 2 加 str 的长度,最多是 2 加 str 的三倍长度。 



1 回复 有任何疑惑可以回复我~
#1

刀画刀花

00 06 这两个字节表示的是该字符串所占用的字节数,与字符串无关。
2016-10-17 回复 有任何疑惑可以回复我~
#2

昵称2_18位中英文

请问 三倍长度 怎么来的?
2016-12-02 回复 有任何疑惑可以回复我~
#3

慕数据4260663

写的这么好,怎么没有人点赞呢?
2018-12-01 回复 有任何疑惑可以回复我~
#4

qq_八月的雨_0 回复 昵称2_18位中英文

3个字节。
2019-08-17 回复 有任何疑惑可以回复我~
查看1条回复

我的和你也是一样

41  00  06  e4  b8  ad  e5  9b  bd  41  4e  2d  56  fd  41  

和老师也是一样的,老师讲错了,utf-8一个汉字可以占用3-4个字节.

望采纳~

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

writeUTF写入汉字占用空间字节数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信