如何解码USB设备标签

时间:2019-04-19 12:16:55

标签: c++ linux character-encoding udev blkid

我正在尝试从udev库获取USB设备标签。但是当标签不是采用UTF8编码时,我会遇到问题。

USB设备以前在Windows上已格式化,并且具有FAT32文件系统。 USB名称为“РФПАЦУ”(出于测试目的,我使用西里尔字母(CP866代码页))。要获取USB设备属性,我运行以下命令:

sudo /sbin/blkid -o udev -p /dev/sdd1

答案如下:

ID_FS_LABEL=______
ID_FS_LABEL_ENC=\x90\x94\x8f\x80\x96\x93

根据https://bbs.archlinux.org/viewtopic.php?id=197582

ID_FS_LABEL contains plain ascii, with hex-escaped and any valid utf8 characters but all whitespaces are replaced with '_' , while in ID_FS_LABEL_ENC all potentially unsafe characters are replaced by the corresponding hex value prefixed by '\x'.

由于读取的字节数未知,我不能仅对ID_FS_LABEL_ENC进行十六进制处理。

有没有办法找出ID_FS_LABEL_ENC的编码?还是获取正确的USB设备标签的方法?

0 个答案:

没有答案