Para o Debian, isso é parte de bsdmainutils
, cuja fonte está no git . O programa tenta (existem algumas limitações não especificadas) para exibir caracteres multibyte (por exemplo, UTF-8) para a opção -c
.
A fonte para isso está em conv.c , que observa:
/*
* Multibyte characters are disabled for hexdump(1) for backwards
* compatibility and consistency (none of its other output formats
* recognize them correctly).
*/
no entanto, o código faz isso apenas se odmode
estiver definido, que é ativado somente quando o executável é chamado como od
. O% realod
na Debian é a versão GNU, que não faz isso. Você pode obter o recurso multibyte copiando hexdump
para (de preferência, não /usr/bin
) od
e executando isso, por exemplo,
~/bin/od -bc foo
Como exemplo, em ncurses-examples , bulgarian.txt
is
Показване на помощна информация -- 1
Създаване на дялове -- 2
Избор на дял и форматиране -- 3
Записване в избрания дял -- 4
Инсталиране на LILO -- 5
Изход от програмата -- 6
é exibido na versão GNU como
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
...
e na versão BSD como
0000000 П ** о ** к ** а ** з ** в ** а ** н **
0000020 е ** н ** а ** п ** о ** м ** о **
0000040 щ ** н ** а ** и ** н ** ф ** о ** р
0000060 ** м ** а ** ц ** и ** я ** - - 1
0000100 \n С ** ъ ** з ** д ** а ** в ** а ** н
0000120 ** е ** н ** а ** д ** я ** л ** о
0000140 ** в ** е **
....
A razão para o comentário de compatibilidade / consistência é que o hexdump é
O formato lado a lado não permite caracteres de largura dupla e os caracteres multibyte podem ter largura dupla. O formato usado para od
permite isso (e você pode ver no exemplo que apenas tenta exibir esses caracteres).