java中的Bencoded字符串长度

时间:2015-07-14 13:59:02

标签: java bencoding

我对bencoding有点困惑。

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

长度:字符串

字符串垃圾邮件变为 4:垃圾邮件

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

例如,如果我要对字符串gâteau

进行bencode

应该指定哪个数字作为此字符串的长度?

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

这是因为符号â占用了2个字节,符合utf-8编码,并且该字符串中的所有其余符号根据utf-8编码占用了1个字节。

另外我听说不建议在BC String实例中存储bencoded数据。

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

我的假设是否正确?

1 个答案:

答案 0 :(得分:1)

According to the specification,bencoded string是一个字节序列,你必须为这个序列指定字节数量作为其长度。

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

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