hexdump only shows ASCII characters in the visualisation column, and substitutes everything else with a period. That's lame, but nothing that the following filter from my
~/.bashrc couldn't fix:
# Turn 1220 4c 29 e5 41 89 ff 49 89 f6 48 c1 fd 03 49 89 d5 L).A..I. .H...I..
# into 1220 4c 29 e5 41 89 ff 49 89 f6 48 c1 fd 03 49 89 d5 L)åA�ÿI�öHÁý␃I�Õ
# requires http://catb.org/~esr/hexdump/
hex () {
hexdump $@ | perl -C -ne'
$_ = substr $_, 0, 56; # without right-hand side columns
print $_;
@F = split; # split on space
shift @F; # drop address column
for (@F) {
$h = hex;
if ($h < 32) {
print chr($h+0x2400); # control character symbols
} elsif (127 == $h) {
print chr 0x2421; # delete symbol
} elsif (0x80 <= $h and $h <= 0x9f) {
print chr 0xFFFD; # undefined in iso-latin-1
} elsif (0xa0 == $h) {
print chr 0x2420; # non-breaking space as space symbol
} else {
print chr $h; # just the character as is
};
};
print qq(\n);
'
}