From 7b64bf9f4a035124ce78e86203aa1cf90cd92786 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