> Tatsuo Ishii wrote:

> > > > It was made to cope with encoding such as an Asian bloc in 7.2Beta2.
> > > >
> > > > Added ServerEncoding
> > > >         Korean (JOHAB), Thai (WIN874),
> > > >         Vietnamese (TCVN), Arabic (WIN1256)
> > > >
> > > > Added ClientEncoding
> > > >         Simplified Chinese (GBK), Korean (UHC)
> > > >
> > > >
> > > >
> http://www.sankyo-unyu.co.jp/Pool/postgresql-7.2b2.newencoding.diff.tar.gz
> > > > (608K)
> > >
> > > Looks good.  I need some people to review this for me.
> >
> > For me they look good too. The only missing part is a
> > documentation. I will ask him to write it up. If he couldn't, I will
> > do it for him.
> > > The diff is 3mb
> > > but appears to address only additions to multibyte.  I have attached a
> > > list of files it modifies.  Also, look at the sizes of the mb/
> > > directory.  It is getting large:
> > >
> > >   4       ./CVS
> > >   6       ./Unicode/CVS
> > >   3433    ./Unicode
> > >   6197    .
> >
> > Yes. We definitely need the on-the-fly encoding addition capability:
> > i.e. CREATE CHRACTER SET in the future...
> > --
> > Tatsuo Ishii
> >
> >

Address chainge.

http://www.sankyo-unyu.co.jp/Pool/postgresql-7.2.newencoding.diff.gz

Add PsqlODBC and document ...etc patch.

Eiji Tokuya
This commit is contained in:
Bruce Momjian 2002-03-05 05:52:50 +00:00
parent 03194432de
commit a8bd7e1c6e
17 changed files with 5959 additions and 4911 deletions

5
configure vendored
View file

@ -895,14 +895,15 @@ if test x"${enable_multibyte+set}" = xset; then
enable_multibyte=yes
case $enableval in
SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|LATIN6|LATIN7|LATIN8|LATIN9|LATIN10|KOI8|WIN|ALT|ISO_8859_5|ISO_8859_6|ISO_8859_7|ISO_8859_8)
SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|JOHAB|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|LATIN6|LATIN7|LATIN8|LATIN9|LATIN10|WIN1256|TCVN|WIN874|KOI8|WIN|ALT|ISO_8859_5|ISO_8859_6|ISO_8859_7|ISO_8859_8)
MULTIBYTE=$enableval;;
*)
{ echo "configure: error: argument to --enable-multibyte must be one of:
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW,
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, JOHAB,
UNICODE, MULE_INTERNAL,
LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
LATIN6, LATIN7, LATIN8, LATIN9, LATIN10,
WIN1256, TCVN, WIN874,
KOI8, WIN, ALT,
ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8
Or do not specify an argument to the option to use the default." 1>&2; exit 1; };;

View file

@ -179,16 +179,16 @@ PGAC_ARG_OPTARG(enable, multibyte, [ --enable-multibyte enable multibyte c
[MULTIBYTE=SQL_ASCII],
[
case $enableval in
SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|LATIN6|LATIN7|LATIN8|LATIN9|LATIN10|KOI8|WIN|ALT|ISO_8859_5|ISO_8859_6|ISO_8859_7|ISO_8859_8)
SQL_ASCII|EUC_JP|EUC_CN|EUC_KR|EUC_TW|JOHAB|UNICODE|MULE_INTERNAL|LATIN1|LATIN2|LATIN3|LATIN4|LATIN5|LATIN6|LATIN7|LATIN8|LATIN9|LATIN10|WIN1256|TCVN|WIN874|KOI8|WIN|ALT|ISO_8859_5|ISO_8859_6|ISO_8859_7|ISO_8859_8)
MULTIBYTE=$enableval;;
*)
AC_MSG_ERROR(
[argument to --enable-multibyte must be one of:
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW,
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, JOHAB,
UNICODE, MULE_INTERNAL,
LATIN1, LATIN2, LATIN3, LATIN4, LATIN5,
LATIN6, LATIN7, LATIN8, LATIN9, LATIN10,
KOI8, WIN, ALT,
WIN1256, TCVN, WIN874, KOI8, WIN, ALT,
ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8
Or do not specify an argument to the option to use the default.]);;
esac

View file

@ -45,6 +45,7 @@ PostgreSQL 7.2 multi-byte (MB) support README 2001/9/18 $B:n@.(B
EUC_CN GB $B$r%Y!<%9$K$7$?CfJ8(BEUC$B!%(Bcode set 2 $B$O(B
SS2+2$B%P%$%H%3!<%I(B = 3$B%P%$%HI=8=$G$9!%(B
EUC_KR $B4Z9q8l(B EUC$B!%(B
JOHAB $B%O%s%0%k%Y!<%9$N4Z9q8l(BEUC.
EUC_TW $BBfOQ$N(B EUC$B!%(Bcode set 2 $B$O(B
SS2+$BLLHV9f(B+2$B%P%$%H%3!<%I(B = 4$B%P%$%HI=8=$G$9!%(B
UNICODE UTF-8$B!%$?$@$7%5%]!<%H$9$k$N$O(B UCS-2 $B$NHO0O!$(B
@ -56,6 +57,9 @@ PostgreSQL 7.2 multi-byte (MB) support README 2001/9/18 $B:n@.(B
$B%-%j%kJ8;z(B KOI8(KOI8-R), WIN(CP1251), ALT(CP866)$B$r%5%]!<%H(B
$B$7$F$$$^$9!%$b$A$m$s(B ISO 8859-5 $B$b;HMQ2DG=$G$9!%(B
$B$3$N>l9g!$(B"LATIN5" $B$H$7$F;XDj$7$F2<$5$$!%(B
WIN1256 $B%"%i%V=t9q8l(BWindows$BMQ%(%s%3!<%G%#%s%0(B.
TCVN $B%Y%H%J%`8l(B."ABC"$B$d(B"VSCII"$B$b;HMQ2DG=(B.
WIN874 $B%?%$8l(B.
$BA*Br$NL\0B$H$7$F$O!$1Q8l$HF|K\8l$7$+;H$o$J$$>l9g$O(B EUC_JP($BF1MM$K!$Cf(B
$B9q8l$7$+;H$o$J$$>l9g$O(B EUC_CN... $B$J$I$H$J$j$^$9(B)$B!$$=$NB>$N8@8l$b;H$$$?(B
@ -168,19 +172,37 @@ $ psql -l
EUC_TW EUC_TW, BIG5, UNICODE
EUC_CN EUC_CN, UNICODE
EUC_KR EUC_KR, UNICODE
JOHAB JOHAB, UNICODE
LATIN1,3,4 LATIN1,3,4, UNICODE
LATIN2 LATIN2, WIN1250, UNICODE
LATIN5 LATIN5, WIN, ALT, UNICODE
LATIN6,7,8,9,10 LATIN6,7,8,9,10, UNICODE
ISO_8859_5,6,7,8 ISO_8859_5,6,7,8, UNICODE
WIN1256 WIN1256, UNICODE
TCVN TCVN, UNICODE
WIN874 WIN874, UNICODE
MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN,
EUC_TW, BIG5, LATIN1$B$+$i(B5,
WIN, ALT, WIN1250
UNICODE EUC_JP, SJIS, EUC_KR, EUC_CN,
EUC_TW, BIG5, LATIN1$B$+$i(B5,
WIN, ALT, WIN1250
UNICODE EUC_JP, SJIS, EUC_KR, UHC,
EUC_CN, GBK, EUC_TW, BIG5,
LATIN1$B$+$i(B10, ISO_8859_5$B$+$i(B8,
WIN, ALT, WIN1250, WIN1256,
TCVN, WIN874, JOHAB
----------------------------------------------------------------
$B%P%C%/%(%s%I$H%U%m%s%H%(%s%I$N%(%s%3!<%G%#%s%0$,0[$J$k>l9g!$$=$N$3$H(B
@ -390,12 +412,28 @@ o set client_encoding $B%3%^%s%I$r;H$&J}K!(B
ISO 8859-3 8859-3.TXT
ISO 8859-4 8859-4.TXT
ISO 8859-5 8859-5.TXT
EUC_JP JIS0201.TXT, JIS0208.TXT, JIS0212.TXT
ISO 8859-6 8859-6.TXT
ISO 8859-7 8859-7.TXT
ISO 8859-8 8859-8.TXT
ISO 8859-9 8859-9.TXT
ISO 8859-10 8859-10.TXT
ISO 8859-13 8859-13.TXT
ISO 8859-14 8859-14.TXT
ISO 8859-15 8859-15.TXT
ISO 8859-16 8859-16.TXT
EUC_JP JIS0201.TXT, JIS0208.TXT, JIS0212.TXT,
CP932.TXT, sjis.map
SJIS CP932.TXT
EUC_CN GB2312.TXT
EUC_KR OLD5601.TXT
GBK CP936.TXT
EUC_KR KSX1001.TXT
UHC CP949.TXT
JOHAB JOHAB.TXT
EUC_TW CNS11643.TXT
Big5 BIG5.TXT
WIN1256 CP1256.TXT
TCVN CP1258.TXT
WIN874 CP874.TXT
============================================================
$B<U<-!'(B

View file

@ -1,4 +1,4 @@
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v 2.21 2002/01/20 22:19:55 petere Exp $ -->
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v 2.22 2002/03/05 05:52:42 momjian Exp $ -->
<chapter id="charset">
<title>Localization</>
@ -370,6 +370,10 @@ perl: warning: Falling back to the standard locale ("C").
<entry><literal>EUC_KR</literal></entry>
<entry>Korean <acronym>EUC</></entry>
</row>
<row>
<entry><literal>JOHAB</literal></entry>
<entry>Korean <acronym>EUC</> (Hangle base)</entry>
</row>
<row>
<entry><literal>EUC_TW</literal></entry>
<entry>Taiwan <acronym>EUC</acronym></entry>
@ -450,6 +454,18 @@ perl: warning: Falling back to the standard locale ("C").
<entry><literal>ALT</literal></entry>
<entry>Windows CP866</entry>
</row>
<row>
<entry><literal>WIN1256</literal></entry>
<entry>Arabic Windows CP1256</entry>
</row>
<row>
<entry><literal>TCVN</literal></entry>
<entry>Vietnamese TCVN-5712(Windows CP1258)</entry>
</row>
<row>
<entry><literal>WIN874</literal></entry>
<entry>Thai Windows CP874</entry>
</row>
</tbody>
</tgroup>
</table>
@ -580,6 +596,21 @@ $ <userinput>psql -l</userinput>
<literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
</entry>
</row>
<row>
<entry><literal>EUC_CN</literal></entry>
<entry><literal>EUC_CN</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
</entry>
</row>
<row>
<entry><literal>EUC_KR</literal></entry>
<entry><literal>EUC_KR</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
</entry>
</row>
<row>
<entry><literal>JOHAB</literal></entry>
<entry><literal>JOHAB</literal>, <literal>UNICODE</literal>
</entry>
</row>
<row>
<entry><literal>EUC_TW</literal></entry>
<entry><literal>EUC_TW</literal>, <literal>BIG5</literal>,
@ -682,7 +713,8 @@ $ <userinput>psql -l</userinput>
<entry><literal>UNICODE</literal></entry>
<entry>
<literal>EUC_JP</literal>, <literal>SJIS</literal>,
<literal>EUC_KR</literal>, <literal>EUC_CN</literal>,
<literal>EUC_KR</literal>, <literal>UHC</literal>, <literal>JOHAB</literal>,
<literal>EUC_CN</literal>, <literal>GBK</literal>,
<literal>EUC_TW</literal>, <literal>BIG5</literal>,
<literal>LATIN1</literal> to <literal>LATIN10</literal>,
<literal>ISO_8859_5</literal>,
@ -690,7 +722,10 @@ $ <userinput>psql -l</userinput>
<literal>ISO_8859_7</literal>,
<literal>ISO_8859_8</literal>,
<literal>WIN</literal>, <literal>ALT</literal>,
<literal>KOI8</literal>
<literal>KOI8</literal>,
<literal>WIN1256</literal>,
<literal>TCVN</literal>,
<literal>WIN874</literal>,
</entry>
</row>
<row>
@ -720,6 +755,24 @@ $ <userinput>psql -l</userinput>
<literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
</entry>
</row>
<row>
<entry><literal>WIN1256</literal></entry>
<entry><literal>WIN1256</literal>,
<literal>UNICODE</literal>
</entry>
</row>
<row>
<entry><literal>TCVN</literal></entry>
<entry><literal>TCVN</literal>,
<literal>UNICODE</literal>
</entry>
</row>
<row>
<entry><literal>WIN874</literal></entry>
<entry><literal>WIN874</literal>,
<literal>UNICODE</literal>
</entry>
</row>
</tbody>
</tgroup>
</table>

View file

@ -2,7 +2,7 @@
#
# Copyright 2001 by PostgreSQL Global Development Group
#
# $Id: UCS_to_EUC_KR.pl,v 1.2 2001/04/16 06:10:18 ishii Exp $
# $Id: UCS_to_EUC_KR.pl,v 1.3 2002/03/05 05:52:45 momjian Exp $
#
# Generate UTF-8 <--> EUC_KR code conversion tables from
# map files provided by Unicode organization.
@ -20,7 +20,7 @@ require "ucs2utf.pl";
# first generate UTF-8 --> EUC_KR table
$in_file = "OLD5601.TXT";
$in_file = "KSX1001.TXT";
open( FILE, $in_file ) || die( "cannot open $in_file" );

View file

@ -1,4 +1,4 @@
static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
static pg_local_to_utf LUmapEUC_JP[ 13477 ] = {
{0x8ea1, 0xefbda1},
{0x8ea2, 0xefbda2},
{0x8ea3, 0xefbda3},
@ -93,8 +93,9 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0xa1bd, 0xe28095},
{0xa1be, 0xe28090},
{0xa1bf, 0xefbc8f},
{0xa1c1, 0xe3809c},
{0xa1c2, 0xe28096},
{0xa1c0, 0xefbcbc},
{0xa1c1, 0xefbd9e},
{0xa1c2, 0xe288a5},
{0xa1c3, 0xefbd9c},
{0xa1c4, 0xe280a6},
{0xa1c5, 0xe280a5},
@ -121,7 +122,7 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0xa1da, 0xe38090},
{0xa1db, 0xe38091},
{0xa1dc, 0xefbc8b},
{0xa1dd, 0xe28892},
{0xa1dd, 0xefbc8d},
{0xa1de, 0xc2b1},
{0xa1df, 0xc397},
{0xa1e0, 0xc3b7},
@ -141,8 +142,8 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0xa1ee, 0xe28483},
{0xa1ef, 0xefbfa5},
{0xa1f0, 0xefbc84},
{0xa1f1, 0xc2a2},
{0xa1f2, 0xc2a3},
{0xa1f1, 0xefbfa0},
{0xa1f2, 0xefbfa1},
{0xa1f3, 0xefbc85},
{0xa1f4, 0xefbc83},
{0xa1f5, 0xefbc86},
@ -179,7 +180,7 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0xa2c1, 0xe288a9},
{0xa2ca, 0xe288a7},
{0xa2cb, 0xe288a8},
{0xa2cc, 0xc2ac},
{0xa2cc, 0xefbfa2},
{0xa2cd, 0xe28792},
{0xa2ce, 0xe28794},
{0xa2cf, 0xe28880},
@ -585,6 +586,89 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0xa8be, 0xe294a5},
{0xa8bf, 0xe294b8},
{0xa8c0, 0xe29582},
{0xada1, 0xe291a0},
{0xada2, 0xe291a1},
{0xada3, 0xe291a2},
{0xada4, 0xe291a3},
{0xada5, 0xe291a4},
{0xada6, 0xe291a5},
{0xada7, 0xe291a6},
{0xada8, 0xe291a7},
{0xada9, 0xe291a8},
{0xadaa, 0xe291a9},
{0xadab, 0xe291aa},
{0xadac, 0xe291ab},
{0xadad, 0xe291ac},
{0xadae, 0xe291ad},
{0xadaf, 0xe291ae},
{0xadb0, 0xe291af},
{0xadb1, 0xe291b0},
{0xadb2, 0xe291b1},
{0xadb3, 0xe291b2},
{0xadb4, 0xe291b3},
{0xadb5, 0xe285a0},
{0xadb6, 0xe285a1},
{0xadb7, 0xe285a2},
{0xadb8, 0xe285a3},
{0xadb9, 0xe285a4},
{0xadba, 0xe285a5},
{0xadbb, 0xe285a6},
{0xadbc, 0xe285a7},
{0xadbd, 0xe285a8},
{0xadbe, 0xe285a9},
{0xadc0, 0xe38d89},
{0xadc1, 0xe38c94},
{0xadc2, 0xe38ca2},
{0xadc3, 0xe38d8d},
{0xadc4, 0xe38c98},
{0xadc5, 0xe38ca7},
{0xadc6, 0xe38c83},
{0xadc7, 0xe38cb6},
{0xadc8, 0xe38d91},
{0xadc9, 0xe38d97},
{0xadca, 0xe38c8d},
{0xadcb, 0xe38ca6},
{0xadcc, 0xe38ca3},
{0xadcd, 0xe38cab},
{0xadce, 0xe38d8a},
{0xadcf, 0xe38cbb},
{0xadd0, 0xe38e9c},
{0xadd1, 0xe38e9d},
{0xadd2, 0xe38e9e},
{0xadd3, 0xe38e8e},
{0xadd4, 0xe38e8f},
{0xadd5, 0xe38f84},
{0xadd6, 0xe38ea1},
{0xaddf, 0xe38dbb},
{0xade0, 0xe3809d},
{0xade1, 0xe3809f},
{0xade2, 0xe28496},
{0xade3, 0xe38f8d},
{0xade4, 0xe284a1},
{0xade5, 0xe38aa4},
{0xade6, 0xe38aa5},
{0xade7, 0xe38aa6},
{0xade8, 0xe38aa7},
{0xade9, 0xe38aa8},
{0xadea, 0xe388b1},
{0xadeb, 0xe388b2},
{0xadec, 0xe388b9},
{0xaded, 0xe38dbe},
{0xadee, 0xe38dbd},
{0xadef, 0xe38dbc},
{0xadf0, 0xe28992},
{0xadf1, 0xe289a1},
{0xadf2, 0xe288ab},
{0xadf3, 0xe288ae},
{0xadf4, 0xe28891},
{0xadf5, 0xe2889a},
{0xadf6, 0xe28aa5},
{0xadf7, 0xe288a0},
{0xadf8, 0xe2889f},
{0xadf9, 0xe28abf},
{0xadfa, 0xe288b5},
{0xadfb, 0xe288a9},
{0xadfc, 0xe288aa},
{0xb0a1, 0xe4ba9c},
{0xb0a2, 0xe59496},
{0xb0a3, 0xe5a883},
@ -6951,7 +7035,7 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0x8fa2b8, 0xce84},
{0x8fa2b9, 0xce85},
{0x8fa2c2, 0xc2a1},
{0x8fa2c3, 0xc2a6},
{0x8fa2c3, 0xefbfa4},
{0x8fa2c4, 0xc2bf},
{0x8fa2eb, 0xc2ba},
{0x8fa2ec, 0xc2aa},
@ -13005,5 +13089,111 @@ static pg_local_to_utf LUmapEUC_JP[ 13007 ] = {
{0x8fede0, 0xe9bea1},
{0x8fede1, 0xe9bea2},
{0x8fede2, 0xe9bea3},
{0x8fede3, 0xe9bea5}
{0x8fede3, 0xe9bea5},
{0x8ff3f3, 0xe285b0},
{0x8ff3f4, 0xe285b1},
{0x8ff3f5, 0xe285b2},
{0x8ff3f6, 0xe285b3},
{0x8ff3f7, 0xe285b4},
{0x8ff3f8, 0xe285b5},
{0x8ff3f9, 0xe285b6},
{0x8ff3fa, 0xe285b7},
{0x8ff3fb, 0xe285b8},
{0x8ff3fc, 0xe285b9},
{0x8ff3fd, 0xe285a0},
{0x8ff3fe, 0xe285a1},
{0x8ff4a1, 0xe285a2},
{0x8ff4a2, 0xe285a3},
{0x8ff4a3, 0xe285a4},
{0x8ff4a4, 0xe285a5},
{0x8ff4a5, 0xe285a6},
{0x8ff4a6, 0xe285a7},
{0x8ff4a7, 0xe285a8},
{0x8ff4a8, 0xe285a9},
{0x8ff4a9, 0xefbc87},
{0x8ff4aa, 0xefbc82},
{0x8ff4ab, 0xe388b1},
{0x8ff4ac, 0xe28496},
{0x8ff4ad, 0xe284a1},
{0x8ff4ae, 0xe782bb},
{0x8ff4af, 0xe4bbbc},
{0x8ff4b0, 0xe583b4},
{0x8ff4b1, 0xe587ac},
{0x8ff4b2, 0xe58c87},
{0x8ff4b3, 0xe58ca4},
{0x8ff4b4, 0xefa88e},
{0x8ff4b5, 0xe5928a},
{0x8ff4b6, 0xe59d99},
{0x8ff4b7, 0xefa88f},
{0x8ff4b8, 0xefa890},
{0x8ff4b9, 0xe5a29e},
{0x8ff4ba, 0xe5afac},
{0x8ff4bb, 0xe5b3b5},
{0x8ff4bc, 0xe5b593},
{0x8ff4bd, 0xefa891},
{0x8ff4be, 0xe5beb7},
{0x8ff4bf, 0xe68285},
{0x8ff4c0, 0xe684a0},
{0x8ff4c1, 0xe6958e},
{0x8ff4c2, 0xe698bb},
{0x8ff4c3, 0xe699a5},
{0x8ff4c4, 0xefa892},
{0x8ff4c5, 0xefa4a9},
{0x8ff4c6, 0xe6a081},
{0x8ff4c7, 0xefa893},
{0x8ff4c8, 0xefa894},
{0x8ff4c9, 0xe6a9ab},
{0x8ff4ca, 0xe6aba2},
{0x8ff4cb, 0xe6b7b8},
{0x8ff4cc, 0xe6b7b2},
{0x8ff4cd, 0xe780a8},
{0x8ff4ce, 0xefa895},
{0x8ff4cf, 0xefa896},
{0x8ff4d0, 0xe79481},
{0x8ff4d1, 0xe79a82},
{0x8ff4d2, 0xe79a9e},
{0x8ff4d3, 0xefa897},
{0x8ff4d4, 0xe7a4b0},
{0x8ff4d5, 0xefa898},
{0x8ff4d6, 0xefa899},
{0x8ff4d7, 0xefa89a},
{0x8ff4d8, 0xefa89b},
{0x8ff4d9, 0xe7aba7},
{0x8ff4da, 0xefa89c},
{0x8ff4db, 0xefa89d},
{0x8ff4dc, 0xe7b6a0},
{0x8ff4dd, 0xe7b796},
{0x8ff4de, 0xefa89e},
{0x8ff4df, 0xe88da2},
{0x8ff4e0, 0xefa89f},
{0x8ff4e1, 0xe896b0},
{0x8ff4e2, 0xefa8a0},
{0x8ff4e3, 0xefa8a1},
{0x8ff4e4, 0xe8a087},
{0x8ff4e5, 0xefa8a2},
{0x8ff4e6, 0xe8adbf},
{0x8ff4e7, 0xe8b3b4},
{0x8ff4e8, 0xe8b5b6},
{0x8ff4e9, 0xefa8a3},
{0x8ff4ea, 0xefa8a4},
{0x8ff4eb, 0xefa8a5},
{0x8ff4ec, 0xe9839e},
{0x8ff4ed, 0xefa8a6},
{0x8ff4ee, 0xe98495},
{0x8ff4ef, 0xefa8a7},
{0x8ff4f0, 0xefa8a8},
{0x8ff4f1, 0xe99692},
{0x8ff4f2, 0xefa79c},
{0x8ff4f3, 0xefa8a9},
{0x8ff4f4, 0xe99cbb},
{0x8ff4f5, 0xe99d8d},
{0x8ff4f6, 0xe99d91},
{0x8ff4f7, 0xefa8aa},
{0x8ff4f8, 0xefa8ab},
{0x8ff4f9, 0xefa8ac},
{0x8ff4fa, 0xe9a69e},
{0x8ff4fb, 0xe9ab99},
{0x8ff4fc, 0xe9adb2},
{0x8ff4fd, 0xefa8ad},
{0x8ff4fe, 0xe9bb91},
};

File diff suppressed because it is too large Load diff

View file

@ -1,14 +1,11 @@
static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
static pg_utf_to_local ULmapEUC_JP[ 13175 ] = {
{0xc2a1, 0x8fa2c2},
{0xc2a2, 0xa1f1},
{0xc2a3, 0xa1f2},
{0xc2a4, 0x8fa2f0},
{0xc2a6, 0x8fa2c3},
{0xc2a7, 0xa1f8},
{0xc2a8, 0xa1af},
{0xc2a9, 0x8fa2ed},
{0xc2aa, 0x8fa2ec},
{0xc2ac, 0xa2cc},
{0xc2ae, 0x8fa2ee},
{0xc2af, 0x8fa2b4},
{0xc2b0, 0xa1eb},
@ -389,7 +386,6 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xd19f, 0x8fa7fe},
{0xe28090, 0xa1be},
{0xe28095, 0xa1bd},
{0xe28096, 0xa1c2},
{0xe28098, 0xa1c6},
{0xe28099, 0xa1c7},
{0xe2809c, 0xa1c8},
@ -403,9 +399,30 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe280b3, 0xa1ed},
{0xe280bb, 0xa2a8},
{0xe28483, 0xa1ee},
{0xe28496, 0x8fa2f1},
{0xe28496, 0xade2},
{0xe284a1, 0xade4},
{0xe284a2, 0x8fa2ef},
{0xe284ab, 0xa2f2},
{0xe285a0, 0xadb5},
{0xe285a1, 0xadb6},
{0xe285a2, 0xadb7},
{0xe285a3, 0xadb8},
{0xe285a4, 0xadb9},
{0xe285a5, 0xadba},
{0xe285a6, 0xadbb},
{0xe285a7, 0xadbc},
{0xe285a8, 0xadbd},
{0xe285a9, 0xadbe},
{0xe285b0, 0x8ff3f3},
{0xe285b1, 0x8ff3f4},
{0xe285b2, 0x8ff3f5},
{0xe285b3, 0x8ff3f6},
{0xe285b4, 0x8ff3f7},
{0xe285b5, 0x8ff3f8},
{0xe285b6, 0x8ff3f9},
{0xe285b7, 0x8ff3fa},
{0xe285b8, 0x8ff3fb},
{0xe285b9, 0x8ff3fc},
{0xe28690, 0xa2ab},
{0xe28691, 0xa2ac},
{0xe28692, 0xa2aa},
@ -418,17 +435,20 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe28887, 0xa2e0},
{0xe28888, 0xa2ba},
{0xe2888b, 0xa2bb},
{0xe28892, 0xa1dd},
{0xe28891, 0xadf4},
{0xe2889a, 0xa2e5},
{0xe2889d, 0xa2e7},
{0xe2889e, 0xa1e7},
{0xe2889f, 0xadf8},
{0xe288a0, 0xa2dc},
{0xe288a5, 0xa1c2},
{0xe288a7, 0xa2ca},
{0xe288a8, 0xa2cb},
{0xe288a9, 0xa2c1},
{0xe288aa, 0xa2c0},
{0xe288ab, 0xa2e9},
{0xe288ac, 0xa2ea},
{0xe288ae, 0xadf3},
{0xe288b4, 0xa1e8},
{0xe288b5, 0xa2e8},
{0xe288bd, 0xa2e6},
@ -444,7 +464,28 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe28a86, 0xa2bc},
{0xe28a87, 0xa2bd},
{0xe28aa5, 0xa2dd},
{0xe28abf, 0xadf9},
{0xe28c92, 0xa2de},
{0xe291a0, 0xada1},
{0xe291a1, 0xada2},
{0xe291a2, 0xada3},
{0xe291a3, 0xada4},
{0xe291a4, 0xada5},
{0xe291a5, 0xada6},
{0xe291a6, 0xada7},
{0xe291a7, 0xada8},
{0xe291a8, 0xada9},
{0xe291a9, 0xadaa},
{0xe291aa, 0xadab},
{0xe291ab, 0xadac},
{0xe291ac, 0xadad},
{0xe291ad, 0xadae},
{0xe291ae, 0xadaf},
{0xe291af, 0xadb0},
{0xe291b0, 0xadb1},
{0xe291b1, 0xadb2},
{0xe291b2, 0xadb3},
{0xe291b3, 0xadb4},
{0xe29480, 0xa8a1},
{0xe29481, 0xa8ac},
{0xe29482, 0xa8a2},
@ -517,7 +558,8 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe38093, 0xa2ae},
{0xe38094, 0xa1cc},
{0xe38095, 0xa1cd},
{0xe3809c, 0xa1c1},
{0xe3809d, 0xade0},
{0xe3809f, 0xade1},
{0xe38181, 0xa4a1},
{0xe38182, 0xa4a2},
{0xe38183, 0xa4a3},
@ -695,6 +737,42 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe383bc, 0xa1bc},
{0xe383bd, 0xa1b3},
{0xe383be, 0xa1b4},
{0xe388b1, 0xadea},
{0xe388b2, 0xadeb},
{0xe388b9, 0xadec},
{0xe38aa4, 0xade5},
{0xe38aa5, 0xade6},
{0xe38aa6, 0xade7},
{0xe38aa7, 0xade8},
{0xe38aa8, 0xade9},
{0xe38c83, 0xadc6},
{0xe38c8d, 0xadca},
{0xe38c94, 0xadc1},
{0xe38c98, 0xadc4},
{0xe38ca2, 0xadc2},
{0xe38ca3, 0xadcc},
{0xe38ca6, 0xadcb},
{0xe38ca7, 0xadc5},
{0xe38cab, 0xadcd},
{0xe38cb6, 0xadc7},
{0xe38cbb, 0xadcf},
{0xe38d89, 0xadc0},
{0xe38d8a, 0xadce},
{0xe38d8d, 0xadc3},
{0xe38d91, 0xadc8},
{0xe38d97, 0xadc9},
{0xe38dbb, 0xaddf},
{0xe38dbc, 0xadef},
{0xe38dbd, 0xadee},
{0xe38dbe, 0xaded},
{0xe38e8e, 0xadd3},
{0xe38e8f, 0xadd4},
{0xe38e9c, 0xadd0},
{0xe38e9d, 0xadd1},
{0xe38e9e, 0xadd2},
{0xe38ea1, 0xadd6},
{0xe38f84, 0xadd5},
{0xe38f8d, 0xade3},
{0xe4b880, 0xb0ec},
{0xe4b881, 0xc3fa},
{0xe4b882, 0x8fb0a1},
@ -856,6 +934,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe4bbb6, 0xb7ef},
{0xe4bbb7, 0xd0c3},
{0xe4bbbb, 0xc7a4},
{0xe4bbbc, 0x8ff4af},
{0xe4bbbd, 0x8fb0cf},
{0xe4bbbe, 0x8fb0d0},
{0xe4bbbf, 0x8fb0d1},
@ -1202,6 +1281,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe583af, 0x8fb2c4},
{0xe583b1, 0x8fb2c5},
{0xe583b2, 0x8fb2d1},
{0xe583b4, 0x8ff4b0},
{0xe583b5, 0xd1ac},
{0xe583b6, 0x8fb2c6},
{0xe583b9, 0xd1ab},
@ -1377,6 +1457,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe587a7, 0xc2fc},
{0xe587a9, 0xd1de},
{0xe587aa, 0xc6e4},
{0xe587ac, 0x8ff4b1},
{0xe587ad, 0xd1df},
{0xe587ae, 0x8fb3ab},
{0xe587b0, 0xd1e0},
@ -1577,6 +1658,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe58c83, 0x8fb3fc},
{0xe58c85, 0xcaf1},
{0xe58c86, 0xd2b2},
{0xe58c87, 0x8ff4b2},
{0xe58c88, 0xd2b3},
{0xe58c8a, 0x8fb3fd},
{0xe58c8b, 0x8fb3fe},
@ -1600,6 +1682,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe58ca0, 0xbea2},
{0xe58ca1, 0xb6a9},
{0xe58ca3, 0xd2ba},
{0xe58ca4, 0x8ff4b3},
{0xe58ca5, 0x8fb4a9},
{0xe58ca7, 0x8fb4aa},
{0xe58ca8, 0x8fb4ab},
@ -1839,6 +1922,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe59286, 0xd2f6},
{0xe59288, 0x8fb5a4},
{0xe59289, 0x8fb5a5},
{0xe5928a, 0x8ff4b5},
{0xe5928b, 0xbaf0},
{0xe5928c, 0xcfc2},
{0xe5928d, 0x8fb5a6},
@ -2250,6 +2334,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe59d90, 0xbac1},
{0xe59d91, 0xb9a3},
{0xe59d92, 0x8fb7c0},
{0xe59d99, 0x8ff4b6},
{0xe59da1, 0xd4b3},
{0xe59da2, 0x8fb7c1},
{0xe59da4, 0xbaa5},
@ -2431,6 +2516,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe5a297, 0xc1fd},
{0xe5a29c, 0xc4c6},
{0xe5a29d, 0x8fb8c7},
{0xe5a29e, 0x8ff4b9},
{0xe5a29f, 0xd4d2},
{0xe5a2a0, 0x8fb8c8},
{0xe5a2a1, 0x8fb8c9},
@ -2915,6 +3001,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe5afa8, 0xdccd},
{0xe5afa9, 0xbfb3},
{0xe5afab, 0xd5ed},
{0xe5afac, 0x8ff4ba},
{0xe5afae, 0xcec0},
{0xe5afaf, 0x8fbae5},
{0xe5afb0, 0xd5ee},
@ -3067,6 +3154,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe5b3b1, 0x8fbbbf},
{0xe5b3b2, 0x8fbbc0},
{0xe5b3b4, 0x8fbbc1},
{0xe5b3b5, 0x8ff4bb},
{0xe5b3b6, 0xc5e7},
{0xe5b3ba, 0xd6b8},
{0xe5b3bb, 0xbdd4},
@ -3111,6 +3199,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe5b590, 0xcdf2},
{0xe5b591, 0x8fbbd5},
{0xe5b592, 0xd6c9},
{0xe5b593, 0x8ff4bc},
{0xe5b595, 0x8fbbd4},
{0xe5b599, 0x8fbbd6},
{0xe5b59c, 0xd6bf},
@ -3503,6 +3592,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe5beb1, 0x8fbdb6},
{0xe5beb3, 0xc6c1},
{0xe5beb4, 0xc4a7},
{0xe5beb7, 0x8ff4be},
{0xe5beb8, 0x8fbdb7},
{0xe5beb9, 0xc5b0},
{0xe5bebc, 0xd7d5},
@ -3634,6 +3724,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe68282, 0x8fbded},
{0xe68283, 0xd7fd},
{0xe68284, 0xd8a1},
{0xe68285, 0x8ff4bf},
{0xe68286, 0x8fbdee},
{0xe68288, 0x8fbdef},
{0xe68289, 0xbcbd},
@ -3749,6 +3840,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe6849c, 0x8fbec4},
{0xe6849e, 0x8fbec5},
{0xe6849f, 0xb4b6},
{0xe684a0, 0x8ff4c0},
{0xe684a1, 0xd8bb},
{0xe684a2, 0x8fbec6},
{0xe684a7, 0xd8c3},
@ -4402,6 +4494,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe69588, 0xdac3},
{0xe69589, 0x8fc1cc},
{0xe6958d, 0xdac6},
{0xe6958e, 0x8ff4c1},
{0xe6958f, 0xc9d2},
{0xe69590, 0x8fc1cd},
{0xe69591, 0xb5df},
@ -4560,6 +4653,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe698b6, 0xdae4},
{0xe698b7, 0x8fc2b0},
{0xe698b9, 0x8fc2af},
{0xe698bb, 0x8ff4c2},
{0xe698bc, 0xc3eb},
{0xe698bf, 0xdba6},
{0xe69980, 0x8fc2b1},
@ -4589,6 +4683,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe699a1, 0x8fc2be},
{0xe699a2, 0xdaf1},
{0xe699a4, 0xdaed},
{0xe699a5, 0x8ff4c3},
{0xe699a6, 0xb3a2},
{0xe699a7, 0xdaee},
{0xe699a8, 0xdaef},
@ -4861,6 +4956,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe69fbb, 0xbaba},
{0xe69fbe, 0xcbef},
{0xe69fbf, 0xb3c1},
{0xe6a081, 0x8ff4c6},
{0xe6a082, 0xc4ce},
{0xe6a083, 0xc6ca},
{0xe6a084, 0xb1c9},
@ -5248,6 +5344,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe6a9a6, 0xdcf5},
{0xe6a9a7, 0x8fc5b2},
{0xe6a9aa, 0x8fc5b3},
{0xe6a9ab, 0x8ff4c9},
{0xe6a9b1, 0x8fc5b4},
{0xe6a9b2, 0xdcef},
{0xe6a9b3, 0x8fc5b5},
@ -5309,6 +5406,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe6ab9d, 0x8fc5d4},
{0xe6ab9e, 0xdda9},
{0xe6ab9f, 0xddab},
{0xe6aba2, 0x8ff4ca},
{0xe6aba4, 0x8fc5d5},
{0xe6aba7, 0x8fc5d6},
{0xe6aba8, 0xc8a7},
@ -5756,11 +5854,13 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe6b7af, 0x8fc7e2},
{0xe6b7b0, 0x8fc7e3},
{0xe6b7b1, 0xbfbc},
{0xe6b7b2, 0x8ff4cc},
{0xe6b7b3, 0xbddf},
{0xe6b7b4, 0x8fc7e4},
{0xe6b7b5, 0xcaa5},
{0xe6b7b6, 0x8fc7e5},
{0xe6b7b7, 0xbaae},
{0xe6b7b8, 0x8ff4cb},
{0xe6b7b9, 0xdebb},
{0xe6b7ba, 0xdec9},
{0xe6b7bb, 0xc5ba},
@ -6070,6 +6170,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe780a3, 0x8fc9b1},
{0xe780a6, 0xc3f5},
{0xe780a7, 0xc2ed},
{0xe780a8, 0x8ff4cd},
{0xe780ac, 0xc0a5},
{0xe780af, 0x8fc9b2},
{0xe780b0, 0xdfd0},
@ -6135,6 +6236,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe782b8, 0xdfda},
{0xe782b9, 0xc5c0},
{0xe782ba, 0xb0d9},
{0xe782bb, 0x8ff4ae},
{0xe78388, 0xcef5},
{0xe7838a, 0x8fc9d8},
{0xe7838b, 0xdfde},
@ -6708,6 +6810,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe793bb, 0x8fccfb},
{0xe793bc, 0x8fccfc},
{0xe793bf, 0x8fccfd},
{0xe79481, 0x8ff4d0},
{0xe79483, 0xe1ac},
{0xe79484, 0xe1ab},
{0xe79485, 0xe1ad},
@ -6972,6 +7075,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe799be, 0xc9b4},
{0xe79a80, 0xe2a5},
{0xe79a81, 0x8fceb5},
{0xe79a82, 0x8ff4d1},
{0xe79a83, 0xe2a6},
{0xe79a84, 0xc5aa},
{0xe79a85, 0x8fceb6},
@ -6991,6 +7095,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe79a9b, 0x8fceba},
{0xe79a9c, 0x8fcebb},
{0xe79a9d, 0x8fcebc},
{0xe79a9e, 0x8ff4d2},
{0xe79a9f, 0x8fcebd},
{0xe79aa0, 0x8fcebe},
{0xe79aa2, 0x8fcebf},
@ -7353,6 +7458,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe7a4ab, 0xe3aa},
{0xe7a4ac, 0xe3a9},
{0xe7a4ad, 0x8fd0c7},
{0xe7a4b0, 0x8ff4d4},
{0xe7a4b1, 0x8fd0c8},
{0xe7a4b4, 0x8fd0c9},
{0xe7a4b5, 0x8fd0ca},
@ -7630,6 +7736,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe7aba3, 0xbdd7},
{0xe7aba5, 0xc6b8},
{0xe7aba6, 0xe3f0},
{0xe7aba7, 0x8ff4d9},
{0xe7aba8, 0x8fd1ea},
{0xe7aba9, 0x8fd1eb},
{0xe7abaa, 0xc3a8},
@ -8084,6 +8191,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe7b69d, 0x8fd3fe},
{0xe7b69e, 0x8fd4a1},
{0xe7b69f, 0xe5c6},
{0xe7b6a0, 0x8ff4dc},
{0xe7b6a2, 0xe5c2},
{0xe7b6a3, 0xe5bc},
{0xe7b6a6, 0x8fd4a2},
@ -8124,6 +8232,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe7b791, 0xced0},
{0xe7b792, 0xbdef},
{0xe7b795, 0xe5ee},
{0xe7b796, 0x8ff4dd},
{0xe7b797, 0x8fd4b1},
{0xe7b798, 0xe5c8},
{0xe7b799, 0x8fd4b2},
@ -8925,6 +9034,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe88d96, 0x8fd7fb},
{0xe88d97, 0x8fd7fc},
{0xe88d98, 0xc1f1},
{0xe88da2, 0x8ff4df},
{0xe88db0, 0x8fd7fd},
{0xe88db3, 0xe8ba},
{0xe88db5, 0xe8bb},
@ -9262,6 +9372,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe896ad, 0x8fd9f4},
{0xe896ae, 0xccf9},
{0xe896af, 0xbdf2},
{0xe896b0, 0x8ff4e1},
{0xe896b4, 0x8fd9e7},
{0xe896b6, 0x8fd9e8},
{0xe896b7, 0x8fd9e9},
@ -9600,6 +9711,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe8a083, 0x8fdbe9},
{0xe8a085, 0xeaa4},
{0xe8a086, 0x8fdbea},
{0xe8a087, 0x8ff4e4},
{0xe8a089, 0x8fdbeb},
{0xe8a08a, 0x8fdbec},
{0xe8a08b, 0x8fdbed},
@ -10164,6 +10276,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe8adbc, 0x8fded5},
{0xe8adbd, 0xeca5},
{0xe8adbe, 0x8fded6},
{0xe8adbf, 0x8ff4e6},
{0xe8ae80, 0xeca6},
{0xe8ae81, 0x8fded7},
{0xe8ae83, 0xbbbe},
@ -10319,6 +10432,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe8b3af, 0x8fdfb8},
{0xe8b3b0, 0x8fdfb9},
{0xe8b3b2, 0x8fdfba},
{0xe8b3b4, 0x8ff4e7},
{0xe8b3b5, 0x8fdfbb},
{0xe8b3b7, 0x8fdfbc},
{0xe8b3b8, 0x8fdfbd},
@ -10359,6 +10473,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe8b5b1, 0xece1},
{0xe8b5b3, 0xece2},
{0xe8b5b4, 0xc9eb},
{0xe8b5b6, 0x8ff4e8},
{0xe8b5b7, 0xb5af},
{0xe8b5bf, 0x8fdfca},
{0xe8b681, 0xece3},
@ -10882,6 +10997,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9839b, 0xeebe},
{0xe9839c, 0x8fe2a9},
{0xe9839d, 0x8fe2aa},
{0xe9839e, 0x8ff4ec},
{0xe9839f, 0x8fe2ab},
{0xe983a1, 0xb7b4},
{0xe983a2, 0xeebb},
@ -10909,6 +11025,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe98490, 0x8fe2bb},
{0xe98492, 0xeec0},
{0xe98494, 0x8fe2bc},
{0xe98495, 0x8ff4ee},
{0xe98496, 0x8fe2bd},
{0xe98497, 0x8fe2be},
{0xe98498, 0x8fe2bf},
@ -11482,6 +11599,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9968e, 0x8fe6a6},
{0xe9968f, 0xb1bc},
{0xe99691, 0xb4d7},
{0xe99692, 0x8ff4f1},
{0xe99693, 0xb4d6},
{0xe99694, 0xefdc},
{0xe99696, 0xefdd},
@ -11730,6 +11848,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe99cb3, 0x8fe7ac},
{0xe99cb8, 0xdbb1},
{0xe99cb9, 0xf0c8},
{0xe99cbb, 0x8ff4f4},
{0xe99cbd, 0xf0c9},
{0xe99cbe, 0xf0ca},
{0xe99d81, 0x8fe7ad},
@ -11740,8 +11859,10 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe99d88, 0xf0cd},
{0xe99d89, 0xf0cf},
{0xe99d8a, 0x8fe7af},
{0xe99d8d, 0x8ff4f5},
{0xe99d8e, 0x8fe7b0},
{0xe99d8f, 0x8fe7b1},
{0xe99d91, 0x8ff4f6},
{0xe99d92, 0xc0c4},
{0xe99d95, 0x8fe7b2},
{0xe99d96, 0xccf7},
@ -12057,6 +12178,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9a699, 0xb9e1},
{0xe9a69b, 0x8fe8f7},
{0xe9a69d, 0x8fe8f8},
{0xe9a69e, 0x8ff4fa},
{0xe9a69f, 0x8fe8f9},
{0xe9a6a5, 0xf1c6},
{0xe9a6a6, 0x8fe8fa},
@ -12207,6 +12329,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9ab96, 0x8fe9ea},
{0xe9ab97, 0x8fe9eb},
{0xe9ab98, 0xb9e2},
{0xe9ab99, 0x8ff4fb},
{0xe9ab9b, 0x8fe9ec},
{0xe9ab9c, 0x8fe9ed},
{0xe9ab9e, 0xf1f4},
@ -12313,6 +12436,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9adad, 0x8feaca},
{0xe9adae, 0x8feacb},
{0xe9adaf, 0xcfa5},
{0xe9adb2, 0x8ff4fc},
{0xe9adb3, 0x8feacc},
{0xe9adb4, 0xf2b7},
{0xe9adb5, 0x8feacd},
@ -12722,6 +12846,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9bb8e, 0xf3d5},
{0xe9bb8f, 0xf3d6},
{0xe9bb90, 0xf3d7},
{0xe9bb91, 0x8ff4fe},
{0xe9bb92, 0xb9f5},
{0xe9bb94, 0xf3d8},
{0xe9bb95, 0x8fecf4},
@ -12852,16 +12977,53 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xe9bea2, 0x8fede1},
{0xe9bea3, 0x8fede2},
{0xe9bea5, 0x8fede3},
{0xefa4a9, 0x8ff4c5},
{0xefa79c, 0x8ff4f2},
{0xefa88e, 0x8ff4b4},
{0xefa88f, 0x8ff4b7},
{0xefa890, 0x8ff4b8},
{0xefa891, 0x8ff4bd},
{0xefa892, 0x8ff4c4},
{0xefa893, 0x8ff4c7},
{0xefa894, 0x8ff4c8},
{0xefa895, 0x8ff4ce},
{0xefa896, 0x8ff4cf},
{0xefa897, 0x8ff4d3},
{0xefa898, 0x8ff4d5},
{0xefa899, 0x8ff4d6},
{0xefa89a, 0x8ff4d7},
{0xefa89b, 0x8ff4d8},
{0xefa89c, 0x8ff4da},
{0xefa89d, 0x8ff4db},
{0xefa89e, 0x8ff4de},
{0xefa89f, 0x8ff4e0},
{0xefa8a0, 0x8ff4e2},
{0xefa8a1, 0x8ff4e3},
{0xefa8a2, 0x8ff4e5},
{0xefa8a3, 0x8ff4e9},
{0xefa8a4, 0x8ff4ea},
{0xefa8a5, 0x8ff4eb},
{0xefa8a6, 0x8ff4ed},
{0xefa8a7, 0x8ff4ef},
{0xefa8a8, 0x8ff4f0},
{0xefa8a9, 0x8ff4f3},
{0xefa8aa, 0x8ff4f7},
{0xefa8ab, 0x8ff4f8},
{0xefa8ac, 0x8ff4f9},
{0xefa8ad, 0x8ff4fd},
{0xefbc81, 0xa1aa},
{0xefbc82, 0x8ff4aa},
{0xefbc83, 0xa1f4},
{0xefbc84, 0xa1f0},
{0xefbc85, 0xa1f3},
{0xefbc86, 0xa1f5},
{0xefbc87, 0x8ff4a9},
{0xefbc88, 0xa1ca},
{0xefbc89, 0xa1cb},
{0xefbc8a, 0xa1f6},
{0xefbc8b, 0xa1dc},
{0xefbc8c, 0xa1a4},
{0xefbc8d, 0xa1dd},
{0xefbc8e, 0xa1a5},
{0xefbc8f, 0xa1bf},
{0xefbc90, 0xa3b0},
@ -12908,6 +13070,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xefbcb9, 0xa3d9},
{0xefbcba, 0xa3da},
{0xefbcbb, 0xa1ce},
{0xefbcbc, 0xa1c0},
{0xefbcbd, 0xa1cf},
{0xefbcbe, 0xa1b0},
{0xefbcbf, 0xa1b2},
@ -12941,6 +13104,7 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xefbd9b, 0xa1d0},
{0xefbd9c, 0xa1c3},
{0xefbd9d, 0xa1d1},
{0xefbd9e, 0xa1c1},
{0xefbda1, 0x8ea1},
{0xefbda2, 0x8ea2},
{0xefbda3, 0x8ea3},
@ -13004,6 +13168,10 @@ static pg_utf_to_local ULmapEUC_JP[ 13007 ] = {
{0xefbe9d, 0x8edd},
{0xefbe9e, 0x8ede},
{0xefbe9f, 0x8edf},
{0xefbfa0, 0xa1f1},
{0xefbfa1, 0xa1f2},
{0xefbfa2, 0xa2cc},
{0xefbfa3, 0xa1b1},
{0xefbfa4, 0x8fa2c3},
{0xefbfa5, 0xa1ef}
};

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,11 @@
static pg_utf_to_local ULmapSJIS[ 7389 ] = {
static pg_utf_to_local ULmapSJIS[ 7398 ] = {
{0xc19c, 0x815f},
{0xc2a2, 0x8191},
{0xc2a3, 0x8192},
{0xc2a5, 0x5c},
{0xc2a7, 0x8198},
{0xc2a8, 0x814e},
{0xc2ac, 0x81ca},
{0xc2b0, 0x818b},
{0xc2b1, 0x817d},
{0xc2b4, 0x814c},
@ -123,6 +128,7 @@ static pg_utf_to_local ULmapSJIS[ 7389 ] = {
{0xd191, 0x8476},
{0xe28090, 0x815d},
{0xe28095, 0x815c},
{0xe28096, 0x8161},
{0xe28098, 0x8165},
{0xe28099, 0x8166},
{0xe2809c, 0x8167},
@ -135,6 +141,7 @@ static pg_utf_to_local ULmapSJIS[ 7389 ] = {
{0xe280b2, 0x818c},
{0xe280b3, 0x818d},
{0xe280bb, 0x81a6},
{0xe280be, 0x7e},
{0xe28483, 0x818e},
{0xe28496, 0xfa59},
{0xe284a1, 0xfa5a},
@ -172,6 +179,7 @@ static pg_utf_to_local ULmapSJIS[ 7389 ] = {
{0xe28888, 0x81b8},
{0xe2888b, 0x81b9},
{0xe28891, 0x8794},
{0xe28892, 0x817c},
{0xe2889a, 0x81e3},
{0xe2889d, 0x81e5},
{0xe2889e, 0x8187},
@ -294,6 +302,7 @@ static pg_utf_to_local ULmapSJIS[ 7389 ] = {
{0xe38093, 0x81ac},
{0xe38094, 0x816b},
{0xe38095, 0x816c},
{0xe3809c, 0x8160},
{0xe3809d, 0x8780},
{0xe3809f, 0x8781},
{0xe38181, 0x829f},

View file

@ -6,7 +6,7 @@
* WIN1250 client encoding support contributed by Pavel Behal
* SJIS UDC (NEC selection IBM kanji) support contributed by Eiji Tokuya
*
* $Id: conv.c,v 1.35 2001/11/05 17:46:30 momjian Exp $
* $Id: conv.c,v 1.36 2002/03/05 05:52:43 momjian Exp $
*
*
*/
@ -56,6 +56,20 @@
#include "Unicode/sjis_to_utf8.map"
#include "Unicode/utf8_to_big5.map"
#include "Unicode/big5_to_utf8.map"
#include "Unicode/utf8_to_gbk.map"
#include "Unicode/gbk_to_utf8.map"
#include "Unicode/utf8_to_uhc.map"
#include "Unicode/uhc_to_utf8.map"
#include "Unicode/utf8_to_johab.map"
#include "Unicode/johab_to_utf8.map"
#include "Unicode/utf8_to_tcvn.map"
#include "Unicode/tcvn_to_utf8.map"
#include "Unicode/utf8_to_win1250.map"
#include "Unicode/win1250_to_utf8.map"
#include "Unicode/utf8_to_win1256.map"
#include "Unicode/win1256_to_utf8.map"
#include "Unicode/utf8_to_win874.map"
#include "Unicode/win874_to_utf8.map"
/* Cyrillic charset conversion */
#include "Unicode/alt_to_utf8.map"
#include "Unicode/koi8r_to_utf8.map"
@ -1666,6 +1680,153 @@ big5_to_utf(unsigned char *euc, unsigned char *utf, int len)
sizeof(LUmapBIG5) / sizeof(pg_local_to_utf), PG_BIG5, len);
}
/*
* UTF-8 ---> GBK
*/
static void
utf_to_gbk(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapGBK,
sizeof(ULmapGBK) / sizeof(pg_utf_to_local), len);
}
/*
* GBK ---> UTF-8
*/
static void
gbk_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapGBK,
sizeof(LUmapGBK) / sizeof(pg_local_to_utf), PG_GBK, len);
}
/*
* UTF-8 ---> UHC
*/
static void
utf_to_uhc(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapUHC,
sizeof(ULmapUHC) / sizeof(pg_utf_to_local), len);
}
/*
* UHC ---> UTF-8
*/
static void
uhc_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapUHC,
sizeof(LUmapUHC) / sizeof(pg_local_to_utf), PG_UHC, len);
}
/*
* UTF-8 ---> JOHAB
*/
static void
utf_to_johab(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapJOHAB,
sizeof(ULmapJOHAB) / sizeof(pg_utf_to_local), len);
}
/*
* JOHAB ---> UTF-8
*/
static void
johab_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapJOHAB,
sizeof(LUmapJOHAB) / sizeof(pg_local_to_utf), PG_JOHAB, len);
}
/*
* UTF-8 ---> WIN1250
*/
static void
utf_to_win1250(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapWIN1250,
sizeof(ULmapWIN1250) / sizeof(pg_utf_to_local), len);
}
/*
* WIN1250 ---> UTF-8
*/
static void
win1250_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapWIN1250,
sizeof(LUmapWIN1250) / sizeof(pg_local_to_utf), PG_WIN1250, len);
}
/*
* UTF-8 ---> WIN1256
*/
static void
utf_to_win1256(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapWIN1256,
sizeof(ULmapWIN1256) / sizeof(pg_utf_to_local), len);
}
/*
* WIN1256 ---> UTF-8
*/
static void
win1256_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapWIN1256,
sizeof(LUmapWIN1256) / sizeof(pg_local_to_utf), PG_WIN1256, len);
}
/*
* UTF-8 ---> TCVN
*/
static void
utf_to_tcvn(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapTCVN,
sizeof(ULmapTCVN) / sizeof(pg_utf_to_local), len);
}
/*
* TCVN ---> UTF-8
*/
static void
tcvn_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapTCVN,
sizeof(LUmapTCVN) / sizeof(pg_local_to_utf), PG_TCVN, len);
}
/*
* UTF-8 ---> WIN874
*/
static void
utf_to_win874(unsigned char *utf, unsigned char *euc, int len)
{
utf_to_local(utf, euc, ULmapWIN874,
sizeof(ULmapWIN874) / sizeof(pg_utf_to_local), len);
}
/*
* WIN874 ---> UTF-8
*/
static void
win874_to_utf(unsigned char *euc, unsigned char *utf, int len)
{
local_to_utf(euc, utf, LUmapWIN874,
sizeof(LUmapWIN874) / sizeof(pg_local_to_utf), PG_WIN874, len);
}
/* ----------
* Encoding conversion routines
*
@ -1689,6 +1850,9 @@ pg_enconv pg_enconv_tbl[] =
{
PG_EUC_TW, euc_tw2mic, mic2euc_tw, euc_tw_to_utf, utf_to_euc_tw
},
{
PG_JOHAB, 0, 0, johab_to_utf, utf_to_johab
},
{
PG_UTF8, 0, 0, 0, 0
},
@ -1725,6 +1889,15 @@ pg_enconv pg_enconv_tbl[] =
{
PG_LATIN10, 0, 0, iso8859_16_to_utf, utf_to_iso8859_16
},
{
PG_WIN1256, 0, 0, win1256_to_utf, utf_to_win1256
},
{
PG_TCVN, 0, 0, tcvn_to_utf, utf_to_tcvn
},
{
PG_WIN874, 0, 0, win874_to_utf, utf_to_win874
},
{
PG_KOI8R, koi8r2mic, mic2koi8r, KOI8R_to_utf, utf_to_KOI8R
},
@ -1754,7 +1927,13 @@ pg_enconv pg_enconv_tbl[] =
PG_BIG5, big52mic, mic2big5, big5_to_utf, utf_to_big5
},
{
PG_WIN1250, win12502mic, mic2win1250, 0, 0
PG_GBK, 0, 0, gbk_to_utf, utf_to_gbk
},
{
PG_UHC, 0, 0, uhc_to_utf, utf_to_uhc
},
{
PG_WIN1250, win12502mic, mic2win1250, win1250_to_utf, utf_to_win1250
},
};

View file

@ -2,7 +2,7 @@
* Encoding names and routines for work with it. All
* in this file is shared bedween FE and BE.
*
* $Id: encnames.c,v 1.6 2001/10/28 06:25:56 momjian Exp $
* $Id: encnames.c,v 1.7 2002/03/05 05:52:44 momjian Exp $
*/
#ifdef FRONTEND
#include "postgres_fe.h"
@ -36,6 +36,9 @@
*/
pg_encname pg_encname_tbl[] =
{
{
"abc", PG_TCVN
}, /* alias for TCVN */
{
"alt", PG_ALT
}, /* IBM866 */
@ -52,11 +55,16 @@ pg_encname pg_encname_tbl[] =
* for Japanese, stdandard OSF */
{
"euckr", PG_EUC_KR
}, /* EUC-KR; RFC1557,Choi */
}, /* EUC-KR; Extended Unix Code for
* Korean , KS X 1001 standard */
{
"euctw", PG_EUC_TW
}, /* EUC-TW; Extended Unix Code for
* traditional Chinese */
{
"gbk", PG_GBK
}, /* GBK; Chinese Windows CodePage 936
* simplified Chinese */
{
"iso88591", PG_LATIN1
}, /* ISO-8859-1; RFC1345,KXS2 */
@ -99,6 +107,10 @@ pg_encname pg_encname_tbl[] =
{
"iso88599", PG_LATIN5
}, /* ISO-8859-9; RFC1345,KXS2 */
{
"johab", PG_JOHAB
}, /* JOHAB; Extended Unix Code for
* simplified Chinese */
{
"koi8", PG_KOI8R
}, /* _dirty_ alias for KOI8-R (backward
@ -151,12 +163,24 @@ pg_encname pg_encname_tbl[] =
{
"sqlascii", PG_SQL_ASCII
},
{
"tcvn", PG_TCVN
}, /* TCVN; Vietnamese TCVN-5712 */
{
"tcvn5712",PG_TCVN
}, /* alias for TCVN */
{
"uhc", PG_UHC
}, /* UHC; Korean Windows CodePage 949 */
{
"unicode", PG_UTF8
}, /* alias for UTF-8 */
{
"utf8", PG_UTF8
}, /* UTF-8; RFC2279 */
{
"vscii", PG_TCVN
}, /* alias for TCVN */
{
"win", PG_WIN1251
}, /* _dirty_ alias for windows-1251
@ -167,12 +191,54 @@ pg_encname pg_encname_tbl[] =
{
"win1251", PG_WIN1251
}, /* alias for Windows-1251 */
{
"win1256", PG_WIN1256
}, /* alias for Windows-1256 */
{
"win1258", PG_TCVN
}, /* alias for Windows-1258 */
{
"win874", PG_WIN874
}, /* alias for Windows-874 */
{
"win932", PG_SJIS
}, /* alias for Shift_JIS */
{
"win936", PG_GBK
}, /* alias for GBK */
{
"win949", PG_UHC
}, /* alias for UHC */
{
"win950", PG_BIG5
}, /* alias for BIG5 */
{
"windows1250", PG_WIN1250
}, /* Windows-1251; Microsoft */
{
"windows1251", PG_WIN1251
}, /* Windows-1251; Microsoft */
{
"windows1256", PG_WIN1256
}, /* Windows-1256; Microsoft */
{
"windows1258", PG_TCVN
}, /* Windows-1258; Microsoft */
{
"windows874", PG_WIN874
}, /* Windows-874; Microsoft */
{
"windows932", PG_SJIS
}, /* alias for Shift_JIS */
{
"windows936", PG_GBK
}, /* alias for GBK */
{
"windows949", PG_UHC
}, /* alias for UHC */
{
"windows950", PG_BIG5
}, /* alias for BIG5 */
{
NULL, 0
@ -204,6 +270,9 @@ pg_enc2name pg_enc2name_tbl[] =
{
"EUC_TW", PG_EUC_TW
},
{
"JOHAB", PG_JOHAB
},
{
"UNICODE", PG_UTF8
},
@ -240,6 +309,15 @@ pg_enc2name pg_enc2name_tbl[] =
{
"LATIN10", PG_LATIN10
},
{
"WIN1256", PG_WIN1256
},
{
"TCVN", PG_TCVN
},
{
"WIN874", PG_WIN874
},
{
"KOI8", PG_KOI8R
},
@ -267,6 +345,12 @@ pg_enc2name pg_enc2name_tbl[] =
{
"BIG5", PG_BIG5
},
{
"GBK", PG_GBK
},
{
"UHC", PG_UHC
},
{
"WIN1250", PG_WIN1250
}

View file

@ -1,7 +1,7 @@
/*
* conversion functions between pg_wchar and multi-byte streams.
* Tatsuo Ishii
* $Id: wchar.c,v 1.26 2001/10/28 06:25:56 momjian Exp $
* $Id: wchar.c,v 1.27 2002/03/05 05:52:44 momjian Exp $
*
* WIN1250 client encoding updated by Pavel Behal
*
@ -250,6 +250,21 @@ pg_euctw_mblen(const unsigned char *s)
return (len);
}
/*
* JOHAB
*/
static int
pg_johab2wchar_with_len(const unsigned char *from, pg_wchar *to, int len)
{
return (pg_euc2wchar_with_len(from, to, len));
}
static int
pg_johab_mblen(const unsigned char *s)
{
return (pg_euc_mblen(s));
}
/*
* convert UTF-8 string to pg_wchar (UCS-2)
* caller should allocate enough space for "to"
@ -457,34 +472,78 @@ pg_big5_mblen(const unsigned char *s)
return (len);
}
/*
* GBK
*/
static int
pg_gbk_mblen(const unsigned char *s)
{
int len;
if (*s > 0x7f)
{ /* kanji? */
len = 2;
}
else
{ /* should be ASCII */
len = 1;
}
return (len);
}
/*
* UHC
*/
static int
pg_uhc_mblen(const unsigned char *s)
{
int len;
if (*s > 0x7f)
{ /* 2byte? */
len = 2;
}
else
{ /* should be ASCII */
len = 1;
}
return (len);
}
pg_wchar_tbl pg_wchar_table[] = {
{pg_ascii2wchar_with_len, pg_ascii_mblen, 1}, /* 0; PG_SQL_ASCII */
{pg_eucjp2wchar_with_len, pg_eucjp_mblen, 3}, /* 1; PG_EUC_JP */
{pg_euccn2wchar_with_len, pg_euccn_mblen, 3}, /* 2; PG_EUC_CN */
{pg_euckr2wchar_with_len, pg_euckr_mblen, 3}, /* 3; PG_EUC_KR */
{pg_euctw2wchar_with_len, pg_euctw_mblen, 3}, /* 4; PG_EUC_TW */
{pg_utf2wchar_with_len, pg_utf_mblen, 3}, /* 5; PG_UNICODE */
{pg_mule2wchar_with_len, pg_mule_mblen, 3}, /* 6; PG_MULE_INTERNAL */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 7; PG_LATIN1 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 8; PG_LATIN2 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 9; PG_LATIN3 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 10; PG_LATIN4 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 11; PG_LATIN5 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 12; PG_KOI8 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 13; PG_WIN1251 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 14; PG_ALT */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 15; ISO-8859-5 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 16; ISO-8859-6 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 17; ISO-8859-7 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 18; ISO-8859-8 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 19; ISO-8859-10 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 20; ISO-8859-13 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 21; ISO-8859-14 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 22; ISO-8859-15 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 23; ISO-8859-16 */
{0, pg_sjis_mblen, 2}, /* 24; PG_SJIS */
{0, pg_big5_mblen, 2}, /* 25; PG_BIG5 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1} /* 26; PG_WIN1250 */
{pg_johab2wchar_with_len, pg_johab_mblen, 3}, /* 5; PG_JOHAB */
{pg_utf2wchar_with_len, pg_utf_mblen, 3}, /* 6; PG_UNICODE */
{pg_mule2wchar_with_len, pg_mule_mblen, 3}, /* 7; PG_MULE_INTERNAL */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 8; PG_LATIN1 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 9; PG_LATIN2 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 10; PG_LATIN3 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 11; PG_LATIN4 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 12; PG_LATIN5 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 13; PG_LATIN6 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 14; PG_LATIN7 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 15; PG_LATIN8 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 16; PG_LATIN9 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 17; PG_LATIN10 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 18; PG_WIN1256 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 19; PG_TCVN */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 20; PG_WIN874 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 21; PG_KOI8 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 22; PG_WIN1251 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 23; PG_ALT */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 24; ISO-8859-5 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 25; ISO-8859-6 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 26; ISO-8859-7 */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 27; ISO-8859-8 */
{0, pg_sjis_mblen, 2}, /* 28; PG_SJIS */
{0, pg_big5_mblen, 2}, /* 29; PG_BIG5 */
{0, pg_gbk_mblen, 2}, /* 30; PG_GBK */
{0, pg_uhc_mblen, 2}, /* 31; PG_UHC */
{pg_latin12wchar_with_len, pg_latin1_mblen, 1}, /* 32; PG_WIN1250 */
};
/* returns the byte length of a word for mule internal code */

View file

@ -1,4 +1,4 @@
/* $Id: pg_wchar.h,v 1.37 2001/11/05 17:46:33 momjian Exp $ */
/* $Id: pg_wchar.h,v 1.38 2002/03/05 05:52:50 momjian Exp $ */
#ifndef PG_WCHAR_H
#define PG_WCHAR_H
@ -159,6 +159,7 @@ typedef enum pg_enc
PG_EUC_CN, /* EUC for Chinese */
PG_EUC_KR, /* EUC for Korean */
PG_EUC_TW, /* EUC for Taiwan */
PG_JOHAB, /* EUC for Korean JOHAB */
PG_UTF8, /* Unicode UTF-8 */
PG_MULE_INTERNAL, /* Mule internal code */
PG_LATIN1, /* ISO-8859-1 Latin 1 */
@ -171,6 +172,9 @@ typedef enum pg_enc
PG_LATIN8, /* ISO-8859-14 Latin8 */
PG_LATIN9, /* ISO-8859-15 Latin9 */
PG_LATIN10, /* ISO-8859-16 Latin10 */
PG_WIN1256, /* windows-1256 */
PG_TCVN, /* TCVN (Windows-1258) */
PG_WIN874, /* windows-874 */
PG_KOI8R, /* KOI8-R */
PG_WIN1251, /* windows-1251 (was: WIN) */
PG_ALT, /* (MS-DOS CP866) */
@ -180,8 +184,10 @@ typedef enum pg_enc
PG_ISO_8859_8, /* ISO-8859-8 */
/* followings are for client encoding only */
PG_SJIS, /* Shift JIS */
PG_BIG5, /* Big5 */
PG_SJIS, /* Shift JIS (Winindows-932) */
PG_BIG5, /* Big5 (Windows-950) */
PG_GBK, /* GBK (Windows-936) */
PG_UHC, /* UHC (Windows-949) */
PG_WIN1250, /* windows-1250 */
_PG_LAST_ENCODING_ /* mark only */
@ -189,7 +195,7 @@ typedef enum pg_enc
} pg_enc;
#define PG_ENCODING_BE_LAST PG_ISO_8859_8
#define PG_ENCODING_FE_LAST PG_WIN1250
#define PG_ENCODING_FE_LAST PG_WIN1256
#ifdef MULTIBYTE

View file

@ -944,6 +944,9 @@ another_version_retry:
CC_send_settings(self);
CC_lookup_lo(self); /* a hack to get the oid of our large
* object oid type */
#ifdef MULTIBYTE
CC_lookup_characterset(self);
#endif
CC_lookup_pg_version(self); /* Get PostgreSQL version for SQLGetInfo
* use */
@ -1247,9 +1250,27 @@ CC_send_query(ConnectionClass *self, char *query, QueryInfo *qi)
if (QR_command_successful(res))
QR_set_status(res, PGRES_NONFATAL_ERROR);
QR_set_notice(res, cmdbuffer); /* will dup this string */
#ifdef MULTIBYTE
if (strstr(cmdbuffer,"encoding is"))
{
if (strstr(cmdbuffer,"Current client encoding is"))
strcpy(PG_CCSS, cmdbuffer + 36);
if (strstr(cmdbuffer,"Current server encoding is"))
strcpy(PG_SCSS, cmdbuffer + 36);
mylog("~~~ NOTICE: '%s'\n", cmdbuffer);
qlog("NOTICE from backend during send_query: '%s'\n ClientEncoding = %s\n ServerEncoding = %s\n", cmdbuffer, PG_CCSS, PG_SCSS);
}
else
{
mylog("~~~ NOTICE: '%s'\n", cmdbuffer);
qlog("NOTICE from backend during send_query: '%s'\n", cmdbuffer);
}
#else
mylog("~~~ NOTICE: '%s'\n", cmdbuffer);
qlog("NOTICE from backend during send_query: '%s'\n", cmdbuffer);
#endif
while (msg_truncated)
msg_truncated = SOCK_get_string(sock, cmdbuffer, ERROR_MSG_LENGTH);

View file

@ -1,138 +1,330 @@
/*--------
* Module : multibyte.c
*
* Description: Mlutibyte related additional function.
* Description: New Mlutibyte related additional function.
*
* Create 2001-03-03 Eiji Tokuya
* New Create 2001-09-16 Eiji Tokuya
*--------
*/
#include "multibyte.h"
#include "connection.h"
#include "pgapifunc.h"
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
int multibyte_client_encoding; /* Multibyte Client Encoding. */
int multibyte_status; /* Multibyte Odds and ends character. */
int PG_CCST; /* Client Charcter Status */
int PG_SCSC; /* Server Charcter Set (code) */
int PG_CCSC; /* Client Charcter Set (code) */
unsigned char *PG_SCSS; /* Server Charcter Set (string) */
unsigned char *PG_CCSS; /* Client Charcter Set (string) */
unsigned char *
multibyte_strchr(const unsigned char *s, unsigned char c)
pg_CS CS_Table[] =
{
int mb_st = 0,
i = 0;
{ "SQL_ASCII", SQL_ASCII },
{ "EUC_JP", EUC_JP },
{ "EUC_CN", EUC_CN },
{ "EUC_KR", EUC_KR },
{ "EUC_TW", EUC_TW },
{ "JOHAB", JOHAB },
{ "UNICODE", UTF8 },
{ "MULE_INTERNAL",MULE_INTERNAL },
{ "LATIN1", LATIN1 },
{ "LATIN2", LATIN2 },
{ "LATIN3", LATIN3 },
{ "LATIN4", LATIN4 },
{ "LATIN5", LATIN5 },
{ "LATIN6", LATIN6 },
{ "LATIN7", LATIN7 },
{ "LATIN8", LATIN8 },
{ "LATIN9", LATIN9 },
{ "LATIN10", LATIN10 },
{ "WIN1256", WIN1256 },
{ "TCVN", TCVN },
{ "WIN874", WIN874 },
{ "KOI8", KOI8R },
{ "WIN", WIN1251 },
{ "ALT", ALT },
{ "ISO_8859_5", ISO_8859_5 },
{ "ISO_8859_6", ISO_8859_6 },
{ "ISO_8859_7", ISO_8859_7 },
{ "ISO_8859_8", ISO_8859_8 },
while (!(mb_st == 0 && (s[i] == c || s[i] == 0)))
{
if (s[i] == 0)
return (0);
switch (multibyte_client_encoding)
{
case SJIS:
{
if (mb_st < 2 && s[i] > 0x80 && !(s[i] > 0x9f && s[i] < 0xe0))
mb_st = 2;
else if (mb_st == 2)
mb_st = 1;
else
mb_st = 0;
}
break;
/* Chinese Big5 Support. */
case BIG5:
{ "SJIS", SJIS },
{ "BIG5", BIG5 },
{ "GBK", GBK },
{ "UHC", UHC },
{ "WIN1250", WIN1250 },
{ "OTHER", OTHER }
};
int
pg_ismb(int characterset_code)
{
int i=0,MB_CHARACTERSET[]={EUC_JP,EUC_CN,EUC_KR,EUC_TW,UTF8,MULE_INTERNAL,SJIS,BIG5,GBK,UHC,JOHAB};
while (MB_CHARACTERSET[i] != characterset_code || OTHER != MB_CHARACTERSET[i] )
{
if (mb_st < 2 && s[i] > 0xA0)
mb_st = 2;
else if (mb_st == 2)
mb_st = 1;
else
mb_st = 0;
}
break;
default:
mb_st = 0;
}
i++;
}
#ifdef _DEBUG
qlog("i = %d\n", i);
#endif
return (char *) (s + i);
return (MB_CHARACTERSET[i]);
}
void
multibyte_init(void)
int
pg_CS_code(const unsigned char *characterset_string)
{
multibyte_status = 0;
int i = 0, c;
for(i = 0; CS_Table[i].code != OTHER; i++)
{
if (strstr(characterset_string,CS_Table[i].name))
c = CS_Table[i].code;
}
return (c);
}
unsigned char *
check_client_encoding(unsigned char *str)
pg_CS_name(const int characterset_code)
{
if (strstr(str, "%27SJIS%27") ||
strstr(str, "%27Shift_JIS%27") ||
strstr(str, "'SJIS'") ||
strstr(str, "'sjis'") ||
strstr(str, "'Shift_JIS'"))
int i = 0;
for (i = 0; CS_Table[i].code != OTHER; i++)
{
multibyte_client_encoding = SJIS;
return ("SJIS");
}
if (strstr(str, "%27BIG5%27") ||
strstr(str, "%27Big5%27") ||
strstr(str, "'BIG5'") ||
strstr(str, "'big5'") ||
strstr(str, "'Big5'"))
{
multibyte_client_encoding = BIG5;
return ("BIG5");
if (CS_Table[i].code == characterset_code)
return CS_Table[i].name;
}
return ("OTHER");
}
/*--------
* Multibyte Status Function.
* Input char
* Output 0 : 1 Byte Character.
* 1 : MultibyteCharacter Last Byte.
* N : MultibyteCharacter Fast or Middle Byte.
*--------
*/
int
multibyte_char_check(unsigned char s)
pg_CS_stat(int stat,unsigned int character,int characterset_code)
{
switch (multibyte_client_encoding)
if (character == 0)
stat = 0;
switch (characterset_code)
{
/* Japanese Shift-JIS(CP932) Support. */
case UTF8:
{
if (stat < 2 &&
character >= 0x80)
{
if (character >= 0xfc)
stat = 6;
else if (character >= 0xf8)
stat = 5;
else if (character >= 0xf0)
stat = 4;
else if (character >= 0xe0)
stat = 3;
else if (character >= 0xc0)
stat = 2;
}
else if (stat > 2 &&
character > 0x7f)
stat--;
else
stat=0;
}
break;
/* Shift-JIS Support. */
case SJIS:
{
if (multibyte_status < 2 && s > 0x80 && !(s > 0x9f && s < 0xE0))
multibyte_status = 2;
else if (multibyte_status == 2)
multibyte_status = 1;
if (stat < 2 &&
character > 0x80 &&
!(character > 0x9f &&
character < 0xe0))
stat = 2;
else if (stat == 2)
stat = 1;
else
multibyte_status = 0;
stat = 0;
}
break;
/* Chinese Big5 Support. */
case BIG5:
{
if (stat < 2 &&
character > 0xA0)
stat = 2;
else if (stat == 2)
stat = 1;
else
stat = 0;
}
break;
/* Chinese GBK Support. */
case GBK:
{
if (stat < 2 &&
character > 0x7F)
stat = 2;
else if (stat == 2)
stat = 1;
else
stat = 0;
}
break;
/* Chinese Big5(CP950) Support. */
case BIG5:
/* Korian UHC Support. */
case UHC:
{
if (multibyte_status < 2 && s > 0xA0)
multibyte_status = 2;
else if (multibyte_status == 2)
multibyte_status = 1;
if (stat < 2 &&
character > 0x7F)
stat = 2;
else if (stat == 2)
stat = 1;
else
multibyte_status = 0;
stat = 0;
}
break;
/* EUC_JP Support */
case EUC_JP:
{
if (stat < 3 &&
character == 0x8f) /* JIS X 0212 */
stat = 3;
else
if (stat != 2 &&
(character == 0x8e ||
character > 0xa0)) /* Half Katakana HighByte & Kanji HighByte */
stat = 2;
else if (stat == 2)
stat = 1;
else
stat = 0;
}
break;
/* EUC_CN, EUC_KR, JOHAB Support */
case EUC_CN:
case EUC_KR:
case JOHAB:
{
if (stat < 2 &&
character > 0xa0)
stat = 2;
else if (stat == 2)
stat = 1;
else
stat = 0;
}
break;
case EUC_TW:
{
if (stat < 4 &&
character == 0x8e)
stat = 4;
else if (stat == 4 &&
character > 0xa0)
stat = 3;
else if (stat == 3 ||
stat < 2 &&
character > 0xa0)
stat = 2;
else if (stat == 2)
stat = 1;
else
stat = 0;
}
break;
default:
multibyte_status = 0;
{
stat = 0;
}
#ifdef _DEBUG
qlog("multibyte_client_encoding = %d s = 0x%02X multibyte_stat = %d\n", multibyte_client_encoding, s, multibyte_status);
#endif
return (multibyte_status);
break;
}
return stat;
}
unsigned char *
pg_mbschr(const unsigned char *string, unsigned int character)
{
int mb_st = 0;
unsigned char *s;
s = (unsigned char *) string;
for(;;)
{
mb_st = pg_CS_stat(mb_st, (unsigned char) *s,PG_CCSC);
if (mb_st == 0 && (*s == character || *s == 0))
break;
else
s++;
}
return (s);
}
int
pg_mbslen(const unsigned char *string)
{
unsigned char *s;
int len, cs_stat;
for (len = 0, cs_stat = 0, s = (unsigned char *) string; *s != 0; s++)
{
cs_stat = pg_CS_stat(cs_stat,(unsigned int) *s, PG_CCSC);
if (cs_stat < 2)
len++;
}
return len;
}
unsigned char *
pg_mbsinc(const unsigned char *current )
{
int mb_stat = 0;
if (*current != 0)
{
mb_stat = (int) pg_CS_stat(mb_stat, *current, PG_CCSC);
if (mb_stat == 0)
mb_stat = 1;
return ((unsigned char *) current + mb_stat);
}
else
return NULL;
}
void
CC_lookup_characterset(ConnectionClass *self)
{
HSTMT hstmt;
StatementClass *stmt;
RETCODE result;
static char *func = "CC_lookup_characterset";
mylog("%s: entering...\n", func);
PG_SCSS = malloc(MAX_CHARACTERSET_NAME);
PG_CCSS = malloc(MAX_CHARACTERSET_NAME);
result = PGAPI_AllocStmt(self, &hstmt);
if ((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO))
return;
stmt = (StatementClass *) hstmt;
result = PGAPI_ExecDirect(hstmt, "Show Client_Encoding", SQL_NTS);
if ((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO))
{
PGAPI_FreeStmt(hstmt, SQL_DROP);
return;
}
result = PGAPI_AllocStmt(self, &hstmt);
if ((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO))
return;
stmt = (StatementClass *) hstmt;
result = PGAPI_ExecDirect(hstmt, "Show Server_Encoding", SQL_NTS);
if ((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO))
{
PGAPI_FreeStmt(hstmt, SQL_DROP);
return;
}
strcpy(PG_SCSS , pg_CS_name(PG_SCSC = pg_CS_code(PG_SCSS)));
strcpy(PG_CCSS , pg_CS_name(PG_CCSC = pg_CS_code(PG_CCSS)));
qlog(" [ Server encoding = '%s' (code = %d), Client encoding = '%s' (code = %d) ]\n", PG_SCSS, PG_SCSC, PG_CCSS, PG_CCSC);
}

View file

@ -11,29 +11,77 @@
#define EUC_CN 2 /* EUC for Chinese */
#define EUC_KR 3 /* EUC for Korean */
#define EUC_TW 4 /* EUC for Taiwan */
#define UNICODE 5 /* Unicode UTF-8 */
#define MULE_INTERNAL 6 /* Mule internal code */
#define LATIN1 7 /* ISO-8859 Latin 1 */
#define LATIN2 8 /* ISO-8859 Latin 2 */
#define LATIN3 9 /* ISO-8859 Latin 3 */
#define LATIN4 10 /* ISO-8859 Latin 4 */
#define LATIN5 11 /* ISO-8859 Latin 5 */
#define LATIN6 12 /* ISO-8859 Latin 6 */
#define LATIN7 13 /* ISO-8859 Latin 7 */
#define LATIN8 14 /* ISO-8859 Latin 8 */
#define LATIN9 15 /* ISO-8859 Latin 9 */
#define KOI8 16 /* KOI8-R/U */
#define WIN 17 /* windows-1251 */
#define ALT 18 /* Alternativny Variant (MS-DOS CP866) */
#define SJIS 32 /* Shift JIS */
#define BIG5 33 /* Big5 */
#define WIN1250 34 /* windows-1250 */
#define JOHAB 5
#define UTF8 6 /* Unicode UTF-8 */
#define MULE_INTERNAL 7 /* Mule internal code */
#define LATIN1 8 /* ISO-8859 Latin 1 */
#define LATIN2 9 /* ISO-8859 Latin 2 */
#define LATIN3 10 /* ISO-8859 Latin 3 */
#define LATIN4 11 /* ISO-8859 Latin 4 */
#define LATIN5 12 /* ISO-8859 Latin 5 */
#define LATIN6 13 /* ISO-8859 Latin 6 */
#define LATIN7 14 /* ISO-8859 Latin 7 */
#define LATIN8 15 /* ISO-8859 Latin 8 */
#define LATIN9 16 /* ISO-8859 Latin 9 */
#define LATIN10 17 /* ISO-8859 Latin 10 */
#define WIN1256 18 /* Arabic Windows */
#define TCVN 19 /* Vietnamese Windows */
#define WIN874 20 /* Thai Windows */
#define KOI8R 21 /* KOI8-R/U */
#define WIN1251 22 /* windows-1251 */
#define ALT 23 /* Alternativny Variant (MS-DOS CP866) */
#define ISO_8859_5 24 /* ISO-8859-5 */
#define ISO_8859_6 25 /* ISO-8859-6 */
#define ISO_8859_7 26 /* ISO-8859-7 */
#define ISO_8859_8 27 /* ISO-8859-8 */
#define SJIS 28 /* Shift JIS */
#define BIG5 29 /* Big5 */
#define GBK 30 /* GBK */
#define UHC 31 /* UHC */
#define WIN1250 32 /* windows-1250 */
#define OTHER -1
extern int multibyte_client_encoding; /* Multibyte client encoding. */
extern int multibyte_status; /* Multibyte charcter status. */
#define MAX_CHARACTERSET_NAME 24
#define MAX_CHARACTER_LEN 6
void multibyte_init(void);
unsigned char *check_client_encoding(unsigned char *str);
int multibyte_char_check(unsigned char s);
unsigned char *multibyte_strchr(const unsigned char *s, unsigned char c);
/* OLD Type */
// extern int multibyte_client_encoding; /* Multibyte client encoding. */
// extern int multibyte_status; /* Multibyte charcter status. */
//
// void multibyte_init(void);
// unsigned char *check_client_encoding(unsigned char *sql_string);
// int multibyte_char_check(unsigned char s);
// unsigned char *multibyte_strchr(const unsigned char *string, unsigned int c);
/* New Type */
extern int PG_CCST; /* Client Character StaTus */
extern int PG_SCSC; /* Server Character Set (Code) */
extern int PG_CCSC; /* Client Character Set (Code) */
extern unsigned char *PG_SCSS; /* Server Character Set (String) */
extern unsigned char *PG_CCSS; /* Client Character Set (String) */
extern void CC_lookup_characterset(ConnectionClass *self);
extern int pg_CS_stat(int stat,unsigned int charcter,int characterset_code);
extern int pg_CS_code(const unsigned char *stat_string);
extern unsigned char *pg_CS_name(const int code);
typedef struct pg_CS
{
unsigned char *name;
int code;
}pg_CS;
extern pg_CS CS_Table[];
extern int pg_mbslen(const unsigned char *string);
extern unsigned char *pg_mbschr(const unsigned char *string, unsigned int character);
extern unsigned char *pg_mbsinc( const unsigned char *current );
/* Old Type Compatible */
#define multibyte_init() (PG_CCST = 0)
#define multibyte_char_check(X) pg_CS_stat(PG_CCST, (unsigned int) X, PG_CCSC)
#define multibyte_strchr(X,Y) pg_mbschr(X,Y)
#define check_client_encoding(X) pg_CS_name(PG_CCSC = pg_CS_code(X))