CSV-Export mit UTF-8 als Encoding gefixt
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 27 Dec 2010 16:53:17 +0000 (17:53 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 27 Dec 2010 16:53:17 +0000 (17:53 +0100)
Dabei die Abhängigkeit vom Modul IO::Wrap beseitigt.

SL/InstallationCheck.pm
SL/ReportGenerator.pm
doc/INSTALL.texi
doc/INSTALL.txt
doc/INSTALL/Ben_00c3_00b6tigte-Software-und-Pakete.html
doc/UPGRADE

index d8d058b..15db0cb 100644 (file)
@@ -18,7 +18,6 @@ BEGIN {
   { name => "DBD::Pg",         version => '1.49',  url => "http://search.cpan.org/~dbdpg/" },
   { name => "Email::Address",                      url => "http://search.cpan.org/~rjbs/" },
   { name => "FCGI",                                url => "http://search.cpan.org/~mstrout/" },
-  { name => "IO::Wrap",        version => '2.110', url => "http://search.cpan.org/~dskoll/" },
   { name => "List::MoreUtils", version => '0.21',  url => "http://search.cpan.org/~vparseval/" },
   { name => "PDF::API2",       version => '2.000', url => "http://search.cpan.org/~areibens/" },
   { name => "Template",        version => '2.18',  url => "http://search.cpan.org/~abw/" },
index f02f568..2b37e78 100644 (file)
@@ -1,7 +1,6 @@
 package SL::ReportGenerator;
 
 use Data::Dumper;
-use IO::Wrap;
 use List::Util qw(max);
 use Text::CSV_XS;
 #use PDF::API2;    # these two eat up to .75s on startup. only load them if we actually need them
@@ -688,11 +687,10 @@ sub _print_content {
 }
 
 sub unescape_string {
-  my $self  = shift;
-  my $text  = shift;
+  my ($self, $text, $do_iconv) = @_;
 
-  $text     = $main::locale->unquote_special_chars('HTML', $text);
-  $text     = $::locale->{iconv}->convert($text);
+  $text = $main::locale->unquote_special_chars('HTML', $text);
+  $text = $::locale->{iconv}->convert($text) if $do_iconv;
 
   return $text;
 }
@@ -718,12 +716,15 @@ sub generate_csv_content {
                                 'quote_char'  => $quote_char,
                                 'eol'         => $eol, });
 
-  my $stdout          = wraphandle(\*STDOUT);
   my @visible_columns = $self->get_visible_columns('CSV');
 
+  my $stdout;
+  open $stdout, '>-';
+  binmode $stdout, ':encoding(utf8)' if $::locale->is_utf8;
+
   if ($opts->{headers}) {
     if (!$self->{custom_headers}) {
-      $csv->print($stdout, [ map { $self->unescape_string($self->{columns}->{$_}->{text}) } @visible_columns ]);
+      $csv->print($stdout, [ map { $self->unescape_string($self->{columns}->{$_}->{text}, 1) } @visible_columns ]);
 
     } else {
       foreach my $row (@{ $self->{custom_headers} }) {
index 23ba2e0..2120bc0 100644 (file)
@@ -76,8 +76,6 @@ DBD::Pg
 @item
 Email::Address
 @item
-IO::Wrap (aus dem Paket IO::Stringy)
-@item
 List::MoreUtils
 @item
 PDF::API2
index 86d5687..70510d4 100644 (file)
@@ -68,8 +68,6 @@ Bestandteil einer Standard-Perl-Installation sind:
 
    * Email::Address
 
-   * IO::Wrap (aus dem Paket IO::Stringy)
-
    * List::MoreUtils
 
    * PDF::API2
index 52c3c51..bea9c25 100644 (file)
@@ -17,8 +17,8 @@
   pre.smallexample { font-size:smaller }
   pre.smalllisp    { font-size:smaller }
   span.sc    { font-variant:small-caps }
-  span.roman { font-family:serif; font-weight:normal; } 
-  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+  span.roman { font-family:serif; font-weight:normal; }
+  span.sansserif { font-family:sans-serif; font-weight:normal; }
 --></style>
 </head>
 <body>
@@ -46,7 +46,6 @@ aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
 <li>DBI
 <li>DBD::Pg
 <li>Email::Address
-<li>IO::Wrap (aus dem Paket IO::Stringy)
 <li>List::MoreUtils
 <li>PDF::API2
 <li>Template
index 0ad5fd1..1901818 100644 (file)
@@ -109,7 +109,6 @@ der Datei "doc/INSTALL". Seit Version 2.4.0 sind die folgenden Module
 neu hinzugekommen:
 
 - Achive::Zip
-- IO::Wrap (aus dem Paket "IO::Stringy")
 - Template
 - Text::CSV_XS
 - Text::Iconv