From 5b555766dad639a868ba623955d9a2b4873ccf27 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 25 Apr 2013 13:54:31 +0200 Subject: [PATCH] Bug 10110: Problems with diacritics in saved SQL reports Content-Type: text/plain; charset=utf-8 Adds decoding for cgi params (for completeness). Apparently, the NAME attribute of DBI statement handle has a UTF8 bug. Fixing this by decoding the returned column names. Did this in a shared routine. http://bugs.koha-community.org/show_bug.cgi?id=10110 --- reports/guided_reports.pl | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl index c25767a..0c940d2 100755 --- a/reports/guided_reports.pl +++ b/reports/guided_reports.pl @@ -18,7 +18,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -use CGI; +use CGI qw/-utf8/; use Text::CSV; use URI::Escape; use C4::Reports::Guided; @@ -653,9 +653,8 @@ elsif ($phase eq 'Run this report'){ unless ($sth) { die "execute_query failed to return sth for report $report_id: $sql"; } else { - my $headref = $sth->{NAME} || []; - my @headers = map { +{ cell => $_ } } @$headref; - $template->param(header_row => \@headers); + my $headers= header_cell_loop($sth); + $template->param(header_row => $headers); while (my $row = $sth->fetchrow_arrayref()) { my @cells = map { +{ cell => $_ } } @$row; push @rows, { cells => \@cells }; @@ -772,7 +771,13 @@ elsif ($phase eq 'Save Compound'){ # pass $sth, get back an array of names for the column headers sub header_cell_values { my $sth = shift or return (); - return @{$sth->{NAME}}; + my @cols; + foreach my $c (@{$sth->{NAME}}) { + #FIXME apparently DBI still needs a utf8 fix for this? + utf8::decode($c); + push @cols, $c; + } + return @cols; } # pass $sth, get back a TMPL_LOOP-able set of names for the column headers -- 1.7.7.6