Revision history for this software.
2.13.6.23 2026-07-14 00:00:00
- add 'sjis' encoding, JISC Shift_JIS (JIS X 0201 and JIS X 0208 only,
CP932 extended characters are not converted, use 'cp932' for them)
with the eras 'sjis1978' (JIS C 6226-1978), 'sjis1983' (JIS X
0208-1983), 'sjis1990' (JIS X 0208-1990), 'sjis2000' (JIS X
0213:2000), and 'sjis2004' (JIS X 0213:2004). The year-less 'sjis'
is the 1990 era. The eras differ by the JIS C 6226-1978 versus JIS
X 0208-1983 exchanged/relocated codes, the two kanji appended by
JIS X 0208-1990 (U+51DC, U+7199), and the ten kanji appended by JIS
X 0213:2004.
- add 'euc' encoding, JISC EUC-JP (code set 0, 1, 2, and 3), with the
eras 'euc1978', 'euc1983', 'euc1990', 'euc2000', and 'euc2004' (the
year-less 'euc' is the 1990 era). 'euc' of each era is derived by
encoding conversion from the 'sjis' column of the same era via
men-ku-ten, so no new mapping data is added for code set 0, 1,
and 2
- support EUC-JP code set 3 (SS3 0x8F + JIS X 0212) input/output on
'euc1990' (and so the year-less 'euc') for every character that
has a row in the Jacode4e table through some OTHER encoding
(CP932X, CP932, CP932IBM, CP932NEC, CP00930, KEIS78/83/90, JEF,
JIPS(J)/(E), or LetsJ). A character whose ONLY repertoire
membership is JIS X 0212 (about half of the JIS X 0212 repertoire;
3108 of 6067 code points in the source table) has no row and
becomes GETA, because giving it one would require allocating a new
UTF-8-SPUA-JP code point and is out of scope for this release;
JIS X 0208 always wins over JIS X 0212 for a character that is in
both (matches how 'sjis'/'euc'/'jis' behave for era differences).
eras other than 1990 (1978, 1983, 2000, 2004) have no code set 3,
since JIS X 0212 was specifically a 1990-era JIS supplement
- the JIS X 0212 mapping is embedded as the "__EUC_X0212__" block
appended after the main table in lib/Jacode4e.pm's __DATA__
section (JIS X 0212 GL octets + Unicode code point per line,
derived from the JIS X 0212 (1990) to Unicode 1.1 Table already
bundled at make__DATA__/LetsJ/...JIS0212.TXT); regenerate it with
make__DATA__/JIS/fill_euc_codeset3.pl
- add 'jis' encoding, JISC ISO-2022-JP (7bit JIS), with the eras
'jis1978', 'jis1983', 'jis1990', 'jis2000', and 'jis2004' (the
year-less 'jis' is the 1990 era). 'jis' of each era shares the
'euc' table of the same era, so JIS X 0212 (ESC $ ( D) is
available on 'jis1990' for the same character set as EUC-JP code
set 3 of 'euc1990' (input is always accepted; output needs the
JIS_X0212 option, see below)
input escape sequences: ESC ( B, ESC ( J, ESC ( H, ESC ( I,
ESC $ @, ESC $ B, ESC $ ( @, ESC $ ( B, ESC $ ( D, and
ESC & @ ESC $ B
8bit JIS Katakana (GR octets 0xA1..0xDF) is also accepted on input
SO (0x0E) and SI (0x0F) are input shift functions to JIS X 0201
Katakana (JIS7 katakana habit) with option JIS_SOSI => 1, and are
data octets by default; SI restores the GL designation before SO
output uses ESC ( B and ESC $ B with option OUTPUT_SHIFTING => 1;
the DBCS designation on output is ESC $ @ for 'jis1978', ESC $ B
for 'jis1983'/'jis1990', ESC $ ( O for 'jis2000', and ESC $ ( Q
for 'jis2004'
- add option JIS_X0212 => 1: a character that has no JIS X 0208 code
but has a JIS X 0212 code is written as ESC $ ( D and JIS X 0212
codes on 'jis' output (ISO-2022-JP-1); requires OUTPUT_SHIFTING
=> 1 because escape sequences must be allowed in the output;
default is false, effective only when $OUTPUT_encoding is 'jis'
- add option JIS_KANA => 'GR' (default) / 'I' / 'SO': JIS X 0201
Katakana style on 'jis' output (GR octets, ESC ( I and GL octets,
or SO + GL octets + SI)
- add option JIS_DBCS => 'B' (default) / '@' / '&@B' / '(B' / '(@':
DBCS escape sequence on 'jis' output
- add option JIS_SBCS => 'B' (default) / 'J' / 'H': SBCS escape
sequence on 'jis' output
- add five columns "sjis1978", "sjis1983", "sjis1990", "sjis2000",
and "sjis2004" to the conversion table in __DATA__ (row count is
unchanged, all previously existing columns are unchanged), and
make__DATA__/make__DATA__.pl generates them (the "euc" and "jis"
columns are not stored in __DATA__; they are derived at load time
from the "sjis" column of each era and the "__EUC_X0212__" block,
see above)
- add 'reset' hook to Jacode4e::convert() to initialize the kana
shifting state of 'jis' encoding on every call
- add doc/jacode4e_cheatsheet.*.txt (21 languages, same language set
as the Jacode distribution: BM BN EN FR HI ID JA KM KO MN MY NE SI
TH TL TR TW UR UZ VI ZH)
- add t/0306_sjis_basic.t
- add t/0307_euc_basic.t
- add t/0308_jis_basic.t
- add t/0309_sjis_euc_jis_roundtrip.t (whole code space roundtrip)
- add t/0310_sjis_vs_cp932.t ('sjis' is JIS X 0201/0208 subset of 'cp932')
- add t/0312_euc_codeset3.t (EUC-JP code set 3 / JIS X 0212
input/output and its coverage limits)
- add t/0313_jis_variants_input.t
- add t/0314_jis_variants_output.t
- add t/0315_jis_x0212_output.t (JIS X 0212 output on 'jis' with the
JIS_X0212 option)
- add t/0318_sjis_euc_jis_era.t (era of 'sjis', 'euc', and 'jis')
- add t/0319_euc_x0212_fill.t (repertoire coverage count, EUC code
set 3 target uniqueness, JIS X 0208-over-JIS X 0212 precedence,
and era isolation)
- add t/9080_cheatsheets.t
- add "sjis", "euc", and "jis" to encoding list of cheatsheet tests
t/9001..t/9030
- add the era encodings ('sjis1978'.. 'sjis2004', 'euc1978'..
'euc2004', 'jis1978'.. 'jis2004') to --dumptable
- package lib/Jacode4e.pm-2.13.6.23.TABLE.*.txt (generated by
--dumptable; the EUC/JIS/SJIS dumps are one file per era,
...TABLE.EUC1978.txt .. ...TABLE.EUC2004.txt, etc.)
- fix Jacode4e::convert() return value: a trailing shifting code (such
as the last ESC ( B / ESC $ B of 'jis', SI/SO of 'cp00930' and 'keis*',
etc.) was counted as one character; input consisting of shifting
code(s) only now returns 0 (the closing shifting code for
OUTPUT_SHIFTING is still emitted as before)
- add t/0311_trailing_shift_count.t
- integrate Jacode4e::RoundTrip into Jacode4e: add option
ROUND_TRIP => 1 for round-trip (reversible) conversion. A character
that has no native code in an encoding is allocated a code point from
the user-defined (GAIJI) area of the encoding (cp932x, cp00930,
keis78, keis83, keis90, jef, jef9p, jipsj, jipse, letsj, utf8, utf8.1,
utf8jp). The default (no ROUND_TRIP option) keeps the ordinary
Jacode4e behavior unchanged (a character with no native code becomes
GETA). The ROUND_TRIP table is built lazily on the first ROUND_TRIP
call (all data lines are kept in memory for this), so there is no
extra cost when the option is not used.
CAUTION: both "A to B" and "B to A" must specify ROUND_TRIP => 1 and
use the same version of Jacode4e (the allocation order of the
user-defined area depends on the data table of the version).
- add --dumptable-roundtrip to dump the ROUND_TRIP table into
"*.ROUNDTRIP.*.txt" files, separately from --dumptable
- add t/0316_round_trip.t
- add 'euc2004' encoding, JISC EUC-JIS-2004 (JIS X 0201, and
JIS X 0213 plane 1 as two GR octets, plane 2 as SS3 0x8F + two
GR octets). It is derived from the 'sjis2004' column via men-ku-ten
(plane-row-cell), so no new mapping data is added.
- add 'jis2004' encoding, JISC ISO-2022-JP-2004.
input escape sequences: ESC ( B, ESC ( J, ESC ( I, ESC $ B,
ESC $ @, ESC $ ( Q (JIS X 0213:2004 plane 1), ESC $ ( O
(JIS X 0213:2000 plane 1), and ESC $ ( P (plane 2).
output uses ESC $ ( Q for plane 1 (default), ESC $ ( P for plane 2,
and ESC ( B for US-ASCII, with option OUTPUT_SHIFTING => 1.
- add option JIS2004_PLANE1 => 'Q' (default, JIS X 0213:2004) or 'O'
(JIS X 0213:2000): plane 1 designation escape sequence on 'jis2004'
output
- add 'euc2004' to --dumptable (the euc2004 table dumps plane 1 rows
and plane 2 rows in EUC-JIS-2004 code set 3 form, three-octet row
labels such as "EUC2004 8FA1A0")
- add t/0317_euc2004_jis2004.t
- restore the full-width "|" guide notation in the __DATA__ header
(one "|" per code digit of each already-defined column, matching
the "#1234567 1234 ..." ruler line); the guide lines are comments
(skipped by the "next if /^#/" parser), so this is cosmetic only
- regenerate doc/jacode4e_cheatsheet.*.txt (all 21 languages) with:
the year editions of 'sjis'/'euc'/'jis' (1978/1983/1990/2000/2004,
the year-less name is the 1990 edition), a beginner-friendly section
on the differences between the JIS editions by year, all twelve
{ %option } keys each with a description and a call example (the
ROUND_TRIP option is documented in the same style as the others,
not as a separate caution), and runnable programming samples
- add doc/build_cheatsheets.pl to generate the 21 cheat sheets from
one shared template (Perl 5.005_03 compatible)
- created by INABA Hitoshi
2.13.6.22 2026-04-18 00:00:00
- add t/9001_cheatsheet_ja.t (Japanese cheatsheet + tests)
- add t/9002_cheatsheet_en.t (English cheatsheet + tests)
- add t/9003_cheatsheet_zh_CN.t (Simplified Chinese cheatsheet + tests)
- add t/9004_cheatsheet_ko.t (Korean cheatsheet + tests)
- add t/9005_cheatsheet_zh_TW.t (Traditional Chinese cheatsheet + tests)
- add t/9006_cheatsheet_de.t (German cheatsheet + tests)
- add t/9007_cheatsheet_fr.t (French cheatsheet + tests)
- add t/9008_cheatsheet_es.t (Spanish cheatsheet + tests)
- add t/9009_cheatsheet_pt.t (Portuguese cheatsheet + tests)
- add t/9010_cheatsheet_it.t (Italian cheatsheet + tests)
- add t/9011_cheatsheet_ru.t (Russian cheatsheet + tests)
- add t/9012_cheatsheet_ar.t (Arabic cheatsheet + tests)
- add t/9013_cheatsheet_hi.t (Hindi cheatsheet + tests)
- add t/9014_cheatsheet_th.t (Thai cheatsheet + tests)
- add t/9015_cheatsheet_vi.t (Vietnamese cheatsheet + tests)
- add t/9016_cheatsheet_id.t (Indonesian cheatsheet + tests)
- add t/9017_cheatsheet_nl.t (Dutch cheatsheet + tests)
- add t/9018_cheatsheet_pl.t (Polish cheatsheet + tests)
- add t/9019_cheatsheet_sv.t (Swedish cheatsheet + tests)
- add t/9020_cheatsheet_tr.t (Turkish cheatsheet + tests)
- add t/9021_cheatsheet_bm.t (Malay cheatsheet + tests)
- add t/9022_cheatsheet_bn.t (Bengali cheatsheet + tests)
- add t/9023_cheatsheet_km.t (Khmer cheatsheet + tests)
- add t/9024_cheatsheet_mn.t (Mongolian cheatsheet + tests)
- add t/9025_cheatsheet_my.t (Burmese cheatsheet + tests)
- add t/9026_cheatsheet_ne.t (Nepali cheatsheet + tests)
- add t/9027_cheatsheet_si.t (Sinhala cheatsheet + tests)
- add t/9028_cheatsheet_tl.t (Filipino/Tagalog cheatsheet + tests)
- add t/9029_cheatsheet_ur.t (Urdu cheatsheet + tests)
- add t/9030_cheatsheet_uz.t (Uzbek cheatsheet + tests)
- add t/9050_podtest_G11.t (Pod::Checker >= 1.51 guard)
- add t/9051_podtest_G12.t (Pod::Checker >= 1.60 guard)
- add SECURITY.md
- created by INABA Hitoshi
2.13.6.21 2023-03-22 00:00:00
- update POD
- created by INABA Hitoshi
2.13.6.20 2022-10-03 00:00:00
- update POD
- created by INABA Hitoshi
2.13.6.19 2022-01-27 00:00:00
- add some documents
- created by INABA Hitoshi
2.13.6.18 2021-09-12 00:00:00
- fixed some erratas of mapping
- added many code to mapping
- add lib/Jacode4e.pm-*.txt files
- created by INABA Hitoshi
2.13.6.17 2021-02-11 00:00:00
- rewrote global "%_" to "my %x"
- created by INABA Hitoshi
2.13.6.16 2019-09-30 00:00:00
- supports optimized RFC3629 for ja_JP
- created by INABA Hitoshi
2.13.6.15 2019-09-20 00:00:00
- 0015_option_override_mapping.t supports U+32FF SQUARE ERA NAME REIWA
- created by INABA Hitoshi
2.13.6.14 2019-08-20 00:00:00
- remove xt/*.t to reduce file size
- created by INABA Hitoshi
2.13.6.13 2019-07-13 00:00:00
- fix Extra Issues: has_meta_json
- fix Extra Issues: use_warnings
- fix Experimental Issues: meta_yml_has_repository_resource
- created by INABA Hitoshi
2.13.6.12 2019-04-01 00:00:00
- support 'utf8.1' for $OUTPUT_encoding and $INPUT_encoding
- support 'cp932ibm' for $OUTPUT_encoding
- support 'cp932nec' for $OUTPUT_encoding
- created by INABA Hitoshi
2.13.6.11 2019-01-03 00:00:00
- avoid ActiveState Code PPM INDEX: Too much output (limit is 10.0 MB)
- support INPUT_LAYOUT option when $INPUT_encoding is cp932x, cp932, sjis2004
- created by INABA Hitoshi
2.13.6.10 2018-12-10 00:00:00
- add some documents
- add make__DATA__/JIS/*
- created by INABA Hitoshi
2.13.6.9 2018-12-07 00:00:00
- remove jacode4e.pl
- support UNISYS LetsJ encoding
- add some tests
- created by INABA Hitoshi
2.13.6.8 2018-12-01 00:00:00
- makes die if __DATA__ has duplicate definitions
- allow comment line in __DATA__
- add comment in __DATA__
- created by INABA Hitoshi
2.13.6.7 2018-08-19 00:00:00
- support OVERRIDE_MAPPING
- created by INABA Hitoshi
2.13.6.6 2018-07-25 00:00:00
- support jef9p
- created by INABA Hitoshi
2.13.6.5 2018-04-09 00:00:00
- add known license
- support JIPS(J) and JIPS(E)
- add JIPSJ_by_CP932.pl
- created by INABA Hitoshi
2.13.6.4 2018-03-06 00:00:00
- add Jacode4e.pm
- change t/*.t, and xt/*.t as Perl5 module
- created by INABA Hitoshi
2.13.6.3 2018-02-24 00:00:00
- change META.yml version 1.3 to 1.4
- remove pMakefile.PL
- remove lib/Test/Simply.pm
- add pmake.bat
- add LICENSE
- created by INABA Hitoshi
2.13.6.2 2018-02-05 00:00:00
- try Kwalitee Indicator: buildtool_not_executable
- created by INABA Hitoshi
2.13.6.1 2018-01-27 00:00:00
- branched from jcode.pl,v 2.13 2000/09/29 16:10:05 utashiro Exp
- created by INABA Hitoshi