use strict; use warnings; use Encode; for my $subject ( # bad: '=?euc-jp?Q?=83v=83=8D=83t=83B=81=5B=83=8B?=', # bad: '=?euc-jp?Q?=97L=97=BF=83T=81=5B=83r=83X?=', # good: '=?euc-jp?Q?=B2=F1=B0=F7=CD=CD=A4=D8=C9=AC=A4=BA=C5=F6=A4=EB?=', ) { print "\ndecoding $subject ...\n"; my $decoded = Encode::decode('MIME-Header',$subject); print "result: $decoded\n"; } __END__ decoding =?euc-jp?Q?=83v=83=8D=83t=83B=81=5B=83=8B?= ... result: \x83v\x83\x8D\x83t\x83B\x81[\x83\x8B decoding =?euc-jp?Q?=97L=97=BF=83T=81=5B=83r=83X?= ... result: \x97L\x97\xBF\x83T\x81[\x83r\x83X decoding =?euc-jp?Q?=B2=F1=B0=F7=CD=CD=A4=D8=C9=AC=A4=BA=C5=F6=A4=EB?= ... Wide character in print at ./test line 15. result: [something that looks like "correct" garbled text in my shell]