+ $u = $1;
+ $c = $2;
+ $c =~ s/ //g;
$ucs = hex($u);
$code = hex($c);
if ($code >= 0x80 && $ucs >= 0x0080)
{
$utf = &ucs2utf($ucs);
- if ($array{$utf} ne "")
+ if ($arrayu{$utf} ne "")
{
printf STDERR "Warning: duplicate UTF8: %04x\n", $ucs;
next;
}
+ if ($arrayc{$code} ne "")
+ {
+ printf STDERR "Warning: duplicate GB18030: %08x\n", $code;
+ next;
+ }
+ $arrayu{$utf} = $code;
+ $arrayc{$code} = $utf;
$count++;
-
- $array{$utf} = $code;
}
}
close(FILE);
open(FILE, "> $file") || die("cannot open $file");
print FILE "static const pg_utf_to_local ULmapGB18030[ $count ] = {\n";
-for $index (sort { $a <=> $b } keys(%array))
+$cc = $count;
+for $index (sort { $a <=> $b } keys(%arrayu))
{
- $code = $array{$index};
- $count--;
- if ($count == 0)
+ $code = $arrayu{$index};
+ $cc--;
+ if ($cc == 0)
{
printf FILE " {0x%04x, 0x%04x}\n", $index, $code;
}
#
# then generate GB18030 --> UTF8 table
#
-reset 'array';
-
-open(FILE, $in_file) || die("cannot open $in_file");
-
-while ()
-{
- chop;
- if (/^#/)
- {
- next;
- }
- ($u, $c, $rest) = split;
- $ucs = hex($u);
- $code = hex($c);
- if ($code >= 0x80 && $ucs >= 0x0080)
- {
- $utf = &ucs2utf($ucs);
- if ($array{$code} ne "")
- {
- printf STDERR "Warning: duplicate code: %04x\n", $ucs;
- next;
- }
- $count++;
-
- $array{$code} = $utf;
- }
-}
-close(FILE);
$file = "gb18030_to_utf8.map";
open(FILE, "> $file") || die("cannot open $file");
print FILE "static const pg_local_to_utf LUmapGB18030[ $count ] = {\n";
-for $index (sort { $a <=> $b } keys(%array))
+
+$cc = $count;
+for $index (sort { $a <=> $b } keys(%arrayc))
{
- $utf = $array{$index};
- $count--;
- if ($count == 0)
+ $utf = $arrayc{$index};
+ $cc--;
+ if ($cc == 0)
{
printf FILE " {0x%04x, 0x%04x}\n", $index, $utf;
}