From: Dan Scott Date: Wed, 22 Feb 2017 16:29:21 +0000 (-0500) Subject: LP1584891: Export MARC holdings with UTF8 subfields X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=7b64bf9f4a035124ce78e86203aa1cf90cd92786;p=contrib%2FConifer.git 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 --- 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') : ()),