Ignore:
Timestamp:
2011-03-24T10:20:25+13:00 (13 years ago)
Author:
sjm84
Message:

Fixing EmbeddedMetadataPlugin to be Unicode compatible

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugins/EmbeddedMetadataPlugin.pm

    r23212 r23810  
    3030use BasePlugin;
    3131
     32use Encode;
    3233use Image::ExifTool qw(:Public);
    3334use strict;
     
    3940{
    4041  @EmbeddedMetadataPlugin::ISA = ('BasePlugin');
    41 }
    42 
    43 
     42  binmode(STDERR, ":utf8");
     43}
     44
     45my $encoding_plus_auto_list =
     46    [ { 'name' => "auto",
     47    'desc' => "{ReadTextFile.input_encoding.auto}" } ];
     48push(@{$encoding_plus_auto_list},@{$BasePlugin::encoding_list});
    4449
    4550my $arguments =
     
    4752    'desc' => "{HTMLPlugin.metadata_field_separator}",
    4853    'type' => "string",
    49     'deft' => "" }
    50 
     54    'deft' => "" },
     55      { 'name' => "input_encoding",
     56    'desc' => "{ReadTextFile.input_encoding}",
     57    'type' => "enum",
     58    'list' => $encoding_plus_auto_list,
     59    'reqd' => "no",
     60    'deft' => "auto" }
    5161];
    5262
     
    136146
    137147        my $field = "ex.$group.$tag";
     148       
     149            my $encoding = $self->{'input_encoding'};
     150            if($encoding eq "auto")
     151            {
     152                $encoding = "utf8"
     153            }
     154       
     155           
    138156
    139157        if (!defined $exif_metadata{$field})
     
    142160        }
    143161
     162        $field = Encode::decode($encoding,$field);
    144163        my $metadata_done = 0;
    145164        if (ref $value eq 'SCALAR') {
     
    158177            $metadata_done = 1;
    159178            foreach my $v (@$value) {
     179            $v = Encode::decode($encoding,$v);
    160180            push (@{$exif_metadata{$field}}, $self->gsSafe($v));
    161181            ++$metadata_count;
     
    163183        }
    164184        else {
    165             if (defined $separator) {
     185            $value = Encode::decode($encoding,$value);
     186            if (defined $separator) {
    166187            my @vs = split($separator, $value);
    167188            $metadata_done = 1;
Note: See TracChangeset for help on using the changeset viewer.