0

我对编码有点困惑。

根据规范,当我对字符串进行编码时,我需要使用以下格式:

长度:字符串

字符串垃圾邮件变成4:spam

我的问题:4是编码字符串的符号数量,还是 utf-8 字节的数量?

例如,如果我要对字符串gâteau进行编码

应该指定什么数字作为该字符串的长度?

我想我必须指定7,最终形式应该是7:gâteau

这是因为符号â按照utf-8编码占用了2个字节,而这个字符串中的所有其余符号按照utf-8编码占用了1个字节。

另外我听说不建议将编码数据存储在 java String 实例中。

换句话说,当我对数据块进行编码时,我应该将其存储为字节数组,并且不应将其转换为 java String 值以避免编码问题。

我的假设正确吗?

4

1 回答 1

1

根据规范,编码字符串是一个字节序列,您必须指定该序列的字节数作为其长度。

并且,从规范中:“所有字符串值都是 UTF-8 编码的”。规格

对于您使用“gâteau”的情况,您应该指定7作为长度,因为字符â需要 2 个字节。

于 2015-07-24T13:34:55.973 回答