問題タブ [blkid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - USB デバイス ラベルをデコードする方法
udev ライブラリから USB デバイス ラベルを取得しようとしています。しかし、ラベルが UTF8 エンコーディングでない場合に問題が発生します。
USB デバイスは以前に Windows でフォーマットされており、FAT32 ファイル システムを使用しています。USB名は「РФПАЦУ」です(テスト目的でキリル文字を使用しました(CP866コードページ))。USB デバイスのプロパティを取得するには、次のコマンドを実行します。
sudo /sbin/blkid -o udev -p /dev/sdd1
答えは次のとおりです。
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 を unhex にすることはできません。
ID_FS_LABEL_ENC のエンコーディングを調べる方法はありますか? または、USB デバイスの正しいラベルを取得する方法はありますか?