问答详情
源自:4-4 字节流之数据输入输出流

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

提问者:如烟风云 2016-09-26 13:00

个回答

  • 刀画刀花
    2016-10-17 10:18:06

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

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

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

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

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

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



  • Crafon
    2016-09-26 20:13:28

    我的和你也是一样

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

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

    望采纳~