Re: [Encode::Guess] ambiguous result !?

[email protected] (Dan Kogai)
Newsgroups perl.unicode
Message-ID <[email protected]>
Christophe,

Thanks for your mail.  So far Encode::Guess does not guess the  
encoding for filehandle not because it is impossible but because  
Encode::Guess takes a very conservative -- even paranoia --  
approach.  For example, Ambiguity raises exception, not preferred  
encoding.

One way to enable guessing filehandle goes like this.

sub open_and_guess{
   my $filename = shift;
   open my $fh, "<:raw", $filename or return; # or die if you like
   my $head = <$fh>; # may not work for UTF-(16|32);
   my $enc  = guess_encoding($head);
   ref $enc or die $enc; # or return $enc
   my $encname = $enc->name;
   seek $fh, 0, 0;
   binmode $fh, ":encoding($encname)";
   return $fh;
}

Here we open, guess, and reopen but this does not work for general  
case; Not all files are seekable and reopenable (i.e. pipes and  
sockets).

To know more about Encode::Guess, try

http://search.cpan.org/~dankogai/Encode-2.12/lib/Encode/Guess.pm

Yours,

Dan the Encode Maintainer


On Oct 24, 2005, at 19:12 , HERMIER Christophe wrote:

> Hello,
>
> I am using the Encode::Guess module to detect the encoding of a  
> file before opening it.
> Basically I believe that I can have various sorts of unicode  
> encodings or latin-1.
>
> What I want to get is an encoding string to give back to "open".
> my code goes like this :
>
> my $codage      = guess_encoding ( $debut );
>
> if ( UNIVERSAL::isa ( $codage, "Encode::utf8" ) )
> {
>         $codage = ":utf8";
> }
> elsif ( UNIVERSAL::isa ( $codage, "Encode::Unicode" ) )
> {
>         $codage = ":encoding(utf-16)";
> }
> else
> {
>         $codage = ":encoding(iso-8859-1)";
> }
>
>
> The problem is with the "Encode::Unicode" case : I don't know if it  
> is UTF16-LE ou UTF16-BE
> and it could even be UTF32....
>
> Is there a way to know that ???
>
>
> BTW, I checked your homepage (<http://www.dan.co.jp/>http:// 
> www.dan.co.jp/) first but it does not seem to work ?
>
> Regards,
> Christophe.
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.