Как декодировать метку устройства USB - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь получить метку USB-устройства из библиотеки udev. Но у меня проблема, когда метка не в кодировке 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-устройства?

...