hexdumpは代替エンコーディングでテキスト翻訳を表示できますか?

hexdumpは代替エンコーディングでテキスト翻訳を表示できますか?

Hexdumpの標準形式は、右側の列に表示されている内容のASCII変換を表示します。非ASCII文字列を含むバイナリファイルがあり、ファイルの文字セットの一部(すべてではない)を知っています。テキスト列を生成するときに hexdump にカスタム文字セットを使用するように指示する方法はありますか?

答え1

bsdmainutilsDebian の場合ソースコードはgitにあります。。プログラム努力する(指定されていないいくつかの制限があります)マルチバイト文字の表示(UTF-8など)-cオプション。

ソースはcを変換する、これは次のとおりです。

/*
 * Multibyte characters are disabled for hexdump(1) for backwards
 * compatibility and consistency (none of its other output formats
 * recognize them correctly).
 */

ただし、コードは設定されodmodeている場合にのみこれを行い、実行可能ファイルが呼び出されたときにのみ設定が有効になります。od。 Debianの実際のodGNUバージョンはこれを行いません。にコピーしてマルチバイト機能を得ることができますhexdump(できれば)。/usr/binodと入力して実行します。例えば

~/bin/od -bc foo

例えば、ncurses - 例bulgarian.txtはい

Показване на помощна информация -- 1
Създаване на дялове             -- 2
Избор на дял и форматиране      -- 3
Записване в избрания дял        -- 4
Инсталиране на LILO             -- 5
Изход от програмата             -- 6

GNUバージョンでは、次のように表示されます。

0000000 320 237 320 276 320 272 320 260 320 267 320 262 320 260 320 275 
        320 237 320 276 320 272 320 260 320 267 320 262 320 260 320 275 
0000020 320 265 040 320 275 320 260 040 320 277 320 276 320 274 320 276 
        320 265     320 275 320 260     320 277 320 276 320 274 320 276 
0000040 321 211 320 275 320 260 040 320 270 320 275 321 204 320 276 321 
        321 211 320 275 320 260     320 270 320 275 321 204 320 276 321 
0000060 200 320 274 320 260 321 206 320 270 321 217 040 055 055 040 061
        200 320 274 320 260 321 206 320 270 321 217       -   -       1 
0000100 012 320 241 321 212 320 267 320 264 320 260 320 262 320 260 320 
         \n 320 241 321 212 320 267 320 264 320 260 320 262 320 260 320 
0000120 275 320 265 040 320 275 320 260 040 320 264 321 217 320 273 320
        275 320 265     320 275 320 260     320 264 321 217 320 273 320 
0000140 276 320 262 320 265 040 040 040 040 040 040 040 040 040 040 040 
        276 320 262 320 265
...

BSD版では

0000000    П  **   о  **   к  **   а  **   з  **   в  **   а  **   н  **
0000020    е  **       н  **   а  **       п  **   о  **   м  **   о  **
0000040    щ  **   н  **   а  **       и  **   н  **   ф  **   о  **   р
0000060   **   м  **   а  **   ц  **   и  **   я  **       -   -       1
0000100   \n   С  **   ъ  **   з  **   д  **   а  **   в  **   а  **   н
0000120   **   е  **       н  **   а  **       д  **   я  **   л  **   о
0000140   **   в  **   е  **
....

互換性/一貫性アノテーションがある理由は、hexdumpの並列形式では2バイト文字を許可しないのに対し、マルチバイト文字は2バイト文字が可能なためです。使用された形式はodこれを可能にします(例に示すように努力する次の文字を表示します)。

関連情報