Bugzilla – Attachment 106400 Details for
Bug 23542
SRU import encoding issue
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 23542: Fix SRU import encoding
Bug-23542-Fix-SRU-import-encoding.patch (text/plain), 2.96 KB, created by
Fridolin Somers
on 2020-06-29 13:42:23 UTC
(
hide
)
Description:
Bug 23542: Fix SRU import encoding
Filename:
MIME Type:
Creator:
Fridolin Somers
Created:
2020-06-29 13:42:23 UTC
Size:
2.96 KB
patch
obsolete
>From ffb284bf7e2f040f5a5619288267f4a19781c7d1 Mon Sep 17 00:00:00 2001 >From: Fridolin Somers <fridolin.somers@biblibre.com> >Date: Mon, 29 Jun 2020 15:07:10 +0200 >Subject: [PATCH] Bug 23542: Fix SRU import encoding > >When importing records from a SRU server, the diacritics have bad encoding. >I reproduce with BNF server so it may be a UNIMARC issue. > >Tests show that difference between Z39.50 server and SRU is that leader contains 'a' at postion 9. >Looking at MARC::Record->encoding() shows that encoding depends on leader even for UNIMARC. >So this patch adds a call to MARC::Record->encoding('UTF-8') in case of a SRU server in C4::Breeding. > >Same use exists in Koha::MetadataRecord::Authority::get_from_breeding(). > >In case of import via Z3950, MarcToUTF8Record() is called, > which calls SetMarcUnicodeFlag(), > which calls MARC::Record->encoding('UTF-8') > >Patch also uses system preference marcflavor instead of SRU syntax to >build MARC::Record, like for z3950. > >Test plan : >1) Use a UNIMARC database >2) Configure a connexion to a UNIMARC SRU, for example BNF, > see https://doc.biblibre.com/koha/autour_de_koha/serveurs_z3950_sru#serveur_de_la_bnf >3) Go to cataloguing module >4) Click on 'New from Z39.50/SRU' >5) Choose only the SRU target >6) Search for ISBN 2266072889 >7) Confirm you see good encoding : diacritic on 'a' of title 'Strate-a-gemmes' >8) Click on 'Marc preview' >9) Confirm you see good encoding >10) Click import >11) Confirm you see good encoding >12) Check also Authorities import via SRU >13) Check also SRU imports on a MARC21 database >--- > C4/Breeding.pm | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > >diff --git a/C4/Breeding.pm b/C4/Breeding.pm >index 109cda8950..38e1264497 100644 >--- a/C4/Breeding.pm >+++ b/C4/Breeding.pm >@@ -296,8 +296,8 @@ sub _handle_one_result { > my $raw= $zoomrec->raw(); > my $marcrecord; > if( $servhref->{servertype} eq 'sru' ) { >- $marcrecord= MARC::Record->new_from_xml( $raw, 'UTF-8', >- $servhref->{syntax} ); >+ $marcrecord = MARC::Record->new_from_xml( $raw, 'UTF-8', C4::Context->preference('marcflavour') ); >+ $marcrecord->encoding('UTF-8'); > } else { > ($marcrecord) = MarcToUTF8Record($raw, C4::Context->preference('marcflavour'), $servhref->{encoding} // "iso-5426" ); #ignores charset return values > } >@@ -609,7 +609,8 @@ sub Z3950SearchAuth { > > my ($charset_result, $charset_errors); > if( $servers[$k]->{servertype} eq 'sru' ) { >- $marcrecord = MARC::Record->new_from_xml( $marcdata, 'UTF-8', $servers[$k]->{syntax} ); >+ $marcrecord = MARC::Record->new_from_xml( $marcdata, 'UTF-8', $marc_type ); >+ $marcrecord->encoding('UTF-8'); > } else { > ( $marcrecord, $charset_result, $charset_errors ) = MarcToUTF8Record( $marcdata, $marc_type, $encoding[$k] ); > } >-- >2.27.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 23542
:
92606
|
93588
|
106397
|
106399
|
106400
|
106487
|
108059