my $i = shift || 0; # isis repeatable number
my $codepage = shift || die "parse_format must be called with codepage!";
if ($type eq "isis") {
my $i = shift || 0; # isis repeatable number
my $codepage = shift || die "parse_format must be called with codepage!";
if ($type eq "isis") {
- return parse_iso_format($format,$row,$i,$codepage,'isis_sf');
+ return parse_iso_format($format,$row,$i,$codepage,'hash_sf');
} elsif ($type eq "excel") {
return parse_excel_format($format,$row,$i,$codepage);
} elsif ($type eq "marc") {
return parse_iso_format($format,$row,$i,$codepage,'marc_sf');
} elsif ($type eq "feed") {
return parse_feed_format($format,$row,$i,$codepage);
} elsif ($type eq "excel") {
return parse_excel_format($format,$row,$i,$codepage);
} elsif ($type eq "marc") {
return parse_iso_format($format,$row,$i,$codepage,'marc_sf');
} elsif ($type eq "feed") {
return parse_feed_format($format,$row,$i,$codepage);
+ } elsif ($type eq "dbf") {
+ return parse_iso_format($format,$row,$i,$codepage,'hash_sf');
+ } else {
+ confess "FATAL: unknown type '$type'";
sub fld2str {
my ($func,$row,$f,$sf,$i) = @_;
#print STDERR "## in fld2str\n";
sub fld2str {
my ($func,$row,$f,$sf,$i) = @_;
#print STDERR "## in fld2str\n";
- my $tmp = $codepage->convert(&$func($row,$f,$sf,$i)) || '';
+ my $tmp = $codepage->convert(&$func($row,$f,$sf,$i)) || $codepage->convert(&$func($row,$f,$sf,0)) || '';
return "'$tmp'";
}
$eval =~ s/v(\d+)\^(\w*)/fld2str($func,$row,$1,$2,$i)/eg;
#print STDERR "## eval: $eval\n";
if (eval "$eval") {
return "'$tmp'";
}
$eval =~ s/v(\d+)\^(\w*)/fld2str($func,$row,$1,$2,$i)/eg;
#print STDERR "## eval: $eval\n";
if (eval "$eval") {
+ #my $codepage = shift;
+ #
+ # data allready comes in utf-8 due to change in
+ # SpreadSheet::ParseExcel::FmtDefault line 69 from
+ # return pack('C*', unpack('n*', $sTxt));
+ # to following which returns utf-8:
+ # return pack('U*', unpack('n*', $sTxt));
+ #
} elsif ($format =~ s/^([^A-Z\|]+)(\|[A-Z]{1,2}\|)/$2/) {
$prefix .= $1 if ($display);
} else {
} elsif ($format =~ s/^([^A-Z\|]+)(\|[A-Z]{1,2}\|)/$2/) {
$prefix .= $1 if ($display);
} else {