Bug 5883 : Prevent re-encoding the items if they are already in UTF-8 in ModBiblio.
authorFrédérick Capovilla <frederick.capovilla@sys-tech.net>
Wed, 23 Mar 2011 14:19:57 +0000 (15:19 +0100)
committerChris Nighswonger <chris.nighswonger@gmail.com>
Mon, 4 Apr 2011 23:45:16 +0000 (19:45 -0400)
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
(cherry picked from commit cce98a2914c85ce1e1c5563b64a986c880024079)

Signed-off-by: Chris Nighswonger <chris.nighswonger@gmail.com>
C4/Biblio.pm

index 38b8b31..108cc6b 100644 (file)
@@ -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);