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? --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--- -- H.Merijn Brand http://tux.nl Perl Monger http://amsterdam.pm.org/ using 5.00307 through 5.12 and porting perl5.13.x on HP-UX 10.20, 11.00, 11.11, 11.23, and 11.31, OpenSuSE 10.3, 11.0, and 11.1, AIX 5.2 and 5.3. http://mirrors.develooper.com/hpux/ http://www.test-smoke.org/ http://qa.perl.org http://www.goldmark.org/jeff/stupid-disclaimers/