[Koha-cvs] koha/z3950 processz3950queue [rel_2_2]
Henri-Damien LAURENT
laurenthdl at alinto.com
Mon Oct 9 15:48:22 CEST 2006
CVSROOT: /sources/koha
Module name: koha
Branch: rel_2_2
Changes by: Henri-Damien LAURENT <hdl> 06/10/09 13:48:22
Modified files:
z3950 : processz3950queue
Log message:
BugFixing : re generate fields and subfields to recode them.
BEWARE : Support for Some peculiar characters such as 'oe' has to be improved.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/z3950/processz3950queue?cvsroot=koha&only_with_tag=rel_2_2&r1=1.13.2.6&r2=1.13.2.7
Patches:
Index: processz3950queue
===================================================================
RCS file: /sources/koha/koha/z3950/Attic/processz3950queue,v
retrieving revision 1.13.2.6
retrieving revision 1.13.2.7
diff -u -b -r1.13.2.6 -r1.13.2.7
--- processz3950queue 25 Sep 2006 14:02:42 -0000 1.13.2.6
+++ processz3950queue 9 Oct 2006 13:48:22 -0000 1.13.2.7
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Id: processz3950queue,v 1.13.2.6 2006/09/25 14:02:42 tipaul Exp $
+# $Id: processz3950queue,v 1.13.2.7 2006/10/09 13:48:22 hdl Exp $
use MARC::Record;
use C4::Context;
use DBI;
@@ -298,27 +298,30 @@
warn "decodage cible : ".$targetcharset;
my $newRecord=MARC::Record->new();
foreach my $field ($marcrecord->fields()){
- my $newField=$field->clone;
if ($field->tag()<'010'){
$newRecord->insert_grouped_field($field);
} else {
- foreach my $subfield ($newField->subfields()){
- # warn ' valeur avant encodage'.$subfield->[1];
-# map {char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##} @$subfield;
- map {char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##} @$subfield;
- # warn ' valeur apres encodage'.$subfield->[1];
- # warn ' valeur theorique'.Encode::from_to($_,$decoder->name,$targetcharset);
+ my $newField;
+ my $createdfield=0;
+ foreach my $subfield ($field->subfields()){
+ if ($createdfield){
if (($newField->tag eq '100')) {
substr($subfield->[1],26,2,"0103") if ($targetcharset eq "latin1");
substr($subfield->[1],26,4,"5050") if ($targetcharset eq "utf8");
}
- $newField->update($subfield->[0]=>$subfield->[1])
+ map {char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##} @$subfield;
+ $newField->add_subfields($subfield->[0]=>$subfield->[1]);
+ } else {
+ map {char_decode($_,"UNIMARC");Encode::from_to($_,$decoder->name,$targetcharset);$_=~tr#\r##} @$subfield;
+ $newField=MARC::Field->new($field->tag(),$field->indicator(1),$field->indicator(2),$subfield->[0]=>$subfield->[1]);
+ $createdfield=1;
+ }
}
$newRecord->insert_grouped_field($newField);
}
}
- $newRecord->encoding('UTF-8') if ($targetcharset eq 'utf8');
- $newRecord->encoding('MARC-8') if ($targetcharset ne 'utf8');
+# $newRecord->encoding('UTF-8') if ($targetcharset eq 'utf8');
+# $newRecord->encoding('MARC-8') if ($targetcharset ne 'utf8');
warn $newRecord->as_formatted();
$globalencoding = $targetcharset;
$result.=$newRecord->as_usmarc;
More information about the Koha-cvs
mailing list