From ec7784400847656ef91908146491d5c1bd30cb32 Mon Sep 17 00:00:00 2001 From: Brian O'Donnell Date: Thu, 14 Apr 2016 13:25:54 -0400 Subject: [PATCH] Fix for issue #3 - decode uft8 strings before storing in the db --- pod_feeder.pl | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/pod_feeder.pl b/pod_feeder.pl index 6541485..24d2905 100755 --- a/pod_feeder.pl +++ b/pod_feeder.pl @@ -184,29 +184,32 @@ sub update_feed { map { $item->{$_} =~ s/^\s+|\s+$//g } keys %$item; map { $item->{$_} =~ s/^\n+|\n+$//g } keys %$item; - # check to see if it exists already - my $sth = $dbh->prepare("SELECT guid FROM feeds WHERE guid == ? LIMIT 1") or die "Can't prepare statement: $DBI::errstr"; - $sth->execute( $item->{'guid'} ) or die "Can't execute statement: $DBI::errstr"; - my $row = $sth->fetch(); + # decode uft8 strings before storing in the db + map { utf8::decode($item->{'title'}) } keys %$item; - # and if not, insert it - unless( defined $row ){ - $sth = $dbh->prepare( - "INSERT INTO feeds( guid, feed_id, title, link, image, image_title, hashtags, posted, timestamp ) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ? )" - ) or die "Can't prepare statement: $DBI::errstr"; - $sth->execute( - $item->{'guid'}, - $params{'feed_id'}, - $item->{'title'}, - $item->{'link'}, - $item->{'image'}, - $item->{'image_title'}, - join( ' ', @{$item->{'hashtags'}} ), - 0, - time, - ) or die "Can't execute statement: $DBI::errstr"; - } + # check to see if it exists already + my $sth = $dbh->prepare("SELECT guid FROM feeds WHERE guid == ? LIMIT 1") or die "Can't prepare statement: $DBI::errstr"; + $sth->execute( $item->{'guid'} ) or die "Can't execute statement: $DBI::errstr"; + my $row = $sth->fetch(); + + # and if not, insert it + unless( defined $row ){ + $sth = $dbh->prepare( + "INSERT INTO feeds( guid, feed_id, title, link, image, image_title, hashtags, posted, timestamp ) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ? )" + ) or die "Can't prepare statement: $DBI::errstr"; + $sth->execute( + $item->{'guid'}, + $params{'feed_id'}, + $item->{'title'}, + $item->{'link'}, + $item->{'image'}, + $item->{'image_title'}, + join( ' ', @{$item->{'hashtags'}} ), + 0, + time, + ) or die "Can't execute statement: $DBI::errstr"; } + } $dbh->disconnect(); }