[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Koha-cvs] koha/z3950 processz3950queue [rel_2_2]
From: |
Henri-Damien LAURENT |
Subject: |
[Koha-cvs] koha/z3950 processz3950queue [rel_2_2] |
Date: |
Mon, 09 Oct 2006 13:48:22 +0000 |
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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Koha-cvs] koha/z3950 processz3950queue [rel_2_2],
Henri-Damien LAURENT <=