Utf 8 如何使用不同的编码代码确定文件大小?

Utf 8 如何使用不同的编码代码确定文件大小?,utf-8,computer-science,utf-16,Utf 8,Computer Science,Utf 16,兰亭(兰亭集序) 被誉为“世界之巅”行书”在中国文学史上,最引人入胜的一句话是“我知道说生与死是一回事,长寿与早死没什么区别,唉,这是个谎言!”通过计算全部内容(中文版)的字符,结果应该是391个(包括标点符号)。对于写入文本文件的这些字符,请选择可能的文件大小,而不损坏任何数据 A、 782字节的UTF-16编码 B、 784字节的UTF-16编码 C、 UTF-8编码的1173字节 D、 UTF-8编码的1176字节 E、 以上都没有 哪些是正确答案?为什么?需要更多信息。UTF-8和UT

兰亭(兰亭集序) 被誉为“世界之巅”行书”在中国文学史上,最引人入胜的一句话是“我知道说生与死是一回事,长寿与早死没什么区别,唉,这是个谎言!”通过计算全部内容(中文版)的字符,结果应该是391个(包括标点符号)。对于写入文本文件的这些字符,请选择可能的文件大小,而不损坏任何数据

A、 782字节的UTF-16编码
B、 784字节的UTF-16编码
C、 UTF-8编码的1173字节
D、 UTF-8编码的1176字节
E、 以上都没有

哪些是正确答案?为什么?

需要更多信息。UTF-8和UTF-16(但不是UTF-32)都是可变宽度编码。在UTF-8中,一些字符被编码为单个8位字节(一个八位字节),其他字符多达四个八位字节。

TL;DR

正如Panic上校所指出的,你需要对391个字符的段落中的每个字符进行详细分析,才能真正解决这个问题。但看起来你的考官的幽默感很差——假设所有字符都符合BMP,并且取决于是否使用BOM,那么这4个答案都是正确的。你最好的答案是t是寻找一个不在BMP上的不常见字符,它将UTF8和UTF16推到一个额外的转义序列,在这种情况下,答案是上述任何一个都没有

详细信息

所有ASCII字符将有一个字符(值0到127)

似乎大多数“普通”CJK字符使用3个字节,但不太常见的CJK字符可能需要完整的4个字节进行编码。 当然,这取决于你的操作系统是否愿意

例如,如果391个字符段落中的所有字节都是普通汉字,并且没有BOM,则UTF-8应为1173个字节。如果BOM为1176个字节

在UTF-16中,似乎大多数常见的CJK字符都位于上,因此每个字符只需2个字节即可进行编码。即391*2=782

UTF 16几乎总是有一个2字节(FE FF或FF FE)-即784字节


FWIW,您提供的6个字符(兰亭集序行书) 在我看来,既然每个汉字都至少用两个字节编码,如果使用UTF-16,它应该是391*2=782吗?至于UTF-8,我完全不知道如何计算。