eprints-dev: /home/dpavlin/mtoolkit/utf8-fix.pl [commit]
[eprints3-migration.git] / mtoolkit / utf8-fix.pl
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5
6 use Data::Dump qw(dump);
7 use Encode;
8 use bytes;
9
10 my $junk = '[\xC0-\xC4][\x80-\xC4]+';
11
12 my $file = shift @ARGV;
13 my $stat;
14
15 open(my $fh, '<:raw', $file) || die "$file: $!";
16
17 while(<$fh>) {
18
19 my $orig = $_;
20
21 # češki
22 s/\xC3\x83\xC2\x85\xC3\xA2\xC2\x84\xC2\xA2/ř/gs && $stat->{'r v'}++;
23 s/\xC3\x83\xC2\x83\xC3\x82\xC2\xBD/ý/gs && $stat->{'y /'}++;
24 s/\xC3\x83\xC2\x84\xC3\x8B\xC2\x86/Č/gs && $stat->{'Č ?'}++;
25
26 s/\xC3\x83\xC2\x83\xC3\xA2\xC2\x80\xC2\xB0/É/gs && $stat->{'E actue'}++;
27 s/\xC3\x83\xC2\x83\xC3\xA2\xC2\x80\xC2\xA6/Å/gs && $stat->{'A circle'}++;
28 # "MAQBŪLI 'ĀRIF" (Potur Şāhidī). 
29 s/\xC3\x83\xC2\x84\xC3\xA2\xC2\x82\xC2\xAC/Ā/gs && $stat->{'A line'}++;
30 s/\xC3\x83\xC2\x83\xC3\xA2\xC2\x80\xC2\x99/V/gs && $stat->{'V fake'}++;
31
32 # njemački
33 s/\xC3\x83\xC2\x83\xC3\x85\xC2\xB8/ß/gs && $stat->{'ss'}++;
34
35 s/$junk\xC3\x82\xC2\x8D/č/gs && $stat->{'cv'}++;
36 s/$junk\xC2\x80\xC2\xA1/ć/gs && $stat->{"c"}++;
37 s/$junk\xC3\x82\xC2\xA1/š/gs && $stat->{'s'}++;
38 s/$junk\xC2\x80\xC4\xA1/š/gs && $stat->{'s C4'}++;
39 s/$junk\xC3\x82\xC2\xBE/ž/gs && $stat->{'z'}++;
40
41 s/$junk\xC2\x80\xC2\x98/đ/gs && $stat->{'d'}++;
42 s/$junk\xC3\x82\xC2\x90/Đ/gs && $stat->{'D'}++;
43
44 s/$junk\xC2\x80\xC2\x92/Č/gs && $stat->{'Cv'}++;
45 s/$junk\xC3\x85\xC2\x92/Č/gs && $stat->{'Cv C385'}++;
46 s/$junk\xC2\x80\xC2\xA0/Ć/gs && $stat->{'C'}++;
47 s/$junk\xC3\x82\xC2\xBD/Ž/gs && $stat->{'Z'}++;
48 s/$junk\xC3\x82\xC2\xA0/Š/gs && $stat->{'S'}++;
49
50 s/$junk\xC2\xAB/"/gs && $stat->{'" open'}++;
51 s/$junk\xC2\xBB/"/gs && $stat->{'" close'}++;
52
53 s/$junk\xC2\xBE/"/gs && $stat->{'"'}++;
54 s/$junk\xC2\x93/"/gs && $stat->{'"'}++;
55
56 s/$junk\xC2\x84\xC2\xA2/'/gs && $stat->{"'"}++;
57 s/$junk\xC3\x82\xC2\xB4/'/gs && $stat->{"' C2B4"}++;
58 s/$junk\xC3\x8B\xC2\x9C/'/gs && $stat->{"' C29C"}++;
59 s/$junk\xC2\xAD/-/gs && $stat->{'-'}++;
60
61 s/$junk\xC2\x80\xC2\x9C/-/gs && $stat->{'--'}++;
62 s/$junk\xC2\x9D/-/gs && $stat->{'-- ?'}++;
63
64
65         my $e = $_;
66         if ( $e =~ m/([\xC0-\xC4][\x80-\xff]{4,8})/s ) {
67                 warn "XXX ", dump($e), "\n$e\n";
68         }
69         print $e;
70 }
71
72 warn dump($stat);