我正在尝试为那些扩展属性syscall实现Ruthy Package 器,如果保证它们是UTF-8编码的,那么我可以使用类型String
,否则我必须使用OsString
。
我用谷歌搜索了很多,但只找到了这两页:
- freedesktop: CommonExtendedAttributes表示:属性字符串应为UTF-8编码。
- macOS man page for
setxattr(2)
表示:扩展属性名是简单的以空值结尾的UTF-8字符串
似乎这告诉我们M1N3O1P保证在MacOS上是UTF-8编码的,
我想知道尽可能多的平台的信息,因为我试图在我的实施中涵盖所有这些平台。
1条答案
按热度按时间6mw9ycah1#
不,在Linux中,它们绝对不能保证使用UTF-8。甚至根本不能保证属性值是字符串。它们只是没有约束的字节数组。
const void *value, size_t size
不是将字符串传递给函数的好方法。const char* name
是,属性名称确实是字符串,但它们是以空结尾的byte字符串。免费桌面推荐就是这样,推荐。它们不会阻止任何人创建他们想要的任何属性。