mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-24 04:37:19 +02:00
o allow to use Big5 (a Chinese encoding used in Taiwan) as a client encoding. In this case the server side encoding should be EUC_TW o add EUC_TW and Big5 test cases to the regression and the mb test (contributed by Jonah Kuo) o fix mistake in include/mb/pg_wchar.h. An encoding id for EUC_TW was not correct (was 3 and now is 4) o update documents (doc/README.mb and README.mb.jp) o update psql helpfile (bin/psql/psqlHelp.h) -- Tatsuo Ishii t-ishii@sra.co.jp
13 KiB
13 KiB
postgresql 6.5 multi-byte (MB) support README 1999/1/26 $B:n@.
$B@P0fC#IW
t-ishii@sra.co.jp
http://www.sra.co.jp/people/t-ishii/PostgreSQL/
$B$O$8$a$K!'
PostgreSQL $B$K$*$1$k%^%k%A%P%$%H%5%]!<%H$O0J2<$N$h$&$JFCD'$r;}$C$F$$$^$9!#
1.$B%^%k%A%P%$%HJ8;z$H$7$F!"F|K\8l!"Cf9q8l$J$I$N3F9q$N EUC$B!"Unicode$B!"
mule internal code, ISO-8859-1 $B$,%G!<%?%Y!<%9:n@.;~$KA*Br2DG=!#
$B%G!<%?%Y!<%9$K$O$3$N%3!<%I$N$^$^3JG<$5$l$^$9!#
2.$B%F!<%V%kL>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=($B$?$@$7!"OS $B$,%^%k%A%P%$%H
$B$N%U%!%$%kL>$r5v$7$F$$$k$3$H$,I,MW)
3.$B%+%i%`L>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=
4.$B%G!<%?$=$N$b$N$K$b%^%k%A%P%$%HJ8;z$,;HMQ2DG=
5.$B%^%k%A%P%$%HJ8;z$N@55,I=8=8!:w$,;HMQ2DG=
6.$B%^%k%A%P%$%HJ8;z$N LIKE $B8!:w$,;HMQ2DG=
7.character_length(), position(), substring() $B$G$N%^%k%A%P%$%H
$B%5%]!<%H
8.$B4D6-JQ?t PGCLIENTENCODING $B$K$h$j!"%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0
$B$,%P%C%/%(%s%IB&$H0[$k>l9g$K!"<+F0E*$K%3!<%IJQ49$r9T$J$$$^$9!#
$B%$%s%9%H!<%k!'
$B%G%U%)%k%H$G$O PostgreSQL $B$O%^%k%A%P%$%H$r%5%]!<%H$7$F$$$^$;$s!#
$B%^%k%A%P%$%H%5%]!<%H$rM-8z$K$9$kJ}K!$r@bL@$7$^$9!#
configure $B5/F0;~$K0J2<$N$h$&$K;XDj$7$^$9!#
% configure --with-mb=EUC_JP
$B%(%s%3!<%G%#%s%0$H$7$F$O EUC_JP $B$r4^$a!"0J2<$N%3!<%I$, initdb $B$K$h$k
$B%G!<%?%Y!<%9=i4|2=;~$*$h$S%G!<%?%Y!<%9:n@.;~
(Unix $B%3%^%s%I$N createdb $B$b$7$/$O SQL $B$N create database)
$B$K;XDj$G$-$^$9!#configure $B$G;XDj$7$?%(%s%3!<%G%#%s%0$O initdb $B$N>JN,;~$N
$B%(%s%3!<%G%#%s%0$K$J$j$^$9!#
SQL_ASCII ASCII
EUC_JP $BF|K\8l EUC
EUC_CN GB $B$r%Y!<%9$K$7$?CfJ8EUC$B!#code set 2 $B$O
SS2+2$B%P%$%H%3!<%I = 3$B%P%$%HI=8=$G$9!#
EUC_KR $B4Z9q8l EUC$B!#
EUC_TW $BBfOQ$N EUC$B!#code set 2 $B$O
SS2+$BLLHV9f+2$B%P%$%H%3!<%I = 4$B%P%$%HI=8=$G$9!#
UNICODE UTF-8$B!#$?$@$7%5%]!<%H$9$k$N$O UCS-2 $B$NHO0O!"
$B$9$J$o$A 0xffff $B$^$G$G$9!#
MULE_INTERNAL mule $B$NFbIt%3!<%I!#$?$@$7!"Type N $B$NITDjD9J8;z$O
$B%5%]!<%H$7$F$$$^$;$s!#
LATIN* ISO8859 Latin $B%7%j!<%:!#* $B$O 1 $B$+$i 5 $B$^$G;XDj
$B$G$-$^$9!#%7%s%0%k%P%$%H$J$s$G$9$1$I!"
$B;n$7$H$$$&$3$H$G:-)
$BA*Br$NL\0B$H$7$F$O!"1Q8l$HF|K\8l$7$+;H$o$J$$>l9g$O EUC_JP($BF1MM$K!"Cf
$B9q8l$7$+;H$o$J$$>l9g$O EUC_CN... $B$J$I$H$J$j$^$9)$B!"$=$NB>$N8@8l$b;H$$$?
$B$$>l9g$O UNICODE $B$b$7$/$O MULE_INTERNAL $B$H$J$k$G$7$g$&!#
$BCm0U!'MULE_INTERNAL $B$rA*$V$H!"$?$/$5$s$NJ8;z=89g$KBP1~$G$-$FJXMx$G$9
$B$,!"@55,I=8=$GJ#?t$NJ8;z=89g$K$^$?$,$k$h$&$JHO0O;XDj($B$?$H$($P!"[a-$BHO]
$B$H$+!"[abc$BHO0O]$B$N$h$&$J)$B$O;H$($^$;$s!#J#?t$NHO0O;XDj$G0[$J$kJ8;z=89g
$B$r;H$&$N$O9=$$$^$;$s($B$?$H$($P [abc][$BHO-$B0O])$B!#$^$?!"[^a] $B$N$h$&$JI=8=
$B$O!""a" $B$NB0$9$kJ8;z=89g($B$3$N>l9g!"US-ASCII)$B$K$*$$$F "a" $B0J30$G$"$k
$B$3$H$rI=$7$^$9!#7h$7$F4A;z$dJ?2>L>$J$I "a" $B0J30$r$9$Y$FI=$9$o$1$G$O
$B$J$$$3$H$KCm0U$7$F2<$5$$!#
$B%$%s%9%H!<%k$OIaDL$K9T$J$$$^$9!#%$%s%9%H!<%k$N>\:Y$O INSTALL $B$H$$$&
$B%F%-%9%H%U%!%$%k$r8fMw2<$5$$!#$^$?!"
http://www.sra.co.jp/people/t-ishii/PostgreSQL/ $B$G$b4JC1$J%$%s%9%H!<
$B%kJ}K!$r>R2p$7$F$$$^$9!#
initdb/createdb/create database $B$K$*$1$k%(%s%3!<%G%#%s%0$N;XDj$K$D$$$F
initdb $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!#
-e $B%(%s%3!<%G%#%s%0
-pgencoding $B%(%s%3!<%G%#%s%0
$B$3$3$G;XDj$7$?%(%s%3!<%G%#%s%0$O!"0J8e createdb/create database $B$G%(
$B%s%3!<%G%#%s%0$r>JN,$7$?>l9g$K@_Dj$5$l$k%(%s%3!<%G%#%s%0$K$J$j$^$9!#
-e $B$^$?$O -pgencoding $B%*%W%7%g%s$r>JN,$7$?>l9g$O!"configure $B$G;XDj$7
$B$?%(%s%3!<%G%#%s%0$,:NMQ$5$l$^$9!#
createdb $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!#
-E $B%(%s%3!<%G%#%s%0
create database $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!#
CREATE DATABASE dbanme WITH ENCODING = '$B%(%s%3!<%G%#%s%0';
LOCATION $B$rF1;~$K;XDj$9$k>l9g$O0J2<$N$h$&$K$J$j$^$9!#
CREATE DATABASE dbanme WITH LOCATION = 'path' ENCODING = '$B%(%s%3!<%G%#%s%0';
createdb/create database $B$O!"%(%s%3!<%G%#%s%0;XDj$r>JN,$7$?>l9g$O!"initdb
$B$G;XDj$7$?%(%s%3!<%G%#%s%0$,:NMQ$5$l$^$9!#
$B%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$O!"psql $B$N \l $B$d!"SQL $BJ8$N
select * from pg_database $B$G;2>H$G$-$^$9!#
datname |datdba|encoding|datpath
-------------+------+--------+-------------
template1 | 1739| 1|template1
postgres | 1739| 0|postgres
euc_jp | 1739| 1|euc_jp
euc_kr | 1739| 3|euc_kr
euc_cn | 1739| 2|euc_cn
unicode | 1739| 5|unicode
mule_internal| 1739| 6|mule_internal
encoding $B%+%i%`$N?tCM$,$=$N%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$rI=$7$^$9
($B%(%s%3!<%G%#%s%0ID)$B!#%(%s%3!<%G%#%s%0 ID $B$r%(%s%3!<%G%#%s%0L>$KJQ49
$B$9$k$K$O!"pg_encoding $B%3%^%s%I$r;HMQ$7$^$9!#$?$H$($P!"
$ pg_encoding 1
EUC_JP
$B$N$h$&$K$J$j$^$9!#$J$*!"pg_encoding $B$O?t;z0J30$,M?$($i$l$k$H%(%s%3!<
$B%G%#%s%0L>$H8+Jo$7$F%(%s%3!<%G%#%s%0ID$B$rJV$7$^$9!#
$ pg_encoding EUC_JP
1
$B4D6-JQ?t PGCLIENTENCODING $B$K$D$$$F!'
$B4D6-JQ?t PGCLIENTENCODING $B$,@_Dj$5$l$F$$$J$$>l9g!"libpq $B$O%;%C%7%g%s
$B3+;O;~$K%P%C%/%(%s%IB&$K%(%s%3!<%G%#%s%0$rLd$$9g$o$;!"$=$NCM$r4D6-JQ?t
PGCLIENTENCODING $B$K@_Dj$7$^$9!#
$B4D6-JQ?t PGCLIENTENCODING $B$,@_Dj$5$l$F$$$k>l9g$O$=$NCM$,M%@h$5$l!"%P%C
$B%/%(%s%IB&$H0[$J$k%(%s%3!<%G%#%s%0$,;HMQ$G$-$^$9!#@_Dj2DG=$J%(%s%3!<
$B%G%#%s%0$O!">e5-$K2C$(!"SJIS ($B%7%U%HJIS)$B$H BiG5 $B$,;XDj$G$-$^$9!#
$B$A$J$_$K!"SJIS $B$O JISX0201 $B$N 1$B%P%$%H%+%J!"$$$o$f$k!VH>3Q%+%?
$B%+%J!W$b%5%]!<%H$7$F$$$^$9($B7h$7$F!VH>3Q%+%?%+%J!W$N;HMQ$r$*4+
$B$a$7$F$$$k$o$1$8$c$J$$$G$9$,)$B!#
$B$?$H$($P!"MB=EUC_JP $B$G PostgeSQL $B$,%$%s%9%H!<%k$5$l$F$$$k>l9g!"
postmaster $B$rN)$A>e$2$k$H$-$K4D6-JQ?t PGCLIENTENCODING $B$K SJIS $B$r@_
$BDj$9$k$H!"%U%m%s%H%(%s%I$O SJIS $B%3!<%I$G PostgreSQL $B$K%"%/%;%9$G$-$k$h
$B$&$K$J$j$^$9!#$?$@$7!"%G!<%?%Y!<%9$K3JG<$5$l$k%G!<%?<+BN$O$"$/$^$G
MB $B$G;XDj$7$? EUC_JP $B$N$^$^$G$9!#
$B%U%m%s%H%(%s%IB&$G%;%C%7%g%sKh$K%(%s%3!<%G%#%s%0$rJQ$($k$3$H$b$G$-$^
$B$9!#%;%C%7%g%s3+;O;~$K4D6-JQ?t PGCLIENTENCODING $B$,%;%C%H$5$l$F$$$k$H!"
$B$=$l$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$K:NMQ$5$l$^$9!#$3$N5!G=$rMx
$BMQ$9$k$H!"$"$k%f!<%6$O EUC_JP $B$G!"JL$J%f!<%6$O SJIS $B$GF1$8%G!<%?%Y!<
$B%9$K%"%/%;%9$9$k$H$$$&$h$&$J$3$H$,$G$-$k$h$&$K$J$j$^$9!#
MB=MULE_INTERNAL $B$G PostgreSQL $B$r%$%s%9%H!<%k$7$F$*$/$H!"IaCJ$O
EUC_JP $B$G%U%m%s%H%(%s%I$rMxMQ$7!"J#?t$NJ8;z=89g$r:.:_$5$;$k$H$-$@$1%/
$B%i%$%"%s%H$r MULE_INTERNAL $B$K@_Dj$9$k$J$I$N;H$$J,$1$,$G$-$FJXMx$G$9!#
$B$?$@!"0lHL$K EUC_JP $B$KHf$Y!"MULE_INTERNAL $B$K$h$k%G!<%?I=8=$O$d$d%9%Z!<
$B%9$r6t$&$N$G!"$=$N$X$s$O9MN8$7$F$*$/I,MW$,$"$j$^$9!#$?$H$($P!"2$B%P%$
$B%H$GI=8=$G$-$k4A;z$O MULE_INTERNAL $B$G$O 3$B%P%$%H$rMW$7$^$9!#
$BCm0U$7$F$*$/I,MW$,$"$k$N$O!"%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$H%U%m%s
$B%H%(%s%IB&$N%(%s%3!<%G%#%s%0$,$$$D$bAj8_JQ49$G$-$k$H$O8B$i$J$$$3$H$G
$B$9!#6KC<$JOC!"%P%C%/%(%s%IB&$, EUC_JP $B$J$N$K!"%U%m%s%H%(%s%IB&$,
EUC_KR $B$@$C$?$i$I$&$J$k$G$7$g$&!#
$B$3$N>l9g PostgreSQL $B$OJQ49$G$-$J$$%3!<%I$r 16$B?JI=8=$KJQ49$7$F$7$^$$
$B$^$9!#$?$H$($P!""(bdae)" $B$N$h$&$K!#$J$*!"$3$N 16$B?JI=8=$O mule
internalcode $B$N%3!<%I$G$"$k$3$H$KCm0U$7$F2<$5$$!#$3$l$O!"D>@\%U%m%s
$B%H%(%s%I <--> $B%P%C%/%(%s%I$N%(%s%3!<%G%#%s%0$rJQ49$9$k$N$G$O$J$/!"0l
$BEYFbItI=8=$G$"$k mule internal code $B$r7PM3$7$F$$$k$?$a$G$9!#
$B%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$N@_Dj$O!""set client_encoding" $B%3
$B%^%s%I$G$b2DG=$G$9!#$?$H$($P!"
set client_encoding to 'sjis';
$B$G%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$r SJIS $B$K@_Dj$G$-$^$9!#<B:]!"%/
$B%i%$%"%s%H$,%P%C%/%(%s%I$K@\B3$9$k:]$K$O libpq $B$NCf$G "set
client_encoding" $B%3%^%s%I$rH/9T$7$F$$$^$9!#%;%C%7%g%sCf$K
set client_encoding" $B%3%^%s%I$rH/9T$9$l$P!"F0E*$K%(%s%3!<%G%#%s%0$N@ZBX$(
$B$,$G$-$^$9$,!"$=$N:]$K$O4D6-JQ?t PGCLIENTENCODING $B$rF1;~$K%U%m%s%H%(
$B%s%I%"%W%j%1!<%7%g%s$NCf$G@_Dj$7D>$9I,MW$,$"$j$^$9!#(psql $B$K$O8=:_$3
$B$N5!G=$,$J$$$?$a!";v<B>eF0E*$K%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$r@_
$BDj$9$k$3$H$,$G$-$^$;$s!#)
$B8=:_@_Dj$5$l$F$$$k%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$O
show client_encoding;
$B$G;2>H$G$-$^$9!#$^$?!"
reset client_encoding;
$B$O!"%G%U%)%k%H$N%U%m%s%H%(%s%I%(%s%3!<%G%#%s%0@_Dj$KI|5"$5$;$^$9!#
postmaster$B$rN)$A>e$2$k$H$-$K4D6-JQ?t PGCLIENTENCODING $B$,@_Dj$5$l$F$$
$B$k$H$=$N%(%s%3!<%G%#%s%0$K!"$=$&$G$J$1$l$P%3%s%Q%$%k;~$K;XDj$7$?%P%C
$B%/%(%s%IB&$N%(%s%3!<%G%#%s%0$HF1$8$K$J$j$^$9!#
$B@)8B;v9`!'
SJIS $B$r;HMQ$9$k>l9g!"PostgreSQL $B$N%U%m%s%H%(%s%I$G$^$H$b$KBP1~$7$F$$$k
$B$N$O psql $B$@$1$G$9!#Tcl/Tk$B!"$=$N$[$+$OBP1~$7$F$^$;$s!#
$B<U<-!'
o $B3F<oJ8;z%;%C%H!"%3!<%I7O$K$D$$$F!"F|K\8l PostgreSQL $B%a!<%j%s%0%j%9%H
$B$N%a%s%P$NJ}$+$i%"%I%P%$%9$rD:$-$^$7$?!#$3$3$K46<U$7$^$9!#
$B$^$?!"SJIS $BBP1~$K$D$$$F$O!";T@n@$B$*CcBg$5$s$N%Q%C%A$r;29M$K$5$;$F$$
$B$?$@$-$^$7$?!#
$B2~DjMzNr!'
1999/1/26 Big5 $B%5%]!<%HDI2C
* Big5 $B$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$H$7$FMxMQ$G$-$k$h
$B$&$K$J$j$^$7$?!#$3$N>l9g!"%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$O
EUC_TW $B$^$?$O MULE_INTERNAL $B$H$7$^$9!#
* EUC_TW $B$N regression test $B%1!<%9$rDI2C
(contributed by Jonah Kuo <jonahkuo@mail.ttn.com.tw>)
1998/12/16 $BK\%I%-%e%a%s%H=$@5!#
* Makefile.custom $B$G MB=EUC_JP $B$J$I$H@_Dj$9$kJ}K!$O 6.4 $B0J9_
$B%5%]!<%H$5$l$F$$$J$$$N$G:o=|$7$?!#
* $BJ8;z%3!<%I $B"* $B%(%s%3!<%G%#%s%0!"%/%i%$%"%s%H"*%U%m%s%H%(%s%I
$B%5!<%P"*%P%C%/%(%s%I $B$K$=$l$>$l8l6g$r=$@5!#
1998/12/15 6.4 $B8~$1%P%0=$@5%Q%C%A%j%j!<%9!#
* SQL_ASCII $B%5%]!<%H$N%P%0=$@5
1998/11/21 6.4 $B8~$1%P%0=$@5%Q%C%A%j%j!<%9!#
* BINARY CURSOR $B$NLdBj$r=$@5
* pg_dumpall $B$N%P%0=$@5
1998/11/5 6.4 $B%j%j!<%9!#
* pg_database $B$N encoding $B%+%i%`$, MB $B$,M-8z$G$J$$$H$-$K$b
$BDI2C$5$l$k$h$&$K$J$C$?!#$=$N$?$a!"MB $B$,M-8z$G$J$$$H$-$K$O!"
ASCII $B$N%(%s%3!<%G%#%s%0$rI=$9 SQL_ASCII $B$r?7$7$$%(%s%3!<%G%#%s%0
$B$H$7$FDI2C$7$?!#$3$l$K$H$b$J$$!"%(%s%3!<%G%#%s%0L>$KBP1~$9$k
$B%(%s%3!<%G%#%s%0ID$B$, SQL_ASCII $B$r 0 $B$H$9$kHV9f$KJQ99$K$J$C$?!#
1998/7/22 6.4 $B&A8~$1$K%Q%C%A$r%j%j!<%9!#
* initdb/createdb/create database $B$G%P%C%/%(%s%IB&$N
$B%(%s%3!<%G%#%s%0$r@_Dj$-$k5!G=<BAu!#$3$N$?$a!"%7%9%F%`%+%?%m
$B%0$N pg_database $B$K?7$7$$%+%i%` encoding $B$rDI2C(MB$B$,M-8z$J;~$@$1)
* copy $B$, PGCLIENTENCODING $B$KBP1~
* SQL92 $B$N "SET NAMES" $B$r%5%]!<%H(MB$B$,M-8z$J;~$@$1)
* LATIN2-5 $B$r%5%]!<%H
* regression test $B$K unicode $B$N%F%9%H%1!<%9$rDI2C
* MB $B@lMQ$N regression $B%F%9%H%G%#%l%/%H%j test/mb $B$rDI2C
* $B%=!<%9%U%!%$%k$NCV$->l=j$rBgI}8+D>$7!#MB $B4X78$O
include/mb, backend/utils/mb $B$KCV$/$h$&$K$7$?
1998/5/25 $B%P%0=$@5(mb_b3.patch $B$H$7$F pgsql-jp ML $B$K%j%j!<%9!"
$BK\2H$G$O 6.4 snapshot $B$K<h$j9~$^$l$kM=Dj)
1998/5/18 $B5!G=DI2C!?%P%0=$@5(mb_b2.patch $B$H$7$F pgsql-jp ML $B$K%j%j!<%9!"
$BK\2H$G$O 6.4 snapshot $B$K<h$j9~$^$l$kM=Dj)
* $B4D6-JQ?t PGCLIENTENCODING $B$N%5%]!<%H!#%U%m%s%H%(%s%IB&$N
$B%(%s%3!<%G%#%s%0$r;XDj$9$k!#8=:_!"SJIS, EUC_*, MULE_INTERNAL,
LATIN1 $B$,;XDj$G$-$k!#$^$?!"
set client_encoding to 'sjis';
$B$G$b2DG=
* 8bit $BJ8;z$,EO$k$HLdBj$,5/$-$k2U=j$K$G$-$k$@$1BP1~
1998/4/21 $B5!G=DI2C!?%P%0=$@5(mb_b1.patch $B$H$7$F pgsql-jp ML $B$K%j%j!<%9!"
$BK\2H$G$O 6.4 snapshot $B$K<h$j9~$^$l$F$$$k)
* character_length(), position(), substring() $B$N%^%k%A%P%$%H
$BBP1~
* octet_length() $BDI2C $B"* initdb $B$N$d$jD>$7I,MW
* configure $B$N%*%W%7%g%s$K MB $B%5%]!<%HDI2C
(ex. configure --with-mb=EUC_JP)
* EUC_KR $B$N regression test $BDI2C
("Soonmyung. Hong" <hong@lunaris.hanmesoft.co.kr> $B$5$sDs6!)
* EUC_JP $B$N regression test $B$K character_length(), position(),
substring(), octet_length() $BDI2C
* regress.sh $B$N SystemV $B$K$*$1$kHs8_49@-=$@5
* toupper(), tolower() $B$K 8bit $BJ8;z$,EO$k$HMn$A$k$3$H$,
$B$"$k$N$r=$@5
1998/3/25 PostgreSQL 6.3.1 $B%j%j!<%9!"MB PL2 $B$,<h$j9~$^$l$k
1998/3/10 PL2 $B$r%j%j!<%9
* EUC_JP, EUC_CN, MULE_INTERNAL $B$N regression test $B$rDI2C
(EUC_CN $B$N%G!<%?$O he@sra.co.jp $B$5$sDs6!)
* regexp $B$K$*$$$F!"isalpha $B$J$I$K unsigend char $B0J30$NCM$,
$BEO$i$J$$$h$&$K%,!<%I$r$+$1$k
* $B1Q8l$N%I%-%e%a%s%H$rDI2C
* MB $B$rDj5A$7$J$$>l9g$KH/@8$9$k%P%0$r=$@5
1998/3/1 PL1 $B$r%j%j!<%9
$B0J>e!#
$B@P0fC#IW
t-ishii@sra.co.jp
http://www.sra.co.jp/people/t-ishii/PostgreSQL/
$B$O$8$a$K!'
PostgreSQL $B$K$*$1$k%^%k%A%P%$%H%5%]!<%H$O0J2<$N$h$&$JFCD'$r;}$C$F$$$^$9!#
1.$B%^%k%A%P%$%HJ8;z$H$7$F!"F|K\8l!"Cf9q8l$J$I$N3F9q$N EUC$B!"Unicode$B!"
mule internal code, ISO-8859-1 $B$,%G!<%?%Y!<%9:n@.;~$KA*Br2DG=!#
$B%G!<%?%Y!<%9$K$O$3$N%3!<%I$N$^$^3JG<$5$l$^$9!#
2.$B%F!<%V%kL>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=($B$?$@$7!"OS $B$,%^%k%A%P%$%H
$B$N%U%!%$%kL>$r5v$7$F$$$k$3$H$,I,MW)
3.$B%+%i%`L>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=
4.$B%G!<%?$=$N$b$N$K$b%^%k%A%P%$%HJ8;z$,;HMQ2DG=
5.$B%^%k%A%P%$%HJ8;z$N@55,I=8=8!:w$,;HMQ2DG=
6.$B%^%k%A%P%$%HJ8;z$N LIKE $B8!:w$,;HMQ2DG=
7.character_length(), position(), substring() $B$G$N%^%k%A%P%$%H
$B%5%]!<%H
8.$B4D6-JQ?t PGCLIENTENCODING $B$K$h$j!"%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0
$B$,%P%C%/%(%s%IB&$H0[$k>l9g$K!"<+F0E*$K%3!<%IJQ49$r9T$J$$$^$9!#
$B%$%s%9%H!<%k!'
$B%G%U%)%k%H$G$O PostgreSQL $B$O%^%k%A%P%$%H$r%5%]!<%H$7$F$$$^$;$s!#
$B%^%k%A%P%$%H%5%]!<%H$rM-8z$K$9$kJ}K!$r@bL@$7$^$9!#
configure $B5/F0;~$K0J2<$N$h$&$K;XDj$7$^$9!#
% configure --with-mb=EUC_JP
$B%(%s%3!<%G%#%s%0$H$7$F$O EUC_JP $B$r4^$a!"0J2<$N%3!<%I$, initdb $B$K$h$k
$B%G!<%?%Y!<%9=i4|2=;~$*$h$S%G!<%?%Y!<%9:n@.;~
(Unix $B%3%^%s%I$N createdb $B$b$7$/$O SQL $B$N create database)
$B$K;XDj$G$-$^$9!#configure $B$G;XDj$7$?%(%s%3!<%G%#%s%0$O initdb $B$N>JN,;~$N
$B%(%s%3!<%G%#%s%0$K$J$j$^$9!#
SQL_ASCII ASCII
EUC_JP $BF|K\8l EUC
EUC_CN GB $B$r%Y!<%9$K$7$?CfJ8EUC$B!#code set 2 $B$O
SS2+2$B%P%$%H%3!<%I = 3$B%P%$%HI=8=$G$9!#
EUC_KR $B4Z9q8l EUC$B!#
EUC_TW $BBfOQ$N EUC$B!#code set 2 $B$O
SS2+$BLLHV9f+2$B%P%$%H%3!<%I = 4$B%P%$%HI=8=$G$9!#
UNICODE UTF-8$B!#$?$@$7%5%]!<%H$9$k$N$O UCS-2 $B$NHO0O!"
$B$9$J$o$A 0xffff $B$^$G$G$9!#
MULE_INTERNAL mule $B$NFbIt%3!<%I!#$?$@$7!"Type N $B$NITDjD9J8;z$O
$B%5%]!<%H$7$F$$$^$;$s!#
LATIN* ISO8859 Latin $B%7%j!<%:!#* $B$O 1 $B$+$i 5 $B$^$G;XDj
$B$G$-$^$9!#%7%s%0%k%P%$%H$J$s$G$9$1$I!"
$B;n$7$H$$$&$3$H$G:-)
$BA*Br$NL\0B$H$7$F$O!"1Q8l$HF|K\8l$7$+;H$o$J$$>l9g$O EUC_JP($BF1MM$K!"Cf
$B9q8l$7$+;H$o$J$$>l9g$O EUC_CN... $B$J$I$H$J$j$^$9)$B!"$=$NB>$N8@8l$b;H$$$?
$B$$>l9g$O UNICODE $B$b$7$/$O MULE_INTERNAL $B$H$J$k$G$7$g$&!#
$BCm0U!'MULE_INTERNAL $B$rA*$V$H!"$?$/$5$s$NJ8;z=89g$KBP1~$G$-$FJXMx$G$9
$B$,!"@55,I=8=$GJ#?t$NJ8;z=89g$K$^$?$,$k$h$&$JHO0O;XDj($B$?$H$($P!"[a-$BHO]
$B$H$+!"[abc$BHO0O]$B$N$h$&$J)$B$O;H$($^$;$s!#J#?t$NHO0O;XDj$G0[$J$kJ8;z=89g
$B$r;H$&$N$O9=$$$^$;$s($B$?$H$($P [abc][$BHO-$B0O])$B!#$^$?!"[^a] $B$N$h$&$JI=8=
$B$O!""a" $B$NB0$9$kJ8;z=89g($B$3$N>l9g!"US-ASCII)$B$K$*$$$F "a" $B0J30$G$"$k
$B$3$H$rI=$7$^$9!#7h$7$F4A;z$dJ?2>L>$J$I "a" $B0J30$r$9$Y$FI=$9$o$1$G$O
$B$J$$$3$H$KCm0U$7$F2<$5$$!#
$B%$%s%9%H!<%k$OIaDL$K9T$J$$$^$9!#%$%s%9%H!<%k$N>\:Y$O INSTALL $B$H$$$&
$B%F%-%9%H%U%!%$%k$r8fMw2<$5$$!#$^$?!"
http://www.sra.co.jp/people/t-ishii/PostgreSQL/ $B$G$b4JC1$J%$%s%9%H!<
$B%kJ}K!$r>R2p$7$F$$$^$9!#
initdb/createdb/create database $B$K$*$1$k%(%s%3!<%G%#%s%0$N;XDj$K$D$$$F
initdb $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!#
-e $B%(%s%3!<%G%#%s%0
-pgencoding $B%(%s%3!<%G%#%s%0
$B$3$3$G;XDj$7$?%(%s%3!<%G%#%s%0$O!"0J8e createdb/create database $B$G%(
$B%s%3!<%G%#%s%0$r>JN,$7$?>l9g$K@_Dj$5$l$k%(%s%3!<%G%#%s%0$K$J$j$^$9!#
-e $B$^$?$O -pgencoding $B%*%W%7%g%s$r>JN,$7$?>l9g$O!"configure $B$G;XDj$7
$B$?%(%s%3!<%G%#%s%0$,:NMQ$5$l$^$9!#
createdb $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!#
-E $B%(%s%3!<%G%#%s%0
create database $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!#
CREATE DATABASE dbanme WITH ENCODING = '$B%(%s%3!<%G%#%s%0';
LOCATION $B$rF1;~$K;XDj$9$k>l9g$O0J2<$N$h$&$K$J$j$^$9!#
CREATE DATABASE dbanme WITH LOCATION = 'path' ENCODING = '$B%(%s%3!<%G%#%s%0';
createdb/create database $B$O!"%(%s%3!<%G%#%s%0;XDj$r>JN,$7$?>l9g$O!"initdb
$B$G;XDj$7$?%(%s%3!<%G%#%s%0$,:NMQ$5$l$^$9!#
$B%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$O!"psql $B$N \l $B$d!"SQL $BJ8$N
select * from pg_database $B$G;2>H$G$-$^$9!#
datname |datdba|encoding|datpath
-------------+------+--------+-------------
template1 | 1739| 1|template1
postgres | 1739| 0|postgres
euc_jp | 1739| 1|euc_jp
euc_kr | 1739| 3|euc_kr
euc_cn | 1739| 2|euc_cn
unicode | 1739| 5|unicode
mule_internal| 1739| 6|mule_internal
encoding $B%+%i%`$N?tCM$,$=$N%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$rI=$7$^$9
($B%(%s%3!<%G%#%s%0ID)$B!#%(%s%3!<%G%#%s%0 ID $B$r%(%s%3!<%G%#%s%0L>$KJQ49
$B$9$k$K$O!"pg_encoding $B%3%^%s%I$r;HMQ$7$^$9!#$?$H$($P!"
$ pg_encoding 1
EUC_JP
$B$N$h$&$K$J$j$^$9!#$J$*!"pg_encoding $B$O?t;z0J30$,M?$($i$l$k$H%(%s%3!<
$B%G%#%s%0L>$H8+Jo$7$F%(%s%3!<%G%#%s%0ID$B$rJV$7$^$9!#
$ pg_encoding EUC_JP
1
$B4D6-JQ?t PGCLIENTENCODING $B$K$D$$$F!'
$B4D6-JQ?t PGCLIENTENCODING $B$,@_Dj$5$l$F$$$J$$>l9g!"libpq $B$O%;%C%7%g%s
$B3+;O;~$K%P%C%/%(%s%IB&$K%(%s%3!<%G%#%s%0$rLd$$9g$o$;!"$=$NCM$r4D6-JQ?t
PGCLIENTENCODING $B$K@_Dj$7$^$9!#
$B4D6-JQ?t PGCLIENTENCODING $B$,@_Dj$5$l$F$$$k>l9g$O$=$NCM$,M%@h$5$l!"%P%C
$B%/%(%s%IB&$H0[$J$k%(%s%3!<%G%#%s%0$,;HMQ$G$-$^$9!#@_Dj2DG=$J%(%s%3!<
$B%G%#%s%0$O!">e5-$K2C$(!"SJIS ($B%7%U%HJIS)$B$H BiG5 $B$,;XDj$G$-$^$9!#
$B$A$J$_$K!"SJIS $B$O JISX0201 $B$N 1$B%P%$%H%+%J!"$$$o$f$k!VH>3Q%+%?
$B%+%J!W$b%5%]!<%H$7$F$$$^$9($B7h$7$F!VH>3Q%+%?%+%J!W$N;HMQ$r$*4+
$B$a$7$F$$$k$o$1$8$c$J$$$G$9$,)$B!#
$B$?$H$($P!"MB=EUC_JP $B$G PostgeSQL $B$,%$%s%9%H!<%k$5$l$F$$$k>l9g!"
postmaster $B$rN)$A>e$2$k$H$-$K4D6-JQ?t PGCLIENTENCODING $B$K SJIS $B$r@_
$BDj$9$k$H!"%U%m%s%H%(%s%I$O SJIS $B%3!<%I$G PostgreSQL $B$K%"%/%;%9$G$-$k$h
$B$&$K$J$j$^$9!#$?$@$7!"%G!<%?%Y!<%9$K3JG<$5$l$k%G!<%?<+BN$O$"$/$^$G
MB $B$G;XDj$7$? EUC_JP $B$N$^$^$G$9!#
$B%U%m%s%H%(%s%IB&$G%;%C%7%g%sKh$K%(%s%3!<%G%#%s%0$rJQ$($k$3$H$b$G$-$^
$B$9!#%;%C%7%g%s3+;O;~$K4D6-JQ?t PGCLIENTENCODING $B$,%;%C%H$5$l$F$$$k$H!"
$B$=$l$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$K:NMQ$5$l$^$9!#$3$N5!G=$rMx
$BMQ$9$k$H!"$"$k%f!<%6$O EUC_JP $B$G!"JL$J%f!<%6$O SJIS $B$GF1$8%G!<%?%Y!<
$B%9$K%"%/%;%9$9$k$H$$$&$h$&$J$3$H$,$G$-$k$h$&$K$J$j$^$9!#
MB=MULE_INTERNAL $B$G PostgreSQL $B$r%$%s%9%H!<%k$7$F$*$/$H!"IaCJ$O
EUC_JP $B$G%U%m%s%H%(%s%I$rMxMQ$7!"J#?t$NJ8;z=89g$r:.:_$5$;$k$H$-$@$1%/
$B%i%$%"%s%H$r MULE_INTERNAL $B$K@_Dj$9$k$J$I$N;H$$J,$1$,$G$-$FJXMx$G$9!#
$B$?$@!"0lHL$K EUC_JP $B$KHf$Y!"MULE_INTERNAL $B$K$h$k%G!<%?I=8=$O$d$d%9%Z!<
$B%9$r6t$&$N$G!"$=$N$X$s$O9MN8$7$F$*$/I,MW$,$"$j$^$9!#$?$H$($P!"2$B%P%$
$B%H$GI=8=$G$-$k4A;z$O MULE_INTERNAL $B$G$O 3$B%P%$%H$rMW$7$^$9!#
$BCm0U$7$F$*$/I,MW$,$"$k$N$O!"%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$H%U%m%s
$B%H%(%s%IB&$N%(%s%3!<%G%#%s%0$,$$$D$bAj8_JQ49$G$-$k$H$O8B$i$J$$$3$H$G
$B$9!#6KC<$JOC!"%P%C%/%(%s%IB&$, EUC_JP $B$J$N$K!"%U%m%s%H%(%s%IB&$,
EUC_KR $B$@$C$?$i$I$&$J$k$G$7$g$&!#
$B$3$N>l9g PostgreSQL $B$OJQ49$G$-$J$$%3!<%I$r 16$B?JI=8=$KJQ49$7$F$7$^$$
$B$^$9!#$?$H$($P!""(bdae)" $B$N$h$&$K!#$J$*!"$3$N 16$B?JI=8=$O mule
internalcode $B$N%3!<%I$G$"$k$3$H$KCm0U$7$F2<$5$$!#$3$l$O!"D>@\%U%m%s
$B%H%(%s%I <--> $B%P%C%/%(%s%I$N%(%s%3!<%G%#%s%0$rJQ49$9$k$N$G$O$J$/!"0l
$BEYFbItI=8=$G$"$k mule internal code $B$r7PM3$7$F$$$k$?$a$G$9!#
$B%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$N@_Dj$O!""set client_encoding" $B%3
$B%^%s%I$G$b2DG=$G$9!#$?$H$($P!"
set client_encoding to 'sjis';
$B$G%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$r SJIS $B$K@_Dj$G$-$^$9!#<B:]!"%/
$B%i%$%"%s%H$,%P%C%/%(%s%I$K@\B3$9$k:]$K$O libpq $B$NCf$G "set
client_encoding" $B%3%^%s%I$rH/9T$7$F$$$^$9!#%;%C%7%g%sCf$K
set client_encoding" $B%3%^%s%I$rH/9T$9$l$P!"F0E*$K%(%s%3!<%G%#%s%0$N@ZBX$(
$B$,$G$-$^$9$,!"$=$N:]$K$O4D6-JQ?t PGCLIENTENCODING $B$rF1;~$K%U%m%s%H%(
$B%s%I%"%W%j%1!<%7%g%s$NCf$G@_Dj$7D>$9I,MW$,$"$j$^$9!#(psql $B$K$O8=:_$3
$B$N5!G=$,$J$$$?$a!";v<B>eF0E*$K%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$r@_
$BDj$9$k$3$H$,$G$-$^$;$s!#)
$B8=:_@_Dj$5$l$F$$$k%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$O
show client_encoding;
$B$G;2>H$G$-$^$9!#$^$?!"
reset client_encoding;
$B$O!"%G%U%)%k%H$N%U%m%s%H%(%s%I%(%s%3!<%G%#%s%0@_Dj$KI|5"$5$;$^$9!#
postmaster$B$rN)$A>e$2$k$H$-$K4D6-JQ?t PGCLIENTENCODING $B$,@_Dj$5$l$F$$
$B$k$H$=$N%(%s%3!<%G%#%s%0$K!"$=$&$G$J$1$l$P%3%s%Q%$%k;~$K;XDj$7$?%P%C
$B%/%(%s%IB&$N%(%s%3!<%G%#%s%0$HF1$8$K$J$j$^$9!#
$B@)8B;v9`!'
SJIS $B$r;HMQ$9$k>l9g!"PostgreSQL $B$N%U%m%s%H%(%s%I$G$^$H$b$KBP1~$7$F$$$k
$B$N$O psql $B$@$1$G$9!#Tcl/Tk$B!"$=$N$[$+$OBP1~$7$F$^$;$s!#
$B<U<-!'
o $B3F<oJ8;z%;%C%H!"%3!<%I7O$K$D$$$F!"F|K\8l PostgreSQL $B%a!<%j%s%0%j%9%H
$B$N%a%s%P$NJ}$+$i%"%I%P%$%9$rD:$-$^$7$?!#$3$3$K46<U$7$^$9!#
$B$^$?!"SJIS $BBP1~$K$D$$$F$O!";T@n@$B$*CcBg$5$s$N%Q%C%A$r;29M$K$5$;$F$$
$B$?$@$-$^$7$?!#
$B2~DjMzNr!'
1999/1/26 Big5 $B%5%]!<%HDI2C
* Big5 $B$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$H$7$FMxMQ$G$-$k$h
$B$&$K$J$j$^$7$?!#$3$N>l9g!"%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$O
EUC_TW $B$^$?$O MULE_INTERNAL $B$H$7$^$9!#
* EUC_TW $B$N regression test $B%1!<%9$rDI2C
(contributed by Jonah Kuo <jonahkuo@mail.ttn.com.tw>)
1998/12/16 $BK\%I%-%e%a%s%H=$@5!#
* Makefile.custom $B$G MB=EUC_JP $B$J$I$H@_Dj$9$kJ}K!$O 6.4 $B0J9_
$B%5%]!<%H$5$l$F$$$J$$$N$G:o=|$7$?!#
* $BJ8;z%3!<%I $B"* $B%(%s%3!<%G%#%s%0!"%/%i%$%"%s%H"*%U%m%s%H%(%s%I
$B%5!<%P"*%P%C%/%(%s%I $B$K$=$l$>$l8l6g$r=$@5!#
1998/12/15 6.4 $B8~$1%P%0=$@5%Q%C%A%j%j!<%9!#
* SQL_ASCII $B%5%]!<%H$N%P%0=$@5
1998/11/21 6.4 $B8~$1%P%0=$@5%Q%C%A%j%j!<%9!#
* BINARY CURSOR $B$NLdBj$r=$@5
* pg_dumpall $B$N%P%0=$@5
1998/11/5 6.4 $B%j%j!<%9!#
* pg_database $B$N encoding $B%+%i%`$, MB $B$,M-8z$G$J$$$H$-$K$b
$BDI2C$5$l$k$h$&$K$J$C$?!#$=$N$?$a!"MB $B$,M-8z$G$J$$$H$-$K$O!"
ASCII $B$N%(%s%3!<%G%#%s%0$rI=$9 SQL_ASCII $B$r?7$7$$%(%s%3!<%G%#%s%0
$B$H$7$FDI2C$7$?!#$3$l$K$H$b$J$$!"%(%s%3!<%G%#%s%0L>$KBP1~$9$k
$B%(%s%3!<%G%#%s%0ID$B$, SQL_ASCII $B$r 0 $B$H$9$kHV9f$KJQ99$K$J$C$?!#
1998/7/22 6.4 $B&A8~$1$K%Q%C%A$r%j%j!<%9!#
* initdb/createdb/create database $B$G%P%C%/%(%s%IB&$N
$B%(%s%3!<%G%#%s%0$r@_Dj$-$k5!G=<BAu!#$3$N$?$a!"%7%9%F%`%+%?%m
$B%0$N pg_database $B$K?7$7$$%+%i%` encoding $B$rDI2C(MB$B$,M-8z$J;~$@$1)
* copy $B$, PGCLIENTENCODING $B$KBP1~
* SQL92 $B$N "SET NAMES" $B$r%5%]!<%H(MB$B$,M-8z$J;~$@$1)
* LATIN2-5 $B$r%5%]!<%H
* regression test $B$K unicode $B$N%F%9%H%1!<%9$rDI2C
* MB $B@lMQ$N regression $B%F%9%H%G%#%l%/%H%j test/mb $B$rDI2C
* $B%=!<%9%U%!%$%k$NCV$->l=j$rBgI}8+D>$7!#MB $B4X78$O
include/mb, backend/utils/mb $B$KCV$/$h$&$K$7$?
1998/5/25 $B%P%0=$@5(mb_b3.patch $B$H$7$F pgsql-jp ML $B$K%j%j!<%9!"
$BK\2H$G$O 6.4 snapshot $B$K<h$j9~$^$l$kM=Dj)
1998/5/18 $B5!G=DI2C!?%P%0=$@5(mb_b2.patch $B$H$7$F pgsql-jp ML $B$K%j%j!<%9!"
$BK\2H$G$O 6.4 snapshot $B$K<h$j9~$^$l$kM=Dj)
* $B4D6-JQ?t PGCLIENTENCODING $B$N%5%]!<%H!#%U%m%s%H%(%s%IB&$N
$B%(%s%3!<%G%#%s%0$r;XDj$9$k!#8=:_!"SJIS, EUC_*, MULE_INTERNAL,
LATIN1 $B$,;XDj$G$-$k!#$^$?!"
set client_encoding to 'sjis';
$B$G$b2DG=
* 8bit $BJ8;z$,EO$k$HLdBj$,5/$-$k2U=j$K$G$-$k$@$1BP1~
1998/4/21 $B5!G=DI2C!?%P%0=$@5(mb_b1.patch $B$H$7$F pgsql-jp ML $B$K%j%j!<%9!"
$BK\2H$G$O 6.4 snapshot $B$K<h$j9~$^$l$F$$$k)
* character_length(), position(), substring() $B$N%^%k%A%P%$%H
$BBP1~
* octet_length() $BDI2C $B"* initdb $B$N$d$jD>$7I,MW
* configure $B$N%*%W%7%g%s$K MB $B%5%]!<%HDI2C
(ex. configure --with-mb=EUC_JP)
* EUC_KR $B$N regression test $BDI2C
("Soonmyung. Hong" <hong@lunaris.hanmesoft.co.kr> $B$5$sDs6!)
* EUC_JP $B$N regression test $B$K character_length(), position(),
substring(), octet_length() $BDI2C
* regress.sh $B$N SystemV $B$K$*$1$kHs8_49@-=$@5
* toupper(), tolower() $B$K 8bit $BJ8;z$,EO$k$HMn$A$k$3$H$,
$B$"$k$N$r=$@5
1998/3/25 PostgreSQL 6.3.1 $B%j%j!<%9!"MB PL2 $B$,<h$j9~$^$l$k
1998/3/10 PL2 $B$r%j%j!<%9
* EUC_JP, EUC_CN, MULE_INTERNAL $B$N regression test $B$rDI2C
(EUC_CN $B$N%G!<%?$O he@sra.co.jp $B$5$sDs6!)
* regexp $B$K$*$$$F!"isalpha $B$J$I$K unsigend char $B0J30$NCM$,
$BEO$i$J$$$h$&$K%,!<%I$r$+$1$k
* $B1Q8l$N%I%-%e%a%s%H$rDI2C
* MB $B$rDj5A$7$J$$>l9g$KH/@8$9$k%P%0$r=$@5
1998/3/1 PL1 $B$r%j%j!<%9
$B0J>e!#