From 9a3ae7342af425bcaa2c9937afa33e1c1015637a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9rick=20Capovilla?= Date: Wed, 23 Mar 2011 15:19:57 +0100 Subject: [PATCH] Bug 5883 : Prevent re-encoding the items if they are already in UTF-8 in ModBiblio. Signed-off-by: Julian Maurice Signed-off-by: Chris Cormack (cherry picked from commit cce98a2914c85ce1e1c5563b64a986c880024079) Signed-off-by: Chris Nighswonger --- C4/Biblio.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 38b8b31b79..108cc6ba90 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -318,10 +318,15 @@ sub ModBiblio { foreach my $fielditem (@fields) { my $field; foreach ( $fielditem->subfields() ) { + # re-encode the subfield only if it isn't already in utf-8. + my ($tag, $value) = @$_; + $tag = Encode::encode('utf-8', $tag) unless utf8::is_utf8($tag); + $value = Encode::encode('utf-8', $value) unless utf8::is_utf8($value); + if ($field) { - $field->add_subfields( Encode::encode( 'utf-8', $_->[0] ) => Encode::encode( 'utf-8', $_->[1] ) ); + $field->add_subfields( $tag => $value ); } else { - $field = MARC::Field->new( "$itemtag", '', '', Encode::encode( 'utf-8', $_->[0] ) => Encode::encode( 'utf-8', $_->[1] ) ); + $field = MARC::Field->new( "$itemtag", '', '', $tag => $value ); } } $record->append_fields($field); -- 2.39.5