Re: Encoding support in DBD::File

Martin Evans <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Organization Easysoft Limited
Message-ID <[email protected]>
H.Merijn Brand wrote:
> This rocks!
> 
> my $dbh = DBI->connect ("dbi:CSV:", undef, undef, {
>     RaiseError	=> 1,
>     PrintError	=> 1,
> 
>     f_dir	=> ".",
>     f_schema	=> undef,
>     f_ext	=> ".csv/r",
>     f_encoding	=> "utf8",
>     });
> 
> Any objections to me committing that?

Looks good to me and I'm pleased you are using encoding and not just
":utf8" as the former is validating utf-8 encoding and the latter does not.


> --8<---
> --- /pro/3gl/CPAN/DBI-svn/lib/DBD/File.pm       2009-12-03 20:58:35.000000000 +0100
> +++ /pro/lib/perl5/site_perl/5.12.0/i686-linux-64int-ld/DBD/File.pm     2010-04-21 16:06:12.000000000 +0200
> @@ -163,6 +163,7 @@ sub connect ($$;$$$)
>             f_schema    => 1, # schema name
>             f_tables    => 1, # base directory
>             f_lock      => 1, # Table locking mode
> +           f_encoding  => 1, # Encoding of the file
>             };
>          $this->{sql_valid_attrs} = {
>             sql_handler           => 1, # Nano or S:S
> @@ -724,7 +725,14 @@ sub open_table ($$$$$)
>             $safe_drop or croak "Cannot open $file: $!";
>             }
>         }
> -    $fh and binmode $fh;
> +    if ($fh) {
> +       if (my $enc = $data->{Database}{f_encoding}) {
> +           binmode $fh, ":encoding($enc)";
> +           }
> +       else {
> +           binmode $fh;
> +           }
> +       }
>      if ($locking and $fh) {
>         my $lm = defined $data->{Database}{f_lock}
>                       && $data->{Database}{f_lock} =~ m/^[012]$/
> @@ -961,6 +969,11 @@ But see L</"NOWN BUGS"> below.
> 
>  =back
> 
> +=item f_encoding
> +
> +With this attribute, you can set the encoding in which the file is opened.
> +This is implemented using C<binmode $fh, ":encoding(<f_encoding>)">.
> +
>  =head2 Driver private methods
> 
>  =over 4
> -->8---
> 

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com
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.