java - java中Bencode字符串长度

标签 java bencoding

我对 Bencoding 有点困惑。

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

长度:字符串

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

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

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

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

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

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

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

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

我的假设正确吗?

最佳答案

According to the specification ,bencoded 字符串是一个字节序列,您必须指定该序列的字节数作为其长度。

并且,根据规范:“所有字符串值均采用 UTF-8 编码”。 specification

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

关于java - java中Bencode字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408825/

相关文章:

python - 如何解码编码的种子数据

node.js - BitTorrent 协议(protocol)有问题

java - 为什么散列信息字典会出错?

java - 用于SSL身份验证的自签名证书和客户端 keystore

java - 将字符串拆分为 float 和字符串

java - java(jsp、servlet、mysql)中图像保存、编辑、删除到特定文件夹并将路径和其他数据保存在数据库中

java - 如何检查我的应用程序是否在前台?

java - Clock.withZone 有什么意义?