http://www.perlmonks.org?node_id=991157


in reply to Re^4: How can I get a Unicode @ARGV?
in thread How can I get a Unicode @ARGV?

Hello.

Can you do this ? or not ?

1. Paste the function below into your script.
2. This will ouput encoding information of $ARGV[0] to logfile.txt

troubled_string($ARGV[0], "logfile.txt");
3. Examine logfile.txt with your browser, and find normal string, changing "Encodings" of your browser.
sub troubled_string{ my ($str,$logfile_path)=@_; use Encode qw(decode encode from_to encodings); open (my $fh, ">", $logfile_path) or die $!; printf $fh "utf8 flag:%s\n",utf8::is_utf8($str) ? "utf8 flagged" : + "not utf8 flagged"; printf $fh "hexdump:[%s]\n",utf8::is_utf8($str) ? unpack('U0H*', $ +str):unpack('H*', $s tr); printf $fh "length:[%s]\n", length($str); printf $fh "%s\n", "-" x 20; if ( utf8::is_utf8($str) ){ printf $fh "[encode trial]\n"; printf $fh "%-25s:%s\n",$_,encode($_, $str) for (Encode->encod +ings(":all")); } else { printf $fh "[decode -> encode trial]\n"; printf $fh "%-25s:%s\n",$_,encode($_, decode($_,$str)) for (En +code->encodings(":all")); } close $logfile_path; }
What does it say?