Bug 22323: cronjob runreport.pl CSV add encoding
Cronjob runreport.pl runs SQL reports and can export as CSV. This export needs to be UTF-8 encoded. This pathes replaces use of Text::CSV_XS by Text::CSV::Encoded like in other places like tools/viewlog.pl. It adds a decode of headers bcause they will be encoded lika other lines. Test plan: 1) Create a new item with itemnotes 'accentué' 2) Create a SQL report with : SELECT barcode,itemnotes AS itè FROM items WHERE itemnotes LIKE 'accenté' 3) Run this report 4) You see well encoded header and content 5) Run from command line (replace X by report number) : misc/cronjobs/runreport.pl X --format=csv --csv-header --store-results 6) You well encoded header and content 7) Go to saved reports table 8) Look at saved results of report 9) You well encoded header and content Signed-off-by: Mikaël Olangcay Brisebois <mikael.olangcay-brisebois@inLibro.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> (cherry picked from commit83fe95d0c5) Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> (cherry picked from commit0ad76960cd) Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
95a1b8361c
commit
bde83720d4
|
|
@ -29,7 +29,7 @@ use Koha::DateUtils;
|
|||
use Getopt::Long qw(:config auto_help auto_version);
|
||||
use Pod::Usage;
|
||||
use MIME::Lite;
|
||||
use Text::CSV_XS;
|
||||
use Text::CSV::Encoded;
|
||||
use CGI qw ( -utf8 );
|
||||
use Carp;
|
||||
use Encode;
|
||||
|
|
@ -272,17 +272,18 @@ foreach my $report_id (@ARGV) {
|
|||
}
|
||||
$message = $cgi->table(join "", @rows);
|
||||
} elsif ($format eq 'csv') {
|
||||
my $csv = Text::CSV_XS->new({
|
||||
my $csv = Text::CSV::Encoded->new({
|
||||
encoding_out => 'utf8',
|
||||
binary => 1,
|
||||
quote_char => $quote,
|
||||
sep_char => $separator,
|
||||
});
|
||||
|
||||
if ( $csv_header ) {
|
||||
my $fields = $sth->{NAME};
|
||||
$csv->combine( @$fields );
|
||||
my @fields = map { decode( 'utf8', $_ ) } @{ $sth->{NAME} };
|
||||
$csv->combine( @fields );
|
||||
$message .= $csv->string() . "\n";
|
||||
push @rows_to_store, [@$fields] if $store_results;
|
||||
push @rows_to_store, [@fields] if $store_results;
|
||||
}
|
||||
|
||||
while (my $line = $sth->fetchrow_arrayref) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue