java 中的编码字符串长度
Bencoded string length in java
我对 bencoding 有点困惑。
根据规范,当我对字符串进行编码时,我需要使用以下格式:
长度:字符串
字符串 spam 变为 4:spam
我的问题:4 是编码字符串的符号数量,还是 utf-8 字节的数量?
例如,如果我要对字符串进行编码 gâteau
该字符串的长度应指定为多少?
我想我必须指定7,最后的形式应该是7:gâteau
因为符号â按照utf-8编码占用2个字节,而该字符串中其余所有符号按照utf-8编码占用1个字节。
另外我听说不建议在 java String 实例中存储编码数据。
换句话说,当我对数据块进行编码时,我应该将其存储为字节数组而不应将其转换为 java 字符串值以避免编码问题。
我的假设是否正确?
According to the specification,编码后的字符串是一个字节序列,你必须指定这个序列的字节数作为它的长度。
并且,根据规范:“所有字符串值均采用 UTF-8 编码”。
对于 "gâteau" 的情况,您应该指定 7 作为长度,因为字符 â 占用 2 个字节。
我对 bencoding 有点困惑。
根据规范,当我对字符串进行编码时,我需要使用以下格式:
长度:字符串
字符串 spam 变为 4:spam
我的问题:4 是编码字符串的符号数量,还是 utf-8 字节的数量?
例如,如果我要对字符串进行编码 gâteau
该字符串的长度应指定为多少?
我想我必须指定7,最后的形式应该是7:gâteau
因为符号â按照utf-8编码占用2个字节,而该字符串中其余所有符号按照utf-8编码占用1个字节。
另外我听说不建议在 java String 实例中存储编码数据。
换句话说,当我对数据块进行编码时,我应该将其存储为字节数组而不应将其转换为 java 字符串值以避免编码问题。
我的假设是否正确?
According to the specification,编码后的字符串是一个字节序列,你必须指定这个序列的字节数作为它的长度。
并且,根据规范:“所有字符串值均采用 UTF-8 编码”。
对于 "gâteau" 的情况,您应该指定 7 作为长度,因为字符 â 占用 2 个字节。