Skip to content
Browse files

s/Text::Iconv/Encode/g. Started with Scott's patch from back in June …

…and made

it work. I borrowed some files from the Encode tests to write some tests. I
also greatly simplified Bric::Util::CharTrans. The result is a much nicer
interface, IMO. At any rate, it eliminates a C dependency and opens the
way to easier portability to Win32 and other platforms.
  • Loading branch information...
1 parent efce5b7 commit e1f9b9b5fb23ff4a058a775e66ed3dbd6cdc1ede @theory theory committed Sep 16, 2003
View
37 README.FreeBSD
@@ -1,37 +1,6 @@
Bricolage FreeBSD README
------------------------
-Bricolage works well with FreeBSD but installation requires some
-additional preparation. Follow these steps before beginning the
-installation process:
-
- 1) Install the libiconv package found at:
-
- http://www.gnu.org/software/libiconv/
-
- 2) Download the Text::Iconv Perl module from CPAN:
-
- http://cpan.org/authors/id/MPIOTR/Text-Iconv-1.2.tar.gz
-
- Decompress and edit the Makefile.PL inside, changing:
-
- 'LIBS' => [''],
-
- To:
-
- 'LIBS' => ['-liconv'],
-
- Now make and install as usual:
-
- perl Makefile.PL
- make
- make test
- make install
-
-
-Additional Notes
-----------------
-
- FreeBSD defaults to a very low limit on shared memory usage. This
may require you to throttle PostgreSQL with options that limit the
number of connections: "-B16 -N8" for example. See the PostgreSQL
@@ -42,7 +11,7 @@ Additional Notes
AcceptFilter Off
-to get rid of
+ to get rid of
- [info] (2)No such file or directory: make_sock: for port 8080, setsockopt:
- (SO_ACCEPTFILTER)
+ [info] (2)No such file or directory: make_sock: for port 8080, setsockopt:
+ (SO_ACCEPTFILTER)
View
49 README.MacOSX
@@ -55,14 +55,10 @@ version of mod_perl.
From http://www.apache.org/dist/httpd/libapreq/, download libapreq-1.1.tar.gz.
-From ftp://ftp.gnu.org/gnu/libiconv/, download the sources for the latest
-version of the iconv library.
-
From http://expat.sourceforge.net/, download the sources for the latest
version of the expat libraries.
-From http://search.cpan.org/, download the latest versions of Text::Iconv
-and XML::Parser.
+From http://search.cpan.org/, download the latest version of XML::Parser.
From ftp://ftp.gnu.org/pub/gnu/readline/, download the latest readline
sources.
@@ -79,10 +75,10 @@ tarballs into /usr/local/src, e.g., with the command
tar zxvf sources.tar.gz
Note that if you've never installed anything in /usr/local before, you must
-install at least one library (expat or libiconv are good candidates) before
-installing Perl. This is so that Perl will pick up on the existence of
-/usr/local/lib and /usr/local/include and make sure that modules that need
-access to the library files in these directories will be able to find them.
+install at least one library (expat is a good candidate) before installing Perl.
+This is so that Perl will pick up on the existence of /usr/local/lib
+and /usr/local/include and make sure that modules that need access
+to the library files in these directories will be able to find them.
You should be fine if you follow the steps outlined here.
1. Install expat:
@@ -93,15 +89,7 @@ You should be fine if you follow the steps outlined here.
% make install
% cd ..
-2. Install libiconv:
-
- % cd libiconv-VERSION/
- % ./configure
- % make
- % make install
- % cd ..
-
-3. Install readline (omit the perl line on Mac OS X 10.1):
+2. Install readline (omit the perl line on Mac OS X 10.1):
% cd readline-4.x
% perl -i.bak -p -e \
@@ -111,7 +99,7 @@ You should be fine if you follow the steps outlined here.
% make
% make install
-4. Install Perl. For Perl 5.8.0, do this:
+3. Install Perl. For Perl 5.8.0, do this:
% cd perl-5.8.0/
% export LC_ALL=C # or setenv LC_ALL C
@@ -134,20 +122,20 @@ Or, for Perl 5.6.1, do this:
% make install
% cd ..
-5. Patch Apache:
+4. Patch Apache:
% cd apache_1.3.xx
% patch -p0 < ../apache_dbm.patch
% cd ..
-6. Configure mod_ssl (Optional -- Required for SSL support):
+5. Configure mod_ssl (Optional -- Required for SSL support):
% cd mod_ssl-VERSION/
% patch -p0 < ../mod_ssl_dylib.patch
% ./configure --with-apache=/usr/local/src/apache_1.3.xx
% cd ..
-7. Install mod_perl:
+6. Install mod_perl:
% cd mod_perl-1.xx
% /usr/local/bin/perl Makefile.PL \
@@ -159,7 +147,7 @@ Or, for Perl 5.6.1, do this:
% make install
% cd ..
-8. Install Apache:
+7. Install Apache:
% cd apache_1.3.26/
% SSL_BASE=/usr/local/src/openssl-VERSION/ \
@@ -175,7 +163,7 @@ Or, for Perl 5.6.1, do this:
% make install
% cd ..
-9. Install libapreq:
+8. Install libapreq:
% cd libapreq-1.1
% ./configure --with-apache-includes=/usr/local/apache/include
@@ -187,18 +175,7 @@ Or, for Perl 5.6.1, do this:
% make install
% cd ..
-10. Install Text::Iconv:
-
- % cd Text-Iconv-VERSION/
- % perl -i.bak -p -e "s/'LIBS'\s*=>\s*\[''\]/'LIBS' => \['-liconv'\]/" \
- Makefile.PL
- % /usr/local/bin/perl Makefile.PL
- % make
- % make test
- % make install
- % cd ..
-
-11. Install XML::Parser:
+9. Install XML::Parser:
% cd XML-Parser-VERSION/
% /usr/local/bin/perl Makefile.PL EXPATLIBPATH=/usr/local/lib \
View
35 inst/required.pl
@@ -6,16 +6,16 @@ =head1 NAME
=head1 VERSION
-$Revision: 1.9 $
+$Revision: 1.10 $
=head1 DATE
-$Date: 2003-07-25 04:39:23 $
+$Date: 2003-09-16 03:47:11 $
=head1 DESCRIPTION
This script is called during "make" to probe for required software -
-Perl, Apache, Postgres, Expat and Iconv currently. Output collected
+Perl, Apache, Postgres, and Expat currently. Output collected
in "required.db".
=head1 AUTHOR
@@ -76,20 +76,17 @@ END
$RESULTS{PG} = find_pg();
$RESULTS{APACHE} = find_apache();
$RESULTS{EXPAT} = find_expat();
-$RESULTS{ICONV} = find_iconv();
# print error message and fail if something not found
unless ($RESULTS{PG} and $RESULTS{APACHE} and
- $RESULTS{EXPAT} and $RESULTS{ICONV}) {
+ $RESULTS{EXPAT}) {
hard_fail("Required software not found:\n\n",
$RESULTS{PG} ? "" :
"\tPostgreSQL >= 7.1.0 (http://postgresql.org)\n",
$RESULTS{APACHE} ? "" :
"\tApache >= 1.3.12 (http://apache.org)\n",
$RESULTS{EXPAT} ? "" :
"\texpat >= 1.95.0 (http://expat.sourceforge.net)\n",
- $RESULTS{ICONV} ? "" :
- "\ticonv (http://www.gnu.org/software/libiconv)\n",
"\nSee INSTALL for details.\n"
);
}
@@ -261,27 +258,3 @@ sub find_expat {
return 1;
}
-
-# look for iconv
-sub find_iconv {
- print "Looking for iconv...\n";
-
- # find iconv by looking for the iconv binary. First search user's
- # path then some standard locations.
- my @paths = (path(), qw(/usr/local/bin
- /usr/bin
- /bin
- /sw/bin));
- foreach my $path (@paths) {
- if (-e catfile($path, "iconv")) {
- $REQ{ICONV} = catfile($path, "iconv");
- last;
- }
- }
- return soft_fail("Failed to find iconv. Looked in:",
- map { "\n\t$_" } @paths) unless $REQ{ICONV};
- print "Found iconv at $REQ{ICONV}.\n";
-
- return 1;
-}
-
View
10 lib/Bric/Admin.pod
@@ -4,11 +4,11 @@ Bric::Admin - Bricolage System Administration Guide.
=head1 VERSION
-$Revision: 1.118 $
+$Revision: 1.119 $
=head1 DATE
-$Date: 2003-09-15 20:45:35 $
+$Date: 2003-09-16 03:47:11 $
=head1 DESCRIPTION
@@ -175,7 +175,7 @@ START MODULE LIST
=item MasonX::Interp::WithCallbacks 1.10
-=item Text::Iconv (optional)
+=item Encode (optional)
=item Pod::Simple (optional)
@@ -217,10 +217,6 @@ PostgreSQL 7.1.3
=item *
-Iconv
-
-=item *
-
Expat 1.95.0
=item *
View
9 lib/Bric/App/Callback/CharTrans.pm
@@ -19,15 +19,14 @@ BEGIN {
my $self = shift;
# Translate chars if non-UTF8 (see also Handler.pm)
- my $args = $self->params;
- eval { $ct->to_utf8($args) };
+ eval { $ct->to_utf8($self->params) };
if ($@) {
if (isa_bric_exception($@)) {
rethrow_exception($@);
} else {
- throw_dp error => 'Error translating from ' . CHAR_SET .
- ' to UTF-8.',
- payload => $@;
+ throw_dp error => 'Error translating from ' .
+ $ct->charset . ' to UTF-8.',
+ payload => $@;
}
}
}
View
16 lib/Bric/App/Handler.pm
@@ -6,16 +6,16 @@ Bric::App::Handler - The center of the application, as far as Apache is concerne
=head1 VERSION
-$Revision: 1.48 $
+$Revision: 1.49 $
=cut
# Grab the Version Number.
-our $VERSION = (qw$Revision: 1.48 $ )[-1];
+our $VERSION = (qw$Revision: 1.49 $ )[-1];
=head1 DATE
-$Date: 2003-09-15 21:15:49 $
+$Date: 2003-09-16 03:47:11 $
=head1 SYNOPSIS
@@ -400,22 +400,22 @@ sub filter {
}
# Do the translation.
- my $ret;
- eval { $ret = $ct->from_utf8($_[0]) };
+ eval { $ct->from_utf8($_[0]) };
# Do error processing, if necessary.
if (my $err = $@) {
$no_trans = 1; # So we don't translate error.html.
if (isa_exception($err)) {
rethrow_exception($err);
} else {
- my $msg = 'Error translating from UTF-8 to ' . $ct->charset;
- throw_dp(error => $msg, payload => $err);
+ throw_dp error => 'Error translating from UTF-8 to '
+ . $ct->charset,
+ payload => $err;
}
}
# Dump the data.
- print STDOUT $ret;
+ print STDOUT $_[0];
}
##############################################################################
View
8 lib/Bric/Changes.pod
@@ -176,6 +176,14 @@ Bric::Biz::Asset::Business::Story and Bric::Biz::Asset::Business::Media to
return a lisdt of story or media documents associated with a given
contributor. [David]
+=item *
+
+Switched Bric::Util::CharTrans from using Text::Iconv to Encode, thus removing
+the dependency on a C library (libiconv). Note that this changed the API of
+Bric::Util::CharTrans. Its C<to_utf8()> and C<from_utf8()> methods now always
+convert the argument passed in in place. They did this before for references,
+but now they do it for plain strings, as well. [Scott & David]
+
=back
=head2 Bug Fixes
View
8 lib/Bric/ToDo.pod
@@ -4,11 +4,11 @@ Bric::ToDo - Bricolage To Do List
=head1 VERSION
-$Revision: 1.116 $
+$Revision: 1.117 $
=head1 DATE
-$Date: 2003-09-12 05:13:54 $
+$Date: 2003-09-16 03:47:11 $
=head1 DESCRIPTION
@@ -154,10 +154,6 @@ separarate machine. Currently only a local database will work.
=item *
-Replace use of Text::Iconv with Encode?
-
-=item *
-
Bric::Util::FTP::DirHandle has code to specifically recoginze templates ending
in F<.mc>, F<.tmpl>, and F<.pl>. This needs to be made more flexible, so that
it recognizes any other burners tha may be added to the system.
View
281 lib/Bric/Util/CharTrans.pm
@@ -6,39 +6,39 @@ Bric::Util::CharTrans - Interface to Bricolage UTF-8 Character Translations
=head1 VERSION
-$Revision: 1.11 $
+$Revision: 1.12 $
=cut
# Grab the Version Number.
-our $VERSION = (qw$Revision: 1.11 $ )[-1];
+our $VERSION = (qw$Revision: 1.12 $ )[-1];
=head1 DATE
-$Date: 2003-08-11 09:33:36 $
+$Date: 2003-09-16 03:47:11 $
=head1 SYNOPSIS
# Constructors.
my $chartrans = Bric::Util::CharTrans->new('iso-8859-1');
# Instance Methods.
- my $charset = $chartrans->charset();
+ my $charset = $chartrans->charset;
my $charset = $chartrans->charset('iso-8859-1');
my $utf8_text = $chartrans->to_utf8($target_text);
my $target_text = $chartrans->from_utf8($utf8_text);
- $chartrans->to_utf(\$some_data);
- $chartrans->from_utf(\$some_data);
+ $chartrans->to_utf8(\$some_data);
+ $chartrans->from_utf8(\$some_data);
=head1 DESCRIPTION
-Bric::Util::CharTrans provides an object-oriented interface
-to conversion of characters from a target character set to Unicode UTF-8
-and from Unicode UTF-8 to a target character set.
+Bric::Util::CharTrans provides an object-oriented interface to conversion of
+characters from a target character set to Unicode UTF-8 and from Unicode UTF-8
+to a target character set.
=cut
@@ -48,58 +48,39 @@ and from Unicode UTF-8 to a target character set.
# Standard Dependencies
use strict;
use Bric::Util::Fault qw(throw_gen rethrow_exception);
-use Text::Iconv; # requires v1.1, not 1.0 which is on CPAN
################################################################################
# Programmatic Dependences
-
+use Encode qw(from_to);
+use Encode::Alias;
################################################################################
# Inheritance
################################################################################
use base qw(Bric);
-################################################################################
-# Function Prototypes
-################################################################################
-
-
##############################################################################
# Constants
##############################################################################
-#use constant DEBUG => 0;
-use constant UTF8 => 'UTF-8';
-# This hash contains aliases for common character sets. Useful for mapping.
-
-our $CHARSET_ALIASES = {
- 'JIS' => 'ISO-2022-JP',
- 'X-EUC-JP'=> 'ISO-2022-JP',
- 'SHIFT-JIS' => 'SJIS',
- 'X-SHIFT-JIS' => 'SJIS',
- 'X-SJIS' => 'SJIS'
-};
+# Map some useful aliases.
+define_alias JIS => 'ISO-2022-JP';
+define_alias 'X-EUC-JP' => 'ISO-2022-JP';
+define_alias 'SHIFT-JIS' => 'SJIS';
+define_alias 'X-SHIFT-JIS' => 'SJIS';
+define_alias 'X-SJIS' => 'SJIS';
+sub _convert;
################################################################################
# Fields
################################################################################
-# Public Class Fields
-
-################################################################################
-# Private Class Fields
-
-################################################################################
-
-################################################################################
# Instance Fields
BEGIN {
Bric::register_fields({
# Public Fields
# Private Fields
_charset => Bric::FIELD_NONE,
- _to_utf8_converter => Bric::FIELD_NONE,
- _from_utf8_converter => Bric::FIELD_NONE
});
}
@@ -123,6 +104,10 @@ B<Throws:>
Unspecified charset
+=item *
+
+Unknown charset
+
=back
B<Side Effects:>
@@ -132,15 +117,9 @@ B<Notes:> Use new() to get a working CharTrans object.
=cut
sub new {
- my ($pkg, $args) = @_;
+ my $pkg = shift;
my $self = bless {}, ref $pkg || $pkg;
-
- my $charset = $args;
- throw_gen(error => "Unspecified charset") unless ($charset);
-
- $self->charset($charset);
-
- return $self;
+ $self->charset(shift);
}
################################################################################
@@ -155,189 +134,120 @@ None.
=over 4
-=item my $utf8_text = $chartrans->to_utf8($somedata, $options);
-
-to_utf8() operates in one of two ways.
-
-If passed a scalar value it returns utf8 text corresponding to text
-in $sometext that is encoded in the target character set.
+=item my $charset = $chartrans->charset;
-If passed a reference it will recursively process the data within and
-convert it all to UTF-8
+=item $chartrans = $chartrans->charset($new_charset);
-$options may contains localized overrides in the future...
+Gets the current target character set in use.
+Optionally sets the current character set.
-B<Throws:> error on text that does not correspond to the specified input text.
+B<Throws:> NONE.
B<Side Effects:> NONE.
B<Notes:> NONE.
-=cut
-
-sub to_utf8 {
- my ($self, $in, $options) = @_;
-
- return(undef) unless(defined($in));
-
- my $in_ptr;
- my $out_ptr;
-
- if (my $in_type = ref($in)) {
- if ($in_type eq 'SCALAR') {
- $in_ptr = $in;
- $out_ptr = $in;
- } elsif ($in_type eq 'ARRAY') {
- # recurse through the array elements..
-
- foreach my $idx (0..(scalar(@{$in})-1)) {
- if (ref(@{$in}[$idx])) {
- $self->to_utf8(@{$in}[$idx]);
- } else {
- $self->to_utf8(\@{$in}[$idx]);
- }
- }
-
- return;
- } elsif ($in_type eq 'HASH') {
- foreach my $k (keys(%{$in})) {
- if (ref($in->{$k})) {
- $self->to_utf8($in->{$k});
- } else {
- $self->to_utf8(\$in->{$k});
- }
- }
- return;
- }
-
- } else {
- my $storage;
- $in_ptr = \$in;
- $out_ptr = \$storage;
- }
-
- my $converter = $self->{_to_utf8_converter};
- return($$out_ptr = $converter->convert($$in_ptr));
-}
-
-
-
-=item my $target_text = $chartrans->from_utf8($utf8_text);
+=cut
-Returns utf8 text corresponding to text in $sometext
+sub charset {
+ my $self = shift;
+ return $self->{_charset} unless @_;
-from_utf8() operates in one of two ways.
+ my $charset = shift;
+ throw_gen "Unspecified character set" unless $charset;
+ # getEncoding is undocumented, but very useful. It's in the Encode test
+ # suite.
+ throw_gen "Invalid character set" unless Encode->getEncoding($charset);
-If passed a scalar value it returns native charset text corresponding to utf-8
-text in $utf8_text.
+ $self->{_charset} = $charset;
+ return $self;
+}
-If passed a reference it will recursively process the data within and
-convert it all to the target character set.
+##############################################################################
+=item $chartrans = $chartrans->to_utf8($somedata);
-Silently returns undef if passed undef.
+Performs an in-place conversion of the data in C<$somedata> from the character
+set specified via C<charset()> to UTF-8. References to SCALARs, ARRAYs, and
+HASHes will be recursively processed and their data replaced.
-B<Throws:> error on text that does not correspond to the specified input text.
+B<Throws:> NONE.
B<Side Effects:> NONE.
B<Notes:> NONE.
-=cut
+=cut
-sub from_utf8 {
- my ($self, $in, $options) = @_;
- return(undef) unless(defined($in));
-
- my $in_ptr;
- my $out_ptr;
-
- if (my $in_type = ref($in)) {
- if ($in_type eq 'SCALAR') {
- $in_ptr = $in;
- $out_ptr = $in;
- }
- } else {
- my $storage;
- $in_ptr = \$in;
- $out_ptr = \$storage;
- }
-
- return('') unless(defined($$in_ptr));
-
- my $converter = $self->{_from_utf8_converter};
- return($$out_ptr = $converter->convert($$in_ptr));
+sub to_utf8 {
+ my $self = shift;
+ return $self unless defined $_[0];
+ _convert shift, $self->charset, 'utf8';
+ return $self;
}
-=item my $charset = $chartrans->charset(<$new_charset>);
+##############################################################################
-Gets the current target character set in use.
+=item my $target_text = $chartrans->from_utf8($utf8_text);
-Optionally sets the current character set.
+Performs an in-place conversion of the UTF-8 data in C<$utf8_text> to the
+character set specified via C<charset()>. References to SCALARs, ARRAYs, and
+HASHes will be recursively processed and their data replaced.
-B<Throws:> error on bad character set / utf8 combinations.
+B<Throws:> NONE.
B<Side Effects:> NONE.
B<Notes:> NONE.
-=cut
-
-sub charset {
-
- my ($self, $new_charset) = @_;
-
-
- return ($self->{'_charset'}) unless ($new_charset);
-
- $new_charset = uc($new_charset);
-
- if ($CHARSET_ALIASES->{$new_charset}) {
- $new_charset = $CHARSET_ALIASES->{$new_charset};
- }
-
-
- # Set up the to/from utf converters, store them in the class. This
- # also returns the validity of the conversion object right away..
-
- eval {
- my $cvt = Text::Iconv->new($new_charset, UTF8);
- $cvt->raise_error(1);
- $self->{'_to_utf8_converter'} = $cvt;
- };
-
- rethrow_exception($@) if $@;
-
- eval {
- my $cvt = Text::Iconv->new(UTF8, $new_charset);
- $cvt->raise_error(1);
- $self->{'_from_utf8_converter'} = $cvt;
- };
- rethrow_exception($@) if $@;
-
- $self->{'_charset'} = $new_charset;
+=cut
- return($self->{'_charset'});
+sub from_utf8 {
+ my $self = shift;
+ return $self unless defined $_[0];
+ _convert shift, 'utf8', $self->charset;
+ return $self;
}
-=back
+##############################################################################
+# Private Functions.
-=head1 PRIVATE
+=begin private
-=head2 Private Class Methods
+=item _convert
-NONE.
+ _convert $string, $from, $to;
-=head2 Private Instance Methods
+Converts C<$string> in-place from character set C<$from> to character set
+C<$to>. This is the function that does most of the work for C<to_utf8()> and
+C<from_utf8()>, in that it handles recursive conversion of all of the strings
+of a data structure.
-NONE.
+=cut
-=head2 Private Functions
+sub _convert {
+ if (my $ref = ref $_[0]) {
+ my $in = shift;
+ if ($ref eq 'SCALAR') {
+ return from_to($$in, $_[0], $_[1]);
+ } elsif ($ref eq 'ARRAY') {
+ # Recurse through the array elements.
+ _convert($_, @_) for @$in;
+ } elsif ($ref eq 'HASH') {
+ # Recurse through the hash values.
+ _convert($_, @_) for values %$in;
+ } else {
+ # Do nothing.
+ }
+ } else {
+ return from_to(shift, $_[0], $_[1]);
+ }
+}
-NONE.
+=end private
=cut
@@ -355,7 +265,6 @@ Paul Lindner <lindner@inuus.com>
=head1 SEE ALSO
L<Bric|Bric>,
-L<Text::Iconv|Text::Iconv>
+L<Encode|Encode>
=cut
-
View
108 lib/Bric/Util/CharTrans.req
@@ -1,108 +0,0 @@
-User Stories for Bric::Util::CharTrans Module
- as collected by Paul Lindner
-
-Customer: Garth Webb, Bricolage
--------------------------------------------
-
-# 1: Build perl module Bric::Util::CharTrans based on Bricolage O-O framework
-
- estimate: 2 hours
- notes: Base off random module Events.pm
- Object must have new() method
- Object must have to_utf8() and from_utf8() methods
-
-done
-
-# 2: Customer specifies valid character sets to use, and can retrieve
- character set in use..
-
- estimate: 30min
- notes: Must have method charset()
-done
-
-# 3: Support iso8859-1 (latin1) to UTF-8 translation
-# 4: Support UTF-8 to iso8859-1 (latin) translation
-
- estimate: 2 hours
- notes: Use Unicode::String to do this conversion
-
-done
-
-# 5: Convert a scalar to another scalar using supported character sets
-done
-
-# 6: Convert a scalar ref "in place" using supported character sets
-done
-
-# 7: Convert scalar data in a perl hash ref using supported character sets
-# 8: Convert arbitrary perl data structures using supported character sets
-both done
-
-# 9: System throws an error in the face of unconvertable data.
-
-done -- via Iconv internal die propagation
-
-# 10: Support iso8859-2 (east european) to UTF-8
-# 11: Support UTF-8 to iso8859-2
-both done
-
-# 12: Support iso8859-3 (south european) to UTF-8
-# 13: Support UTF-8 to iso8859-3
-
-# 14: Support iso8859-4 (north european) to UTF-8
-# 15: Support UTF-8 to iso8859-4
-
-# 16: Support iso8859-5 (cyrillic) to UTF-8
-# 17: Support UTF-8 to iso8859-5
-
-# 18: Support iso8859-6 (arabic) to UTF-8
-# 19: Support UTF-8 to iso8859-6
-
-# 20: Support iso8859-7 (greek) to UTF-8
-# 21: Support UTF-8 to iso8859-7
-both work
-
-# 22: Support iso8859-8 (Hebrew) to UTF-8
-# 23: Support UTF-8 to iso8859-8
-both work
-
-# 24: Support iso8859-9 (Latin5 - Turkish) to UTF-8
-# 25: Support UTF-8 to iso8859-9
-
-# 26: Support iso8859-10 (Latin6 - Nordic) to UTF-8
-# 27: Support UTF-8 to iso8859-10
-
-# 28: Support X-EUC-JP (Japanese) to UTF-8
-# 29: Support UTF-8 to X-EUC-JP
-both done
-
-# 30: Support JIS (Japanese) to UTF-8
-# 31: Support UTF-8 to JIS
-both done
-
-# 30: Support SJIS (Japanese) to UTF-8
-# 31: Support UTF-8 to SJIS (Japanese)
-both done
-
-# 32: Support Big5 (Chinese Traditional) to UTF-8
-# 33: Support UTF-8 to Big5
-both done
-
-# 32: Support GB2312 (Chinese Simplified) to UTF-8
-# 33: Support UTF-8 to GB2312
-both done
-
-# 34: Module must be thread safe
-
-# 35: Must be able to override character set used on a call-by-call basis.
-
-# 36: Must accomodate standard HTTP charset params and map them to the
- correct character set..
-
-Done, when using linux Iconv knows most charsets. Added aliases for others
-
-
-# 37: Support EUC-KR (Korean) to UTF-8
-# 38: Support UTF-8 to EUC-KR
-
-both done
View
343 sql/Pg/Bric/Util/Pref.val
@@ -1,8 +1,8 @@
-- Project: Bricolage Business API
-- File: Pref.val
--- VERSION: $Revision: 1.2 $
+-- VERSION: $Revision: 1.3 $
--
--- $Date: 2003-08-18 16:59:59 $
+-- $Date: 2003-09-16 03:47:11 $
-- Author: David Wheeler <david@wheeler.net>
INSERT INTO pref (id, name, description, value, def, manual, opt_type)
@@ -1265,345 +1265,6 @@ VALUES (3, '%F%M% l', '"W.J. Clinton"');
INSERT INTO pref_opt (pref__id, value, description)
VALUES (3, '%F% m% l', '"W. Jefferson Clinton"');
---
--- CHARACTER SETS
---
-
-/* The following character set preference options were created by this script. I
-got the list of character sets from
-http://clisp.cons.org/~haible/packages-libiconv.html, which documents the GNU
-version of the iconv library. Not all of them seem to work, though. There are
-lots of others, too (as the commented-out script demonstrates - it spit out 112
-character sets when I ran it), but there seemed little point in including all
-those hardware-dependent character sets. I expect that this list of 86 character
-sets will cover 99+% of our needs.
-
-#!/usr/bin/perl -w
-use strict;
-use Bric::Util::CharTrans;
-
-my @sets;
-while (<DATA>) {
- chomp;
- next unless $_;
- last if index ($_, '__END__') != -1;
- eval { Bric::Util::CharTrans->new($_) };
- next if $@;
- push @sets, $_;
-}
- print qq{
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, '$_', '$_');
-} for sort @sets;
-
-
-# This script produces more character sets, but most don't seem relevant.
-#!/usr/bin/perl -w
-#
-#use strict;
-#use Bric::Util::CharTrans;
-#
-#my $i;
-#my @lines = `iconv --list`;
-#foreach (@lines) {
-# next unless ++$i > 8;
-# chomp;
-# s/\s+//g;
-# foreach my $set (split /,/) {
-# my $lc = lc $set;
-# eval { Bric::Util::CharTrans->new($lc) };
-# next if $@;
-# print qq{
-#INSERT INTO pref_opt (pref__id, value, description)
-#VALUES (4, '$lc', '$set');
-#};
-# }
-#}
-
-
-
-
-
-
-__DATA__
-US-ASCII
-ISO-8859-1
-ISO-8859-2
-ISO-8859-3
-ISO-8859-4
-ISO-8859-5
-ISO-8859-6
-ISO-8859-7
-ISO-8859-8
-ISO-8859-9
-ISO-8859-11
-ISO-8859-12
-ISO-8859-13
-ISO-8859-14
-ISO-8859-15
-ISO-8859-16
-KOI8-R
-KOI8-U
-KOI8-RU
-CP1250
-CP1251
-CP1252
-CP1253
-CP1254
-CP1255
-CP1256
-CP1257
-CP850
-CP866
-CP862
-CP932
-CP950
-MacRoman
-MacCentralEurope
-MacIceland
-MacCroatian
-MacRomania
-MacCyrillic
-MacUkraine
-MacGreek
-MacTurkish
-Macintosh
-MacHebrew
-MacArabic
-EUC-JP
-SHIFT-JIS
-ISO-2022-JP
-ISO-2022-JP-2
-ISO-2022-JP-1
-EUC-CN
-HZ
-GBK
-GB18030
-EUC-TW
-BIG5
-BIG5HKSCS
-ISO-2022-CN
-ISO-2022-CN-EXT
-EUC-KR
-CP949
-ISO-2022-KR
-JOHAB
-ARMSCII-8
-Georgian-Academy
-Georgian-PS
-TIS-620
-CP874
-MacThai
-MuleLao-1
-CP1133
-VISCII
-TCVN
-CP1258
-UTF-8
-UCS-2
-UCS-2BE
-UCS-2LE
-UCS-4
-UCS-4BE
-UCS-4LE
-UTF-16
-UTF-16BE
-UTF-16LE
-UTF-7
-
-__END__
-http://clisp.cons.org/~haible/packages-libiconv.html
-
-European languages
- ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, KOI8-R, KOI8-U, KOI8-RU, CP{1250,1251,1252,1253,1254,1257}, CP{850,866},
- Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, Mac{Cyrillic,Ukraine,Greek,Turkish}, Macintosh
-Semitic languages
- ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}
-Japanese
- EUC-JP, SHIFT-JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
-Chinese
- EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950, BIG5HKSCS, ISO-2022-CN, ISO-2022-CN-EXT
-Korean
- EUC-KR, CP949, ISO-2022-KR, JOHAB
-Armenian
- ARMSCII-8
-Georgian
- Georgian-Academy, Georgian-PS
-Thai
- TIS-620, CP874, MacThai
-Laotian
- MuleLao-1, CP1133
-Vietnamese
- VISCII, TCVN, CP1258
-Platform specifics
- HP-ROMAN8, NEXTSTEP
-Full Unicode
- UTF-8
- UCS-2, UCS-2BE, UCS-2LE
- UCS-4, UCS-4BE, UCS-4LE
- UTF-16, UTF-16BE, UTF-16LE
- UTF-7
- JAVA
-__END__
-*/
-
-/* Commented-out for now, since we're using Bric::Config settings instead. May
-* want to add this stuff back in in a future version, though.
-* --David, 15 May 2001.
-
-INSERT INTO pref (id, name, description, value, def, manual, opt_type)
-VALUES (4, 'Character Set', 'Character set to translate to and from.', 'ISO-8859-1', 'ISO-8859-1', 0, 'select');
-
-INSERT INTO member (id, grp__id, class__id, active)
-VALUES (404, 22, 48, 1);
-
-INSERT INTO pref_member (id, object_id, member__id)
-VALUES (4, 4, 404);
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'BIG5', 'BIG5');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1250', 'CP1250');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1251', 'CP1251');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1252', 'CP1252');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1253', 'CP1253');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1254', 'CP1254');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1255', 'CP1255');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1256', 'CP1256');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1257', 'CP1257');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP1258', 'CP1258');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP850', 'CP850');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP862', 'CP862');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP866', 'CP866');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP874', 'CP874');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP932', 'CP932');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'CP949', 'CP949');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'EUC-CN', 'EUC-CN');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'EUC-JP', 'EUC-JP');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'EUC-KR', 'EUC-KR');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'EUC-TW', 'EUC-TW');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-2022-JP', 'ISO-2022-JP');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-2022-JP-2', 'ISO-2022-JP-2');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-2022-KR', 'ISO-2022-KR');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-1', 'ISO-8859-1');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-2', 'ISO-8859-2');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-3', 'ISO-8859-3');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-4', 'ISO-8859-4');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-5', 'ISO-8859-5');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-6', 'ISO-8859-6');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-7', 'ISO-8859-7');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-8', 'ISO-8859-8');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-9', 'ISO-8859-9');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-11', 'ISO-8859-11');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-13', 'ISO-8859-13');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-14', 'ISO-8859-14');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'ISO-8859-15', 'ISO-8859-15');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'JOHAB', 'JOHAB');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'KOI8-R', 'KOI8-R');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'KOI8-U', 'KOI8-U');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'Macintosh ', 'Macintosh ');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'SHIFT-JIS', 'SHIFT-JIS');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'TIS-620', 'TIS-620');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'UCS-2', 'UCS-2');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'UCS-4', 'UCS-4');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'US-ASCII', 'US-ASCII');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'UTF-16', 'UTF-16');
-
-INSERT INTO pref_opt (pref__id, value, description)
-VALUES (4, 'UTF-8', 'UTF-8');
-
-* End commented-out charset preference.
-*/
-
-- Date and time formatting.
INSERT INTO pref (id, name, description, value, def, opt_type)
View
292 t/Bric/Util/CharTrans/Test.pm
@@ -3,195 +3,117 @@ use strict;
use warnings;
use base qw(Bric::Test::Base);
use Test::More;
+use Bric::Util::CharTrans;
+use File::Spec::Functions qw(catfile);
+use File::Basename;
+use Storable qw(dclone);
+use Bric::Config qw(:char);
+
+# Borrowed these files from the Encode test suite, but renamed them and
+# truncated each of them to 100 lines. I figure if we demonstrate that
+# Encode is working, then Encode's own tests can be the comprehensive ones!
+my %test_files =
+ ('euc-cn' => [ catfile(dirname(__FILE__), 'euc-cn.enc'),
+ catfile(dirname(__FILE__), 'euc-cn.utf') ],
+ 'euc-jp' => [ catfile(dirname(__FILE__), 'euc-jp.enc'),
+ catfile(dirname(__FILE__), 'euc-jp.utf') ],
+ 'euc-kr' => [ catfile(dirname(__FILE__), 'euc-kr.enc'),
+ catfile(dirname(__FILE__), 'euc-kr.utf') ],
+ 'big5-eten' => [ catfile(dirname(__FILE__), 'big5-eten.enc'),
+ catfile(dirname(__FILE__), 'big5-eten.utf') ]
+ );
##############################################################################
-# Test class loading.
+# Simple string conversion tests.
##############################################################################
-sub _test_load : Test(1) {
- use_ok('Bric::Util::CharTrans');
-}
-
-1;
-__END__
-
-# Here is the original test script for reference. If there's something usable
-# here, then use it. Otherwise, feel free to discard it once the tests have
-# been fully written above.
-
-#!/usr/bin/perl -w
-use strict;
-use Test;
-
-BEGIN { plan tests => 55}
-
-use lib qw(../..);
-
-use Bric::Util::CharTrans;
-
-my $from_or_to = shift;
-my $charset = shift;
-
-if ($charset) {
- # skip tests, do a file conversion..
- my $text;
- while (<>) {
- $text .= $_;
- }
- my $ct = new Bric::Util::CharTrans($charset);
-
- die "$!" unless ($ct);
-
- my $out;
- if ($from_or_to eq 'from') {
- print $ct->to_utf8($text);
- } else {
- print $ct->from_utf8($text);
- }
-
- exit;
+sub test_strings : Test(1612) {
+ my $self = shift;
+
+ # Failing constructors.
+ eval { Bric::Util::CharTrans->new };
+ ok( my $err = $@, "Got no charset exception" );
+ isa_ok($err, 'Bric::Util::Fault::Exception::GEN');
+
+ eval { Bric::Util::CharTrans->new('flintstone_runes') };
+ ok( $err = $@, "Got bogus charset exception" );
+ isa_ok($err, 'Bric::Util::Fault::Exception::GEN');
+
+ while (my ($charset, $files) = each %test_files) {
+ ok( my $ct = Bric::Util::CharTrans->new($charset),
+ "Create new CT for '$charset' charset" );
+ isa_ok($ct, 'Bric::Util::CharTrans');
+ open ENC, $files->[0] or die "Unable to open $files->[0]: $!\n";
+ open UTF, $files->[1] or die "Unable to open $files->[1]: $!\n";
+ my $i;
+ while (my $enc_line = <ENC>) {
+ my $utf_line = <UTF>;
+ ++$i;
+ my $cp = $enc_line;
+ ok( $ct->to_utf8($cp), "Convert $charset line $i to UTF-8" );
+ is( $cp, $utf_line, "Compare to UTF-8");
+ $cp = $utf_line;
+ ok( $ct->from_utf8($cp), "Convert line $i to $charset" );
+ is( $cp, $enc_line, "Compare to $charset");
+ }
+ }
}
-#############################################################
-print <<EOF
-
-Verify Module Loads
-EOF
-;
-
-ok(1);
-
-
-
-#############################################################
-print <<EOF
-
-Create broken object, flintstone_runes
-EOF
-;
-my $chartrans;
-
-eval { $chartrans = new Bric::Util::CharTrans('flintstone_runes');};
-
-ok($@);
-
-
-#############################################################
-print <<EOF
-
-Create bogus empty object, no args at all..
-EOF
-;
-
-eval { $chartrans = new Bric::Util::CharTrans()};
-
-ok($@);
-
-#############################################################
-print <<EOF
-
-Create new object, iso8859-1
-EOF
-;
-
-eval { $chartrans = new Bric::Util::CharTrans('iso-8859-1');};
-ok(!$@ && defined($chartrans));
-print "$@" if ($@);
-######################################################################
-
-die "can't continue" unless ($chartrans); # can't continue without it..
-
-# Test proper behavior for conversions
-
-my $ascii_utf8 = {
- '' => '',
- 'abcdefghijklmnopqrstuvwxyz' => 'abcdefghijklmnopqrstuvwxyz',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
- '0123456789!@#$%^&*()_-+=[]{}:;,.<>/?\|\'"`~' => '0123456789!@#$%^&*()_-+=[]{}:;,.<>/?\|\'"`~',
- "\n\t\r" => "\n\t\r"
- };
-
-test_set('ASCII', $ascii_utf8);
-
-my $latin1_utf8 = {
- '���������� � �������� �������� ���������� �� ��������' =>
-
-'�������������������� �� ���������������� ���������������� �������������������� ���� ����������������',
- '�� �� �� ��� ������' => '���� ���� ���� ������ ������������',
- };
-
-
-test_set('ISO-8859-1', $latin1_utf8);
-
-#####################################################################
-my $latin2_utf8 = {
- 'm��e b�t pou�ito za pou�it� Mo�na ju� zamieni� zawarto��' =>
- 'm����e b��t pou��ito za pou��it�� Mo��na ju�� zamieni�� zawarto����'
- };
-
-eval { $chartrans = new Bric::Util::CharTrans('iso-8859-2');};
-ok(!$@ && defined($chartrans));
-print "$@" if ($@);
-test_set('ISO-8859-2', $latin2_utf8);
-
-#####################################################################
-my $jis_utf8 = {
- 'プロダクトOK' => '���������������OK',
- 'レッドハットの資本OK' => '���������������������������OK',
- 'test ascii' => 'test ascii'
- };
-
-eval { $chartrans = new Bric::Util::CharTrans('ISO-2022-JP');};
-ok(!$@ && defined($chartrans));
-print "$@" if ($@);
-test_set('ISO-2022-JP', $jis_utf8);
-
-######################################################################
-my $sjis_utf8 = {
- '' => '',
-};
-
-eval { $chartrans = new Bric::Util::CharTrans('ISO-2022-JP');};
-ok(!$@ && defined($chartrans));
-print "$@" if ($@);
-test_set('ISO-2022-JP', $sjis_utf8);
-
-######################################################################
-# Test a set of translations
-#
-# First test scalar, then test ref..
-
-sub test_set {
- my ($name, $set) = @_;
- print "*** Testing set $name\n";
- foreach my $t (sort(keys(%{$set}))) {
- my $as_utf8 = $set->{$t};
-
- my $result = $chartrans->to_utf8($t);
-
- print "Testing '$t'\n";
- ok($result, $as_utf8);
- my $storage = $t;
-
- $chartrans->to_utf8(\$storage);
- ok($storage, $as_utf8);
-
- print "...reversed\n";
- $result = $chartrans->from_utf8($as_utf8);
- ok ($result, $t);
-
- $storage = $as_utf8;
- $chartrans->from_utf8(\$storage);
- ok($storage, $t);
- }
- if ($name eq 'iso-8859-1') {
- my $texts = ['abcdefg','����������', ['bbb', 'ccc'], {a=>"�111222", b=>'2222'}];
- print "Testing multilevel data structure fixing\n";
- use Data::Dumper;
- print Dumper($texts);
- $chartrans->to_utf8($texts);
- print "Recursive conversion...\n";
- use Data::Dumper;
- print Dumper($texts), "\n";
- }
+##############################################################################
+# Test conversion of complex structures.
+##############################################################################
+sub test_structs : Test(24) {
+ my $self = shift;
+ while (my ($charset, $files) = each %test_files) {
+ ok( my $ct = Bric::Util::CharTrans->new($charset),
+ "Create new CT for '$charset' charset" );
+ isa_ok($ct, 'Bric::Util::CharTrans');
+ open ENC, $files->[0] or die "Unable to open $files->[0]: $!\n";
+ open UTF, $files->[1] or die "Unable to open $files->[1]: $!\n";
+
+ # Create a hash of arrays of hashes, with a scalarref for good
+ # measure.
+ my $enc_struct = { one => [ scalar <ENC>, scalar <ENC>, scalar <ENC>,
+ { two => scalar <ENC>,
+ three => scalar <ENC>,
+ four => scalar <ENC>,
+ },
+ \scalar <ENC>
+ ]
+ };
+
+ # Do the same with some UTF-8 data.
+ my $utf_struct = { one => [ scalar <UTF>, scalar <UTF>, scalar <UTF>,
+ { two => scalar <UTF>,
+ three => scalar <UTF>,
+ four => scalar <UTF>,
+ },
+ \scalar <UTF>
+ ]
+ };
+
+ # Close the files.
+ close ENC;
+ close UTF;
+
+ # Now clone (deep copy) those data structures.
+ my $enc_struct_clone = dclone $enc_struct;
+ my $utf_struct_clone = dclone $utf_struct;
+
+ # Now try to convert the encoded string to UTF-8.
+ ok( $ct->to_utf8($enc_struct_clone),
+ "Convert $charset structure to UTF-8" );
+ # It should be UTF-8 now!
+ is_deeply($enc_struct_clone, $utf_struct,
+ "$charset structure converted to UTF-8 structure");
+
+ # Now try to convert the UTF-8 string the encoding.
+ ok( $ct->from_utf8($utf_struct_clone),
+ "Convert UTF-8 structure to $charset" );
+ # It should be UTF-8 now!
+ is_deeply($utf_struct_clone, $enc_struct,
+ "UTF-8 structure converted to $charset structure");
+
+ }
}
+1;
View
100 t/Bric/Util/CharTrans/big5-eten.enc
@@ -0,0 +1,100 @@
+0xa140: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa160: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa1a0: ��������������������������������������������������������������
+0xa1c0: ���¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡ�
+0xa1e0: ��������������������������������
+0xa240: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa260: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa2a0: ������ ������������������������������������������������
+0xa2c0: ���¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢ�
+0xa2e0: ��������������������������������
+0xa340: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa360: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa3a0: ��������������������������������������������������������������
+0xa3e0: ��
+0xa440: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa460: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa4a0: ��������������������������������������������������������������
+0xa4c0: ���¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤ�
+0xa4e0: ��������������������������������
+0xa540: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa560: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa5a0: ��������������������������������������������������������������
+0xa5c0: ���¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥ�
+0xa5e0: ��������������������������������
+0xa640: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa660: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa6a0: ��������������������������������������������������������������
+0xa6c0: ���¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦ڦۦܦݦަ�
+0xa6e0: ��������������������������������
+0xa740: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa760: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa7a0: ��������������������������������������������������������������
+0xa7c0: ���§çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާ�
+0xa7e0: ��������������������������������
+0xa840: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa860: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa8a0: ��������������������������������������������������������������
+0xa8c0: ���¨èĨŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨި�
+0xa8e0: ��������������������������������
+0xa940: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xa960: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xa9a0: ��������������������������������������������������������������
+0xa9c0: ���©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީ�
+0xa9e0: ��������������������������������
+0xaa40: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xaa60: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xaaa0: ��������������������������������������������������������������
+0xaac0: ���ªêĪŪƪǪȪɪʪ˪̪ͪΪϪЪѪҪӪԪժ֪תت٪ڪ۪ܪݪު�
+0xaae0: ��������������������������������
+0xab40: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xab60: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xaba0: ��������������������������������������������������������������
+0xabc0: ���«ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ�
+0xabe0: ��������������������������������
+0xac40: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xac60: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xaca0: ��������������������������������������������������������������
+0xacc0: ���¬ìĬŬƬǬȬɬʬˬ̬ͬάϬЬѬҬӬԬլ֬׬ج٬ڬ۬ܬݬެ�
+0xace0: ��������������������������������
+0xad40: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xad60: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xada0: ��������������������������������������������������������������
+0xadc0: ���­íĭŭƭǭȭɭʭ˭̭ͭέϭЭѭҭӭԭխ֭׭ح٭ڭۭܭݭޭ�
+0xade0: ��������������������������������
+0xae40: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xae60: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xaea0: ��������������������������������������������������������������
+0xaec0: ���®îĮŮƮǮȮɮʮˮ̮ͮήϮЮѮҮӮԮծ֮׮خٮڮۮܮݮޮ�
+0xaee0: ��������������������������������
+0xaf40: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xaf60: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xafa0: ��������������������������������������������������������������
+0xafc0: ���¯ïįůƯǯȯɯʯ˯̯ͯίϯЯѯүӯԯկ֯ׯدٯگۯܯݯޯ�
+0xafe0: ��������������������������������
+0xb040: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xb060: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xb0a0: ��������������������������������������������������������������
+0xb0c0: ���°ðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް�
+0xb0e0: ��������������������������������
+0xb140: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xb160: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xb1a0: ��������������������������������������������������������������
+0xb1c0: ���±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱױرٱڱ۱ܱݱޱ�
+0xb1e0: ��������������������������������
+0xb240: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xb260: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xb2a0: ��������������������������������������������������������������
+0xb2c0: ���²òIJŲƲDzȲɲʲ˲̲ͲβϲвѲҲӲԲղֲײزٲڲ۲ܲݲ޲�
+0xb2e0: ��������������������������������
+0xb340: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xb360: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xb3a0: ��������������������������������������������������������������
+0xb3c0: ���³óijųƳdzȳɳʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ޳�
+0xb3e0: ��������������������������������
+0xb440: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
+0xb460: �`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~
+0xb4a0: ��������������������������������������������������������������
+0xb4c0: ���´ôĴŴƴǴȴɴʴ˴̴ʹδϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴�
+0xb4e0: ��������������������������������
+0xb540: �@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_
View
100 t/Bric/Util/CharTrans/big5-eten.utf
@@ -0,0 +1,100 @@
+0xa140:  ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵
+0xa160: ︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚
+0xa1a0: ﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼
+0xa1c0: ㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣
+0xa1e0: ﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/
+0xa240: \∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧
+0xa260: 瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭
+0xa2a0: ╮╰╯ ◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦ
+0xa2c0: ⅧⅨⅩ〡〢〣〤〥〦〧〨〩〸〹〺ABCDEFGHIJKLMNOPQ
+0xa2e0: RSTUVWXYZabcdefghijklmnopqrstuv
+0xa340: wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδ
+0xa360: εζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ
+0xa3a0: ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ
+0xa3e0: €
+0xa440: 一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于
+0xa460: 亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才
+0xa4a0: 丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶
+0xa4c0: 分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心
+0xa4e0: 戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙
+0xa540: 世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北
+0xa560: 匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外
+0xa5a0: 央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正
+0xa5c0: 母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立
+0xa5e0: 丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全
+0xa640: 共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝
+0xa660: 圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年
+0xa6a0: 式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江
+0xa6c0: 池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛
+0xa6e0: 舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣
+0xa740: 作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否
+0xa760: 呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍
+0xa7a0: 均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿
+0xa7c0: 尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶
+0xa7e0: 抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠
+0xa840: 杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶
+0xa860: 灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒
+0xa8a0: 芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮
+0xa8c0: 阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔
+0xa8e0: 兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵
+0xa940: 咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇
+0xa960: 奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居
+0xa9a0: 屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽
+0xa9c0: 念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋
+0xa9e0: 拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊
+0xaa40: 昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣
+0xaa60: 注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠
+0xaaa0: 炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽
+0xaac0: 社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟
+0xaae0: 芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附
+0xab40: 陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒
+0xab60: 冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品
+0xaba0: 哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪
+0xabc0: 姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律
+0xabe0: 徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷
+0xac40: 拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯
+0xac60: 柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗
+0xaca0: 活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷
+0xacc0: 珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼
+0xace0: 眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄
+0xad40: 耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁
+0xad60: 苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥
+0xada0: 迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍
+0xadc0: 倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥
+0xade0: 冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪
+0xae40: 哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰
+0xae60: 害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙
+0xaea0: 恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪
+0xaec0: 挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗
+0xaee0: 桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓
+0xaf40: 浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞
+0xaf60: 畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷
+0xafa0: 砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊
+0xafc0: 素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈
+0xafe0: 能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃
+0xb040: 虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起
+0xb060: 躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡
+0xb0a0: 陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏
+0xb0c0: 偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯
+0xb0e0: 啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀
+0xb140: 娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢
+0xb160: 常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽
+0xb1a0: 情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫
+0xb1c0: 推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚
+0xb1e0: 晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺
+0xb240: 毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪
+0xb260: 深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶
+0xb2a0: 瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒
+0xb2c0: 窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習
+0xb2e0: 耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼
+0xb340: 莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛
+0xb360: 訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途
+0xb3a0: 部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵
+0xb3c0: 鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜
+0xb3e0: 喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠
+0xb440: 婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復
+0xb460: 循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍
+0xb4a0: 插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾
+0xb4c0: 替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼
+0xb4e0: 毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋
+0xb540: 溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯
View
100 t/Bric/Util/CharTrans/euc-cn.enc
@@ -0,0 +1,100 @@
+0x2120: ��������������������������������������������������������������
+0x2140: ���¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡ�
+0x2160: ��������������������������������
+0x2220: ������������������������������
+0x2240: ���¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢ�
+0x2260: ���� ����������� �������������
+0x2320: ��������������������������������������������������������������
+0x2340: ���£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣ�
+0x2360: ��������������������������������
+0x2420: ��������������������������������������������������������������
+0x2440: ���¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤ�
+0x2460: ���������������������
+0x2520: ��������������������������������������������������������������
+0x2540: ���¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥ�
+0x2560: ������������������������
+0x2620: ������������������������������������������������
+0x2640: ��¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צ�
+0x2720: ��������������������������������������������������������������
+0x2740: ��� �ѧҧӧԧէ֧קا٧ڧۧܧݧާ�
+0x2760: �������������������
+0x2820: ����������������������������������������������������
+0x2840: �ŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨި�
+0x2860: �����������
+0x2920: ��������������������������������������������������������
+0x2940: ���©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީ�
+0x2960: �����������������
+0x3020: ��������������������������������������������������������������
+0x3040: ���°ðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް�
+0x3060: ��������������������������������
+0x3120: ��������������������������������������������������������������
+0x3140: ���±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱױرٱڱ۱ܱݱޱ�
+0x3160: ��������������������������������
+0x3220: ��������������������������������������������������������������
+0x3240: ���²òIJŲƲDzȲɲʲ˲̲ͲβϲвѲҲӲԲղֲײزٲڲ۲ܲݲ޲�
+0x3260: ��������������������������������
+0x3320: ��������������������������������������������������������������
+0x3340: ���³óijųƳdzȳɳʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ޳�
+0x3360: ��������������������������������
+0x3420: ��������������������������������������������������������������
+0x3440: ���´ôĴŴƴǴȴɴʴ˴̴ʹδϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴�
+0x3460: ��������������������������������
+0x3520: ��������������������������������������������������������������
+0x3540: ���µõĵŵƵǵȵɵʵ˵̵͵εϵеѵҵӵԵյֵ׵صٵڵ۵ܵݵ޵�
+0x3560: ��������������������������������
+0x3620: ��������������������������������������������������������������
+0x3640: ���¶öĶŶƶǶȶɶʶ˶̶Ͷζ϶жѶҶӶԶնֶ׶ضٶڶ۶ܶݶ޶�
+0x3660: ��������������������������������
+0x3720: ��������������������������������������������������������������
+0x3740: ���·÷ķŷƷǷȷɷʷ˷̷ͷηϷзѷҷӷԷշַ׷طٷڷ۷ܷݷ޷�
+0x3760: ��������������������������������
+0x3820: ��������������������������������������������������������������
+0x3840: ���¸øĸŸƸǸȸɸʸ˸̸͸θϸиѸҸӸԸոָ׸ظٸڸ۸ܸݸ޸�
+0x3860: ��������������������������������
+0x3920: ��������������������������������������������������������������
+0x3940: ���¹ùĹŹƹǹȹɹʹ˹̹͹ιϹйѹҹӹԹչֹ׹عٹڹ۹ܹݹ޹�
+0x3960: ��������������������������������
+0x3a20: ��������������������������������������������������������������
+0x3a40: ���ºúĺźƺǺȺɺʺ˺̺ͺκϺкѺҺӺԺպֺ׺غٺںۺܺݺ޺�
+0x3a60: ��������������������������������
+0x3b20: ��������������������������������������������������������������
+0x3b40: ���»ûĻŻƻǻȻɻʻ˻̻ͻλϻлѻһӻԻջֻ׻ػٻڻۻܻݻ޻�
+0x3b60: ��������������������������������
+0x3c20: ��������������������������������������������������������������
+0x3c40: ���¼üļżƼǼȼɼʼ˼̼ͼμϼмѼҼӼԼռּ׼ؼټڼۼܼݼ޼�
+0x3c60: ��������������������������������
+0x3d20: ��������������������������������������������������������������
+0x3d40: ���½ýĽŽƽǽȽɽʽ˽̽ͽνϽнѽҽӽԽսֽ׽ؽٽڽ۽ܽݽ޽�
+0x3d60: ��������������������������������
+0x3e20: ��������������������������������������������������������������
+0x3e40: ���¾þľžƾǾȾɾʾ˾̾;ξϾоѾҾӾԾվ־׾ؾپھ۾ܾݾ޾�
+0x3e60: ��������������������������������
+0x3f20: ��������������������������������������������������������������
+0x3f40: ���¿ÿĿſƿǿȿɿʿ˿̿ͿοϿпѿҿӿԿտֿ׿ؿٿڿۿܿݿ޿�
+0x3f60: ��������������������������������
+0x4020: �������������������������������
+0x4040: ����������������������������������������������������������������
+0x4060: ��������������������������������������������������������������
+0x4120: �������������������������������
+0x4140: ����������������������������������������������������������������
+0x4160: ��������������������������������������������������������������
+0x4220: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿
+0x4240: ����������������������������������������������������������������
+0x4260: ��������������������������������������������������������������
+0x4320: áâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
+0x4340: ����������������������������������������������������������������
+0x4360: ��������������������������������������������������������������
+0x4420: ġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿ
+0x4440: ����������������������������������������������������������������
+0x4460: ��������������������������������������������������������������
+0x4520: šŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ
+0x4540: ����������������������������������������������������������������
+0x4560: ��������������������������������������������������������������
+0x4620: ơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ
+0x4640: ����������������������������������������������������������������
+0x4660: ��������������������������������������������������������������
+0x4720: ǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ
+0x4740: ����������������������������������������������������������������
+0x4760: ��������������������������������������������������������������
+0x4820: ȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ
+0x4840: ����������������������������������������������������������������
View
100 t/Bric/Util/CharTrans/euc-cn.utf
@@ -0,0 +1,100 @@
+0x2120:  、。・ˉˇ¨〃々―~‖…‘’“”〔〕〈〉《》「」『』〖〗【】
+0x2140: ±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵
+0x2160: ∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓
+0x2220: ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
+0x2240: ⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦
+0x2260: ⑧⑨⑩ ㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ
+0x2320: !"#¥%&'()*+,-./0123456789:;<=>?
+0x2340: @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
+0x2360: `abcdefghijklmnopqrstuvwxyz{|} ̄
+0x2420: ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞた
+0x2440: だちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみ
+0x2460: むめもゃやゅゆょよらりるれろゎわゐゑをん
+0x2520: ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタ
+0x2540: ダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ
+0x2560: ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+0x2620: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
+0x2640: αβγδεζηθικλμνξοπρστυφχψω
+0x2720: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭ
+0x2740: ЮЯ абвгдеёжзийклмн
+0x2760: опрстуфхцчшщъыьэюя
+0x2820: āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê
+0x2840: ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟ
+0x2860: ㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ
+0x2920: ─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛
+0x2940: ├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻
+0x2960: ┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋
+0x3020: 啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱
+0x3040: 袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑
+0x3060: 班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥
+0x3120: 薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨
+0x3140: 崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边
+0x3160: 编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳
+0x3220: 病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部
+0x3240: 怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策
+0x3260: 侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖
+0x3320: 场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨
+0x3340: 忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺
+0x3360: 赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚
+0x3420: 础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯
+0x3440: 蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催
+0x3460: 脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮
+0x3520: 怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼
+0x3540: 道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠
+0x3560: 掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠
+0x3620: 丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊
+0x3640: 独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆
+0x3660: 多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二
+0x3720: 贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房
+0x3740: 防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤
+0x3760: 粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服
+0x3820: 浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚
+0x3840: 咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高
+0x3860: 膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹
+0x3920: 埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍
+0x3940: 估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯
+0x3960: 灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈
+0x3a20: 骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎
+0x3a40: 豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼
+0x3a60: 亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖
+0x3b20: 弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢
+0x3b40: 焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿
+0x3b60: 秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕
+0x3c20: 肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎
+0x3c40: 祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼
+0x3c60: 监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件
+0x3d20: 健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇
+0x3d40: 嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭
+0x3d60: 洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸
+0x3e20: 尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究
+0x3e40: 纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具
+0x3e60: 距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻
+0x3f20: 俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠
+0x3f40: 坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟
+0x3f60: 苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀
+0x4020: 馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽
+0x4040: 览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋
+0x4060: 类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐
+0x4120: 痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量
+0x4140: 晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝
+0x4160: 拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿
+0x4220: 隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴
+0x4240: 吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻
+0x4260: 锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫
+0x4320: 谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每
+0x4340: 美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠
+0x4360: 绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸
+0x4420: 摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目
+0x4440: 睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪
+0x4460: 泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁
+0x4520: 拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴
+0x4540: 爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚
+0x4560: 培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗
+0x4620: 啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶
+0x4640: 评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七
+0x4660: 凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐
+0x4720: 恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强
+0x4740: 抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁
+0x4760: 青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠
+0x4820: 取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤
+0x4840: 壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗
View
100 t/Bric/Util/CharTrans/euc-jp.enc
@@ -0,0 +1,100 @@
+0x2120: ��������������������������������������������������������������
+0x2140: ���¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡ�
+0x2160: ��������������������������������
+0x2220: ���������������������������� ������������
+0x2240: ��� �ʢˢ̢͢΢Ϣ� �ܢݢޢ�
+0x2260: ������������ ��������� ��
+0x2320: ��������������������
+0x2340: ��£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣�
+0x2360: ���������������������������
+0x2420: ��������������������������������������������������������������
+0x2440: ���¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤ�
+0x2460: ���������������������
+0x2520: ��������������������������������������������������������������
+0x2540: ���¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥ�
+0x2560: ������������������������
+0x2620: ������������������������������������������������
+0x2640: ��¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צ�
+0x2720: ��������������������������������������������������������������
+0x2740: ��� �ѧҧӧԧէ֧קا٧ڧۧܧݧާ�
+0x2760: �������������������
+0x2820: ��������������������������������������������������������������
+0x2840: ��
+0x3020: ��������������������������������������������������������������
+0x3040: ���°ðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް�
+0x3060: ��������������������������������
+0x3120: ��������������������������������������������������������������
+0x3140: ���±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱױرٱڱ۱ܱݱޱ�
+0x3160: ��������������������������������
+0x3220: ��������������������������������������������������������������
+0x3240: ���²òIJŲƲDzȲɲʲ˲̲ͲβϲвѲҲӲԲղֲײزٲڲ۲ܲݲ޲�
+0x3260: ��������������������������������
+0x3320: ��������������������������������������������������������������
+0x3340: ���³óijųƳdzȳɳʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ޳�
+0x3360: ��������������������������������
+0x3420: ��������������������������������������������������������������
+0x3440: ���´ôĴŴƴǴȴɴʴ˴̴ʹδϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴�
+0x3460: ��������������������������������
+0x3520: ��������������������������������������������������������������
+0x3540: ���µõĵŵƵǵȵɵʵ˵̵͵εϵеѵҵӵԵյֵ׵صٵڵ۵ܵݵ޵�
+0x3560: ��������������������������������
+0x3620: ��������������������������������������������������������������
+0x3640: ���¶öĶŶƶǶȶɶʶ˶̶Ͷζ϶жѶҶӶԶնֶ׶ضٶڶ۶ܶݶ޶�
+0x3660: ��������������������������������
+0x3720: ��������������������������������������������������������������
+0x3740: ���·÷ķŷƷǷȷɷʷ˷̷ͷηϷзѷҷӷԷշַ׷طٷڷ۷ܷݷ޷�
+0x3760: ��������������������������������
+0x3820: ��������������������������������������������������������������
+0x3840: ���¸øĸŸƸǸȸɸʸ˸̸͸θϸиѸҸӸԸոָ׸ظٸڸ۸ܸݸ޸�
+0x3860: ��������������������������������
+0x3920: ��������������������������������������������������������������
+0x3940: ���¹ùĹŹƹǹȹɹʹ˹̹͹ιϹйѹҹӹԹչֹ׹عٹڹ۹ܹݹ޹�
+0x3960: ��������������������������������
+0x3a20: ��������������������������������������������������������������
+0x3a40: ���ºúĺźƺǺȺɺʺ˺̺ͺκϺкѺҺӺԺպֺ׺غٺںۺܺݺ޺�
+0x3a60: ��������������������������������
+0x3b20: ��������������������������������������������������������������
+0x3b40: ���»ûĻŻƻǻȻɻʻ˻̻ͻλϻлѻһӻԻջֻ׻ػٻڻۻܻݻ޻�
+0x3b60: ��������������������������������
+0x3c20: ��������������������������������������������������������������
+0x3c40: ���¼üļżƼǼȼɼʼ˼̼ͼμϼмѼҼӼԼռּ׼ؼټڼۼܼݼ޼�
+0x3c60: ��������������������������������
+0x3d20: ��������������������������������������������������������������
+0x3d40: ���½ýĽŽƽǽȽɽʽ˽̽ͽνϽнѽҽӽԽսֽ׽ؽٽڽ۽ܽݽ޽�
+0x3d60: ��������������������������������
+0x3e20: ��������������������������������������������������������������
+0x3e40: ���¾þľžƾǾȾɾʾ˾̾;ξϾоѾҾӾԾվ־׾ؾپھ۾ܾݾ޾�
+0x3e60: ��������������������������������
+0x3f20: ��������������������������������������������������������������
+0x3f40: ���¿ÿĿſƿǿȿɿʿ˿̿ͿοϿпѿҿӿԿտֿ׿ؿٿڿۿܿݿ޿�
+0x3f60: ��������������������������������
+0x4020: �������������������������������
+0x4040: ����������������������������������������������������������������
+0x4060: ��������������������������������������������������������������
+0x4120: �������������������������������
+0x4140: ����������������������������������������������������������������
+0x4160: ��������������������������������������������������������������
+0x4220: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿
+0x4240: ����������������������������������������������������������������
+0x4260: ��������������������������������������������������������������
+0x4320: áâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
+0x4340: ����������������������������������������������������������������
+0x4360: ��������������������������������������������������������������
+0x4420: ġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿ
+0x4440: ����������������������������������������������������������������
+0x4460: ��������������������������������������������������������������
+0x4520: šŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ
+0x4540: ����������������������������������������������������������������
+0x4560: ��������������������������������������������������������������
+0x4620: ơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ
+0x4640: ����������������������������������������������������������������
+0x4660: ��������������������������������������������������������������
+0x4720: ǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ
+0x4740: ����������������������������������������������������������������
+0x4760: ��������������������������������������������������������������
+0x4820: ȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ
+0x4840: ����������������������������������������������������������������
+0x4860: ��������������������������������������������������������������
+0x4920: ɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿ
+0x4940: ����������������������������������������������������������������
+0x4960: ��������������������������������������������������������������
View
100 t/Bric/Util/CharTrans/euc-jp.utf
@@ -0,0 +1,100 @@
+0x2120:  、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/
+0x2140: \〜‖|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+−±×
+0x2160: ÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇
+0x2220: ◆□■△▲▽▼※〒→←↑↓〓 ∈∋⊆⊇⊂⊃
+0x2240: ∪∩ ∧∨¬⇒⇔∀∃ ∠⊥⌒∂
+0x2260: ∇≡≒≪≫√∽∝∵∫∬ ʼn♯♭♪†‡¶ ◯
+0x2320: 0123456789
+0x2340: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+0x2360: abcdefghijklmnopqrstuvwxyz
+0x2420: ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞた
+0x2440: だちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみ
+0x2460: むめもゃやゅゆょよらりるれろゎわゐゑをん
+0x2520: ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタ
+0x2540: ダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ
+0x2560: ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ
+0x2620: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
+0x2640: αβγδεζηθικλμνξοπρστυφχψω
+0x2720: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭ
+0x2740: ЮЯ абвгдеёжзийклмн
+0x2760: опрстуфхцчшщъыьэюя
+0x2820: ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸
+0x2840: ╂
+0x3020: 亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或
+0x3040: 粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃
+0x3060: 萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭
+0x3120: 院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運
+0x3140: 雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円
+0x3160: 園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応
+0x3220: 押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何
+0x3240: 伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨
+0x3260: 迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改
+0x3320: 魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙
+0x3340: 垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫
+0x3360: 橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱
+0x3420: 粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓
+0x3440: 汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸
+0x3460: 巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄
+0x3520: 機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑
+0x3540: 祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救
+0x3560: 朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京
+0x3620: 供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷
+0x3640: 鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟
+0x3660: 謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈
+0x3720: 掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型
+0x3740: 契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨
+0x3760: 劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲
+0x3820: 検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷
+0x3840: 言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互
+0x3860: 伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向
+0x3920: 后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪
+0x3940: 浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降
+0x3960: 項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込
+0x3a20: 此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖
+0x3a40: 裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在
+0x3a60: 材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷
+0x3b20: 察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛
+0x3b40: 酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止
+0x3b60: 死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時
+0x3c20: 次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆
+0x3c40: 疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵
+0x3c60: 酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周
+0x3d20: 宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎
+0x3d40: 柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳
+0x3d60: 準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償
+0x3e20: 勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢
+0x3e40: 樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤
+0x3e60: 鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾
+0x3f20: 拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真
+0x3f40: 神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨
+0x3f60: 逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾
+0x4020: 澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠
+0x4040: 誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設
+0x4060: 窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線
+0x4120: 繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚
+0x4140: 狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻
+0x4160: 操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎
+0x4220: 臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多
+0x4240: 太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸
+0x4260: 退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只
+0x4320: 叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽
+0x4340: 胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄
+0x4360: 逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵
+0x4420: 帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕
+0x4440: 沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊
+0x4460: 釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓
+0x4520: 邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛
+0x4540: 点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬
+0x4560: 凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到
+0x4620: 董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿
+0x4640: 得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍
+0x4660: 奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入
+0x4720: 如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿
+0x4740: 農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅
+0x4760: 楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦
+0x4820: 函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反
+0x4840: 叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇
+0x4860: 彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美
+0x4920: 鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹
+0x4940: 廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷
+0x4960: 斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服
View
100 t/Bric/Util/CharTrans/euc-kr.enc
@@ -0,0 +1,100 @@
+0x2120: ��������������������������������������������������������������
+0x2140: ���¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡ�
+0x2160: ��������������������������������
+0x2220: ��������������������������������������������������������������
+0x2240: ���¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢ�
+0x2260: ���������
+0x2320: ��������������������������������������������������������������
+0x2340: ���£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣ�
+0x2360: ��������������������������������
+0x2420: ��������������������������������������������������������������
+0x2440: ���¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤ�
+0x2460: ��������������������������������
+0x2520: �������������������� ��������������������
+0x2540: ��¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץ�
+0x2560: �������������������������
+0x2620: ��������������������������������������������������������������
+0x2640: ���¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦ڦۦܦݦަ�
+0x2660: ������
+0x2720: ��������������������������������������������������������������
+0x2740: ���§çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާ�
+0x2760: �����������������
+0x2820: �������� �� ���������������� ������������������������������
+0x2840: ���¨èĨŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨި�
+0x2860: ��������������������������������
+0x2920: ��������������������������������������������������������������
+0x2940: ���©éĩũƩǩȩɩʩ˩̩ͩΩϩЩѩҩөԩթ֩שة٩ک۩ܩݩީ�
+0x2960: ��������������������������������
+0x2a20: ��������������������������������������������������������������
+0x2a40: ���ªêĪŪƪǪȪɪʪ˪̪ͪΪϪЪѪҪӪԪժ֪תت٪ڪ۪ܪݪު�
+0x2a60: ���������������������
+0x2b20: ��������������������������������������������������������������
+0x2b40: ���«ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫӫԫի֫׫ث٫ګ۫ܫݫޫ�
+0x2b60: ������������������������
+0x2c20: ��������������������������������������������������������������
+0x2c40: ��� �ѬҬӬԬլ֬׬ج٬ڬ۬ܬݬެ�
+0x2c60: �������������������
+0x3020: ��������������������������������������������������������������
+0x3040: ���°ðİŰưǰȰɰʰ˰̰ͰΰϰаѰҰӰ԰հְװذٰڰ۰ܰݰް�
+0x3060: ��������������������������������
+0x3120: ��������������������������������������������������������������
+0x3140: ���±ñıűƱDZȱɱʱ˱̱ͱαϱбѱұӱԱձֱױرٱڱ۱ܱݱޱ�
+0x3160: ��������������������������������
+0x3220: ��������������������������������������������������������������
+0x3240: ���²òIJŲƲDzȲɲʲ˲̲ͲβϲвѲҲӲԲղֲײزٲڲ۲ܲݲ޲�
+0x3260: ��������������������������������
+0x3320: ��������������������������������������������������������������
+0x3340: ���³óijųƳdzȳɳʳ˳̳ͳγϳгѳҳӳԳճֳ׳سٳڳ۳ܳݳ޳�
+0x3360: ��������������������������������
+0x3420: ��������������������������������������������������������������
+0x3440: ���´ôĴŴƴǴȴɴʴ˴̴ʹδϴдѴҴӴԴմִ״شٴڴ۴ܴݴ޴�
+0x3460: ��������������������������������
+0x3520: ��������������������������������������������������������������
+0x3540: ���µõĵŵƵǵȵɵʵ˵̵͵εϵеѵҵӵԵյֵ׵صٵڵ۵ܵݵ޵�
+0x3560: ��������������������������������
+0x3620: ��������������������������������������������������������������
+0x3640: ���¶öĶŶƶǶȶɶʶ˶̶Ͷζ϶жѶҶӶԶնֶ׶ضٶڶ۶ܶݶ޶�
+0x3660: ��������������������������������
+0x3720: ��������������������������������������������������������������
+0x3740: ���·÷ķŷƷǷȷɷʷ˷̷ͷηϷзѷҷӷԷշַ׷طٷڷ۷ܷݷ޷�
+0x3760: ��������������������������������
+0x3820: ��������������������������������������������������������������
+0x3840: ���¸øĸŸƸǸȸɸʸ˸̸͸θϸиѸҸӸԸոָ׸ظٸڸ۸ܸݸ޸�
+0x3860: ��������������������������������
+0x3920: ��������������������������������������������������������������
+0x3940: ���¹ùĹŹƹǹȹɹʹ˹̹͹ιϹйѹҹӹԹչֹ׹عٹڹ۹ܹݹ޹�
+0x3960: ��������������������������������
+0x3a20: ��������������������������������������������������������������
+0x3a40: ���ºúĺźƺǺȺɺʺ˺̺ͺκϺкѺҺӺԺպֺ׺غٺںۺܺݺ޺�
+0x3a60: ��������������������������������
+0x3b20: ��������������������������������������������������������������
+0x3b40: ���»ûĻŻƻǻȻɻʻ˻̻ͻλϻлѻһӻԻջֻ׻ػٻڻۻܻݻ޻�
+0x3b60: ��������������������������������
+0x3c20: ��������������������������������������������������������������
+0x3c40: ���¼üļżƼǼȼɼʼ˼̼ͼμϼмѼҼӼԼռּ׼ؼټڼۼܼݼ޼�
+0x3c60: ��������������������������������
+0x3d20: ��������������������������������������������������������������
+0x3d40: ���½ýĽŽƽǽȽɽʽ˽̽ͽνϽнѽҽӽԽսֽ׽ؽٽڽ۽ܽݽ޽�
+0x3d60: ��������������������������������
+0x3e20: ��������������������������������������������������������������
+0x3e40: ���¾þľžƾǾȾɾʾ˾̾;ξϾоѾҾӾԾվ־׾ؾپھ۾ܾݾ޾�
+0x3e60: ��������������������������������
+0x3f20: ��������������������������������������������������������������
+0x3f40: ���¿ÿĿſƿǿȿɿʿ˿̿ͿοϿпѿҿӿԿտֿ׿ؿٿڿۿܿݿ޿�
+0x3f60: ��������������������������������
+0x4020: �������������������������������
+0x4040: ����������������������������������������������������������������
+0x4060: ��������������������������������������������������������������
+0x4120: �������������������������������
+0x4140: ����������������������������������������������������������������
+0x4160: ��������������������������������������������������������������
+0x4220: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿
+0x4240: ����������������������������������������������������������������
+0x4260: ��������������������������������������������������������������
+0x4320: áâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
+0x4340: ����������������������������������������������������������������
+0x4360: ��������������������������������������������������������������
+0x4420: ġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿ
+0x4440: ����������������������������������������������������������������
+0x4460: ��������������������������������������������������������������
+0x4520: šŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ
View
100 t/Bric/Util/CharTrans/euc-kr.utf
@@ -0,0 +1,100 @@
+0x2120:  、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×
+0x2140: ÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆
+0x2160: □■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬
+0x2220: ⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧
+0x2240: ♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜
+0x2260: №㏇™㏂㏘℡€®
+0x2320: !"#$%&'()*+,-./0123456789:;<=>?
+0x2340: @ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_
+0x2360: `abcdefghijklmnopqrstuvwxyz{|} ̄
+0x2420: ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏ
+0x2440: ㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯ
+0x2460: ㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ
+0x2520: ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ
+0x2540: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
+0x2560: αβγδεζηθικλμνξοπρστυφχψω
+0x2620: ─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸
+0x2640: ╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅
+0x2660: ╆╇╈╉╊
+0x2720: ㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰
+0x2740: ㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖
+0x2760: ㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆
+0x2820: ÆЪĦ IJ ĿŁØŒºÞŦŊ ㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮
+0x2840: ㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢ