扩展属性名称和值是否保证为UTF-8编码

zbdgwd5y  于 2022-10-17  发布在  Unix
关注(0)|答案(1)|浏览(160)

我正在尝试为那些扩展属性syscall实现Ruthy Package 器,如果保证它们是UTF-8编码的,那么我可以使用类型String,否则我必须使用OsString
我用谷歌搜索了很多,但只找到了这两页:

似乎这告诉我们M1N3O1P保证在MacOS上是UTF-8编码的,
我想知道尽可能多的平台的信息,因为我试图在我的实施中涵盖所有这些平台。

6mw9ycah

6mw9ycah1#

不,在Linux中,它们绝对不能保证使用UTF-8。甚至根本不能保证属性值是字符串。它们只是没有约束的字节数组。

int setxattr(const char *path, const char *name,
             const void *value, size_t size, int flags);

const void *value, size_t size不是将字符串传递给函数的好方法。const char* name是,属性名称确实是字符串,但它们是以空结尾的byte字符串。
免费桌面推荐就是这样,推荐。它们不会阻止任何人创建他们想要的任何属性。

相关问题