From 5e5a396a2689caf2a0b8d5c44acbf96e76281bf4 Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Wed, 22 Feb 2017 11:29:21 -0500 Subject: [PATCH] LP1584891: Export MARC holdings with UTF8 subfields The --items option of marc_export adds a new MARC 852 field with a number of subfields that it retrieves from the database. If those subfields (such as call number, copy location, etc) contain Unicode characters, then we need to decode the incoming UTF8 characters when adding the subfield values to avoid corrupting the MARC. Signed-off-by: Dan Scott Signed-off-by: Chris Sharp --- Open-ILS/src/support-scripts/marc_export.in | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Open-ILS/src/support-scripts/marc_export.in b/Open-ILS/src/support-scripts/marc_export.in index 6e0faceabd..5c0115cba1 100755 --- a/Open-ILS/src/support-scripts/marc_export.in +++ b/Open-ILS/src/support-scripts/marc_export.in @@ -22,6 +22,7 @@ use MARC::Field; use MARC::Record; use MARC::File::XML (BinaryEncoding => 'UTF-8'); use Date::Manip::Date; +use Encode; my $U = 'OpenILS::Application::AppUtils'; binmode(STDERR, ':utf8'); @@ -480,13 +481,13 @@ sub next { MARC::Field->new( '852', '4', ' ', ($location ? ('a' => $location) : ()), - b => $acp->call_number()->owning_lib()->shortname(), - b => $acp->circ_lib()->shortname(), - c => $acp->location()->name(), - j => $acp->call_number()->label(), - ($acp->circ_modifier() ? (g => $acp->circ_modifier()) : ()), - p => $acp->barcode(), - ($price ? (y => $price) : ()), + b => Encode::decode_utf8($acp->call_number()->owning_lib()->shortname()), + b => Encode::decode_utf8($acp->circ_lib()->shortname()), + c => Encode::decode_utf8($acp->location()->name()), + j => Encode::decode_utf8($acp->call_number()->label()), + ($acp->circ_modifier() ? (g => Encode::decode_utf8($acp->circ_modifier())) : ()), + p => Encode::decode_utf8($acp->barcode()), + ($price ? (y => Encode::decode_utf8($price)) : ()), ($acp->copy_number() ? (t => $acp->copy_number()) : ()), ($U->is_true($acp->ref()) ? (x => 'reference') : ()), (!$U->is_true($acp->holdable()) ? (x => 'unholdable') : ()), -- 2.11.0