version bump 1.5.0

new codepages:

- 808   OEM Russian; Cyrillic + Euro symbol
- 872   OEM Cyrillic (primarily Russian) + Euro Symbol
- 1010  IBM EBCDIC French
- 1132  IBM EBCDIC Lao (1132 / 1133 / 1341)
- 47451 Atari ST/TT

other changes:

- updated travis versions for test
- miscellaneous adjustments to tooling
This commit is contained in:
SheetJS 2016-09-22 13:42:47 -04:00
parent 9e7fe631db
commit 5aacbbf522
59 changed files with 2741 additions and 1010 deletions

24
.flowconfig Normal file

@ -0,0 +1,24 @@
[ignore]
.*/node_modules/.*
.*/dist/.*
.*/test.js
.*/bits/.*
.*/ctest/.*
.*/misc/.*
.*/codepages/.*
.*/shim.js
.*/prof.js
.*/cputils.js
.*/cptable.js
.*/sbcs.js
.*/dbcs.js
[include]
cputils.flow.js
[libs]
misc/flow.js
[options]

@ -1,6 +1,7 @@
language: node_js
node_js:
- "5.0"
- "6"
- "5"
- "4.2"
- "0.12"
- "0.10"

101
Makefile

@ -1,62 +1,87 @@
SHELL=/bin/bash
VOC=voc
TARGETS=cptable.js cputils.js cpexcel.js sbcs.js
TARGET=cptable.js
AUXTARGETS=cputils.js cpexcel.js sbcs.js
.PHONY: js voc
## Main Targets
.PHONY: all
all: voc ## Build library and auxiliary scripts
.PHONY: voc
voc test.js: codepage.md
$(VOC) codepage.md
js: make.sh codepage.md
.PHONY: js
js: make.sh codepage.md ## Build all output targets
bash make.sh <(awk -F, '$$3=="1"' pages.csv) sbcs.js cptable
bash make.sh excel.csv cpexcel.js cptable
bash make.sh
make cputils.js
.PHONY: init
init:
bash misc/init.sh
cputils.js: %.js : %.flow.js
node -e 'process.stdout.write(require("fs").readFileSync("$<","utf8").replace(/^[ \t]*\/\*[:#][^*]*\*\/[ \t]*(\n)?/gm,"").replace(/\/\*[:#][^*]*\*\//gm,""))' > $@
.PHONY: clean
clean:
clean: ## Remove targets and build artifaats
rm -f make.sh .vocrc pages.csv bits/*.js
.PHONY: dist ## Copy files for distribution
dist: $(TARGET) $(AUXTARGETS)
cp $(TARGET) $(AUXTARGETS) LICENSE dist/
## Testing
.PHONY: test mocha
test mocha: test.js
mocha -R spec
test mocha: test.js $(TARGET) baseline ## Run test suite
mocha -R spec -t 20000
.PHONY: ctest
ctest: ## Build browser test (into ctest/ subdirectory)
bash ctest/fixtures.sh
.PHONY: ctestserv
ctestserv: ## Start a test server on port 8000
@python -mSimpleHTTPServer
.PHONY: baseline
baseline: ## Build test baselines
@bash ./misc/make_baseline.sh
## Code Checking
.PHONY: lint
lint: $(TARGET) $(AUXTARGETS) ## Run jshint and jscs checks
@jshint --show-non-errors $(TARGET) $(AUXTARGETS)
@jshint --show-non-errors package.json
@jshint --show-non-errors --extract=always $(HTMLLINT)
@jscs $(TARGET) $(AUXTARGETS)
.PHONY: flow
flow: lint ## Run flow checker
@flow check --all --show-all-errors
.PHONY: cov
cov: misc/coverage.html ## Run coverage test
misc/coverage.html: $(TARGET) test.js
mocha --require blanket -R html-cov -t 20000 > $@
.PHONY: coveralls
coveralls: ## Coverage Test + Send to coveralls.io
mocha --require blanket --reporter mocha-lcov-reporter -t 20000 | node ./node_modules/coveralls/bin/coveralls.js
.PHONY: prof
prof:
cat misc/prof.js test.js > prof.js
node --prof prof.js
.PHONY: lint
lint:
jshint --show-non-errors $(TARGETS)
jscs $(TARGETS)
.PHONY: ctest
ctest:
bash ctest/fixtures.sh
.PHONY: cov cov-spin
cov: misc/coverage.html
cov-spin:
make cov & bash misc/spin.sh $$!
.PHONY: help
help:
@grep -hE '(^[a-zA-Z_-][ a-zA-Z_-]*:.*?|^#[#*])' $(MAKEFILE_LIST) | bash misc/help.sh
misc/coverage.html: test.js
mocha --require blanket -R html-cov > $@
.PHONY: coveralls coveralls-spin
coveralls:
mocha --require blanket --reporter mocha-lcov-reporter | ./node_modules/coveralls/bin/coveralls.js
coveralls-spin:
make coveralls & bash misc/spin.sh $$!
.PHONY: dist
dist: dist/cpexcel.full.js dist/cptable.full.js dist/sbcs.full.js
cp $(TARGETS) dist/
cp LICENSE dist/
.PHONY: dist/cpexcel.full.js dist/cptable.full.js dist/sbcs.full.js
dist/cpexcel.full.js dist/cptable.full.js dist/sbcs.full.js : dist/%.full.js: %.js cputils.js
cat $^ > $@
#* To show a spinner, append "-spin" to any target e.g. cov-spin
%-spin:
@make $* & bash misc/spin.sh $$!

@ -1,15 +1,20 @@
# Verifying Codepages
After installing every language pack in Windows 7, many codepages are available
via the .NET System.Text.Encoding class. The MakeEncoding.cs source included with
the project generates a full manifest that can be parsed into a mapping table.
via the .NET System.Text.Encoding class. The included MakeEncoding.cs program
generates a full manifest that can be parsed into a mapping table.
The included `nls2tbl` script extracts data from the various `C_#####.NLS` files
available in the system or system32 directories in various versions of Windows.
Many codepages are also available in various iconv libraries, but there are some
differences. For example, some codepages break ASCII by using the Arabic percent
sign ٪ U+066A but other libraries assume they preserve the ASCII space.
differences. For example, some codepages use the Arabic percent sign ٪ U+066A
instead of the standard ASCII "%".
## Extended Characters
No known codepage uses characters from the SMP, so certain code paths are never
tested. The coverage will not be 100%
# Missing Codepages

362
README.md

@ -47,27 +47,33 @@ appropriate codepage scripts were loaded.
## Usage
The codepages are indexed by number. To get the unicode character for a given
Most codepages are indexed by number. To get the unicode character for a given
codepoint, use the `dec` property:
var unicode_cp10000_255 = cptable[10000].dec[255]; // ˇ
```js
var unicode_cp10000_255 = cptable[10000].dec[255]; // ˇ
```
To get the codepoint for a given character, use the `enc` property:
var cp10000_711 = cptable[10000].enc[String.fromCharCode(711)]; // 255
```js
var cp10000_711 = cptable[10000].enc[String.fromCharCode(711)]; // 255
```
There are a few utilities that deal with strings and buffers:
var 汇总 = cptable.utils.decode(936, [0xbb,0xe3,0xd7,0xdc]);
var buf = cptable.utils.encode(936, 汇总);
var sushi= cptable.utils.decode(65001, [0xf0,0x9f,0x8d,0xa3]); // 🍣
var sbuf = cptable.utils.encode(65001, sushi);
```js
var 汇总 = cptable.utils.decode(936, [0xbb,0xe3,0xd7,0xdc]);
var buf = cptable.utils.encode(936, 汇总);
var sushi= cptable.utils.decode(65001, [0xf0,0x9f,0x8d,0xa3]); // 🍣
var sbuf = cptable.utils.encode(65001, sushi);
```
`cptable.utils.encode(CP, data, ofmt)` accepts a String or Array of characters
and returns a representation controlled by `ofmt`:
- Default output is a Buffer (or Array) of bytes (integers between 0 and 255).
- If `ofmt == 'str'`, return a String where `o.charCodeAt(i)` is the ith byte
- If `ofmt == 'str'`, return a String where `o.charCodeAt(i)` is the `i`-th byte
- If `ofmt == 'arr'`, return an Array of bytes
## Known Excel Codepages
@ -79,7 +85,9 @@ needed.
In node:
var cptable = require('codepage/dist/cpexcel.full');
```js
var cptable = require('codepage/dist/cpexcel.full');
```
## Rolling your own script
@ -87,7 +95,9 @@ The `make.sh` script in the repo can take a manifest and generate JS source.
Usage:
bash make.sh path_to_manifest output_file_name JSVAR
```bash
bash make.sh path_to_manifest output_file_name JSVAR
```
where
@ -119,171 +129,187 @@ the JS source is `codepage.md`, so building is as simple as `voc codepage.md`.
The complete list of hardcoded codepages can be found in the file `pages.csv`.
Some codepages are easier to implement algorithmically. Since these are
hardcoded in utils, there is no corresponding entry (they are "magic")
hardcoded in `utils`, there is no corresponding entry (they are "magic").
| CP# | Information | Description |
| --: | :----------: | :---------- |
| 37| unicode.org |IBM EBCDIC US-Canada
| 437| unicode.org |OEM United States
| 500| unicode.org |IBM EBCDIC International
| 620| NLS |Mazovia (Polish) MS-DOS
| 708|MakeEncoding.cs|Arabic (ASMO 708)
| 720|MakeEncoding.cs|Arabic (Transparent ASMO); Arabic (DOS)
| 737| unicode.org |OEM Greek (formerly 437G); Greek (DOS)
| 775| unicode.org |OEM Baltic; Baltic (DOS)
| 850| unicode.org |OEM Multilingual Latin 1; Western European (DOS)
| 852| unicode.org |OEM Latin 2; Central European (DOS)
| 855| unicode.org |OEM Cyrillic (primarily Russian)
| 857| unicode.org |OEM Turkish; Turkish (DOS)
| 858|MakeEncoding.cs|OEM Multilingual Latin 1 + Euro symbol
| 860| unicode.org |OEM Portuguese; Portuguese (DOS)
| 861| unicode.org |OEM Icelandic; Icelandic (DOS)
| 862| unicode.org |OEM Hebrew; Hebrew (DOS)
| 863| unicode.org |OEM French Canadian; French Canadian (DOS)
| 864| unicode.org |OEM Arabic; Arabic (864)
| 865| unicode.org |OEM Nordic; Nordic (DOS)
| 866| unicode.org |OEM Russian; Cyrillic (DOS)
| 869| unicode.org |OEM Modern Greek; Greek, Modern (DOS)
| 870|MakeEncoding.cs|IBM EBCDIC Multilingual/ROECE (Latin 2)
| 874| unicode.org |Windows Thai
| 875| unicode.org |IBM EBCDIC Greek Modern
| 895| NLS |Kamenický (Czech) MS-DOS
| 932| unicode.org |Japanese Shift-JIS
| 936| unicode.org |Simplified Chinese GBK
| 949| unicode.org |Korean
| 950| unicode.org |Traditional Chinese Big5
| 1026| unicode.org |IBM EBCDIC Turkish (Latin 5)
| 1047|MakeEncoding.cs|IBM EBCDIC Latin 1/Open System
| 1140|MakeEncoding.cs|IBM EBCDIC US-Canada (037 + Euro symbol)
| 1141|MakeEncoding.cs|IBM EBCDIC Germany (20273 + Euro symbol)
| 1142|MakeEncoding.cs|IBM EBCDIC Denmark-Norway (20277 + Euro symbol)
| 1143|MakeEncoding.cs|IBM EBCDIC Finland-Sweden (20278 + Euro symbol)
| 1144|MakeEncoding.cs|IBM EBCDIC Italy (20280 + Euro symbol)
| 1145|MakeEncoding.cs|IBM EBCDIC Latin America-Spain (20284 + Euro symbol)
| 1146|MakeEncoding.cs|IBM EBCDIC United Kingdom (20285 + Euro symbol)
| 1147|MakeEncoding.cs|IBM EBCDIC France (20297 + Euro symbol)
| 1148|MakeEncoding.cs|IBM EBCDIC International (500 + Euro symbol)
| 1149|MakeEncoding.cs|IBM EBCDIC Icelandic (20871 + Euro symbol)
| 1200| magic |Unicode UTF-16, little endian (BMP of ISO 10646)
| 1201| magic |Unicode UTF-16, big endian
| 1250| unicode.org |Windows Central Europe
| 1251| unicode.org |Windows Cyrillic
| 1252| unicode.org |Windows Latin I
| 1253| unicode.org |Windows Greek
| 1254| unicode.org |Windows Turkish
| 1255| unicode.org |Windows Hebrew
| 1256| unicode.org |Windows Arabic
| 1257| unicode.org |Windows Baltic
| 1258| unicode.org |Windows Vietnam
| 1361|MakeEncoding.cs|Korean (Johab)
|10000| unicode.org |MAC Roman
|10001|MakeEncoding.cs|Japanese (Mac)
|10002|MakeEncoding.cs|MAC Traditional Chinese (Big5)
|10003|MakeEncoding.cs|Korean (Mac)
|10004|MakeEncoding.cs|Arabic (Mac)
|10005|MakeEncoding.cs|Hebrew (Mac)
|10006| unicode.org |Greek (Mac)
|10007| unicode.org |Cyrillic (Mac)
|10008|MakeEncoding.cs|MAC Simplified Chinese (GB 2312)
|10010|MakeEncoding.cs|Romanian (Mac)
|10017|MakeEncoding.cs|Ukrainian (Mac)
|10021|MakeEncoding.cs|Thai (Mac)
|10029| unicode.org |MAC Latin 2 (Central European)
|10079| unicode.org |Icelandic (Mac)
|10081| unicode.org |Turkish (Mac)
|10082|MakeEncoding.cs|Croatian (Mac)
|12000| magic |Unicode UTF-32, little endian byte order
|12001| magic |Unicode UTF-32, big endian byte order
|20000|MakeEncoding.cs|CNS Taiwan (Chinese Traditional)
|20001|MakeEncoding.cs|TCA Taiwan
|20002|MakeEncoding.cs|Eten Taiwan (Chinese Traditional)
|20003|MakeEncoding.cs|IBM5550 Taiwan
|20004|MakeEncoding.cs|TeleText Taiwan
|20005|MakeEncoding.cs|Wang Taiwan
|20105|MakeEncoding.cs|Western European IA5 (IRV International Alphabet 5) 7-bit
|20106|MakeEncoding.cs|IA5 German (7-bit)
|20107|MakeEncoding.cs|IA5 Swedish (7-bit)
|20108|MakeEncoding.cs|IA5 Norwegian (7-bit)
|20127| magic |US-ASCII (7-bit)
|20261|MakeEncoding.cs|T.61
|20269|MakeEncoding.cs|ISO 6937 Non-Spacing Accent
|20273|MakeEncoding.cs|IBM EBCDIC Germany
|20277|MakeEncoding.cs|IBM EBCDIC Denmark-Norway
|20278|MakeEncoding.cs|IBM EBCDIC Finland-Sweden
|20280|MakeEncoding.cs|IBM EBCDIC Italy
|20284|MakeEncoding.cs|IBM EBCDIC Latin America-Spain
|20285|MakeEncoding.cs|IBM EBCDIC United Kingdom
|20290|MakeEncoding.cs|IBM EBCDIC Japanese Katakana Extended
|20297|MakeEncoding.cs|IBM EBCDIC France
|20420|MakeEncoding.cs|IBM EBCDIC Arabic
|20423|MakeEncoding.cs|IBM EBCDIC Greek
|20424|MakeEncoding.cs|IBM EBCDIC Hebrew
|20833|MakeEncoding.cs|IBM EBCDIC Korean Extended
|20838|MakeEncoding.cs|IBM EBCDIC Thai
|20866|MakeEncoding.cs|Russian Cyrillic (KOI8-R)
|20871|MakeEncoding.cs|IBM EBCDIC Icelandic
|20880|MakeEncoding.cs|IBM EBCDIC Cyrillic Russian
|20905|MakeEncoding.cs|IBM EBCDIC Turkish
|20924|MakeEncoding.cs|IBM EBCDIC Latin 1/Open System (1047 + Euro symbol)
|20932|MakeEncoding.cs|Japanese (JIS 0208-1990 and 0212-1990)
|20936|MakeEncoding.cs|Simplified Chinese (GB2312-80)
|20949|MakeEncoding.cs|Korean Wansung
|21025|MakeEncoding.cs|IBM EBCDIC Cyrillic Serbian-Bulgarian
|21027| NLS |Extended/Ext Alpha Lowercase
|21866|MakeEncoding.cs|Ukrainian Cyrillic (KOI8-U)
|28591| unicode.org |ISO 8859-1 Latin 1 (Western European)
|28592| unicode.org |ISO 8859-2 Latin 2 (Central European)
|28593| unicode.org |ISO 8859-3 Latin 3
|28594| unicode.org |ISO 8859-4 Baltic
|28595| unicode.org |ISO 8859-5 Cyrillic
|28596| unicode.org |ISO 8859-6 Arabic
|28597| unicode.org |ISO 8859-7 Greek
|28598| unicode.org |ISO 8859-8 Hebrew (ISO-Visual)
|28599| unicode.org |ISO 8859-9 Turkish
|28600| unicode.org |ISO 8859-10 Latin 6
|28601| unicode.org |ISO 8859-11 Latin (Thai)
|28603| unicode.org |ISO 8859-13 Latin 7 (Estonian)
|28604| unicode.org |ISO 8859-14 Latin 8 (Celtic)
|28605| unicode.org |ISO 8859-15 Latin 9
|28606| unicode.org |ISO 8859-15 Latin 10
|29001|MakeEncoding.cs|Europa 3
|38598|MakeEncoding.cs|ISO 8859-8 Hebrew (ISO-Logical)
|50220|MakeEncoding.cs|ISO 2022 JIS Japanese with no halfwidth Katakana
|50221|MakeEncoding.cs|ISO 2022 JIS Japanese with halfwidth Katakana
|50222|MakeEncoding.cs|ISO 2022 Japanese JIS X 0201-1989 (1 byte Kana-SO/SI)
|50225|MakeEncoding.cs|ISO 2022 Korean
|50227|MakeEncoding.cs|ISO 2022 Simplified Chinese
|51932|MakeEncoding.cs|EUC Japanese
|51936|MakeEncoding.cs|EUC Simplified Chinese
|51949|MakeEncoding.cs|EUC Korean
|52936|MakeEncoding.cs|HZ-GB2312 Simplified Chinese
|54936|MakeEncoding.cs|GB18030 Simplified Chinese (4 byte)
|57002|MakeEncoding.cs|ISCII Devanagari
|57003|MakeEncoding.cs|ISCII Bengali
|57004|MakeEncoding.cs|ISCII Tamil
|57005|MakeEncoding.cs|ISCII Telugu
|57006|MakeEncoding.cs|ISCII Assamese
|57007|MakeEncoding.cs|ISCII Oriya
|57008|MakeEncoding.cs|ISCII Kannada
|57009|MakeEncoding.cs|ISCII Malayalam
|57010|MakeEncoding.cs|ISCII Gujarati
|57011|MakeEncoding.cs|ISCII Punjabi
|65000| magic |Unicode (UTF-7)
|65001| magic |Unicode (UTF-8)
| CP# | Source | Description |
|--------:|:-----------:|:-----------------------------------------------------|
| ` 37` | unicode.org | IBM EBCDIC US-Canada |
| ` 437` | unicode.org | OEM United States |
| ` 500` | unicode.org | IBM EBCDIC International |
| ` 620` | NLS | Mazovia (Polish) MS-DOS |
| ` 708` | Windows 7 | Arabic (ASMO 708) |
| ` 720` | Windows 7 | Arabic (Transparent ASMO); Arabic (DOS) |
| ` 737` | unicode.org | OEM Greek (formerly 437G); Greek (DOS) |
| ` 775` | unicode.org | OEM Baltic; Baltic (DOS) |
| ` 808` | unicode.org | OEM Russian; Cyrillic + Euro symbol |
| ` 850` | unicode.org | OEM Multilingual Latin 1; Western European (DOS) |
| ` 852` | unicode.org | OEM Latin 2; Central European (DOS) |
| ` 855` | unicode.org | OEM Cyrillic (primarily Russian) |
| ` 857` | unicode.org | OEM Turkish; Turkish (DOS) |
| ` 858` | Windows 7 | OEM Multilingual Latin 1 + Euro symbol |
| ` 860` | unicode.org | OEM Portuguese; Portuguese (DOS) |
| ` 861` | unicode.org | OEM Icelandic; Icelandic (DOS) |
| ` 862` | unicode.org | OEM Hebrew; Hebrew (DOS) |
| ` 863` | unicode.org | OEM French Canadian; French Canadian (DOS) |
| ` 864` | unicode.org | OEM Arabic; Arabic (864) |
| ` 865` | unicode.org | OEM Nordic; Nordic (DOS) |
| ` 866` | unicode.org | OEM Russian; Cyrillic (DOS) |
| ` 869` | unicode.org | OEM Modern Greek; Greek, Modern (DOS) |
| ` 870` | Windows 7 | IBM EBCDIC Multilingual/ROECE (Latin 2) |
| ` 872` | unicode.org | OEM Cyrillic (primarily Russian) + Euro Symbol |
| ` 874` | unicode.org | Windows Thai |
| ` 875` | unicode.org | IBM EBCDIC Greek Modern |
| ` 895` | NLS | Kamenický (Czech) MS-DOS |
| ` 932` | unicode.org | Japanese Shift-JIS |
| ` 936` | unicode.org | Simplified Chinese GBK |
| ` 949` | unicode.org | Korean |
| ` 950` | unicode.org | Traditional Chinese Big5 |
| ` 1010` | IBM | IBM EBCDIC French |
| ` 1026` | unicode.org | IBM EBCDIC Turkish (Latin 5) |
| ` 1047` | Windows 7 | IBM EBCDIC Latin 1/Open System |
| ` 1132` | IBM | IBM EBCDIC Lao (1132 / 1133 / 1341) |
| ` 1140` | Windows 7 | IBM EBCDIC US-Canada (037 + Euro symbol) |
| ` 1141` | Windows 7 | IBM EBCDIC Germany (20273 + Euro symbol) |
| ` 1142` | Windows 7 | IBM EBCDIC Denmark-Norway (20277 + Euro symbol) |
| ` 1143` | Windows 7 | IBM EBCDIC Finland-Sweden (20278 + Euro symbol) |
| ` 1144` | Windows 7 | IBM EBCDIC Italy (20280 + Euro symbol) |
| ` 1145` | Windows 7 | IBM EBCDIC Latin America-Spain (20284 + Euro symbol) |
| ` 1146` | Windows 7 | IBM EBCDIC United Kingdom (20285 + Euro symbol) |
| ` 1147` | Windows 7 | IBM EBCDIC France (20297 + Euro symbol) |
| ` 1148` | Windows 7 | IBM EBCDIC International (500 + Euro symbol) |
| ` 1149` | Windows 7 | IBM EBCDIC Icelandic (20871 + Euro symbol) |
| ` 1200` | magic | Unicode UTF-16, little endian (BMP of ISO 10646) |
| ` 1201` | magic | Unicode UTF-16, big endian |
| ` 1250` | unicode.org | Windows Central Europe |
| ` 1251` | unicode.org | Windows Cyrillic |
| ` 1252` | unicode.org | Windows Latin I |
| ` 1253` | unicode.org | Windows Greek |
| ` 1254` | unicode.org | Windows Turkish |
| ` 1255` | unicode.org | Windows Hebrew |
| ` 1256` | unicode.org | Windows Arabic |
| ` 1257` | unicode.org | Windows Baltic |
| ` 1258` | unicode.org | Windows Vietnam |
| ` 1361` | Windows 7 | Korean (Johab) |
| `10000` | unicode.org | MAC Roman |
| `10001` | Windows 7 | Japanese (Mac) |
| `10002` | Windows 7 | MAC Traditional Chinese (Big5) |
| `10003` | Windows 7 | Korean (Mac) |
| `10004` | Windows 7 | Arabic (Mac) |
| `10005` | Windows 7 | Hebrew (Mac) |
| `10006` | unicode.org | Greek (Mac) |
| `10007` | unicode.org | Cyrillic (Mac) |
| `10008` | Windows 7 | MAC Simplified Chinese (GB 2312) |
| `10010` | Windows 7 | Romanian (Mac) |
| `10017` | Windows 7 | Ukrainian (Mac) |
| `10021` | Windows 7 | Thai (Mac) |
| `10029` | unicode.org | MAC Latin 2 (Central European) |
| `10079` | unicode.org | Icelandic (Mac) |
| `10081` | unicode.org | Turkish (Mac) |
| `10082` | Windows 7 | Croatian (Mac) |
| `12000` | magic | Unicode UTF-32, little endian byte order |
| `12001` | magic | Unicode UTF-32, big endian byte order |
| `20000` | Windows 7 | CNS Taiwan (Chinese Traditional) |
| `20001` | Windows 7 | TCA Taiwan |
| `20002` | Windows 7 | Eten Taiwan (Chinese Traditional) |
| `20003` | Windows 7 | IBM5550 Taiwan |
| `20004` | Windows 7 | TeleText Taiwan |
| `20005` | Windows 7 | Wang Taiwan |
| `20105` | Windows 7 | Western European IA5 (IRV International Alphabet 5) |
| `20106` | Windows 7 | IA5 German (7-bit) |
| `20107` | Windows 7 | IA5 Swedish (7-bit) |
| `20108` | Windows 7 | IA5 Norwegian (7-bit) |
| `20127` | magic | US-ASCII (7-bit) |
| `20261` | Windows 7 | T.61 |
| `20269` | Windows 7 | ISO 6937 Non-Spacing Accent |
| `20273` | Windows 7 | IBM EBCDIC Germany |
| `20277` | Windows 7 | IBM EBCDIC Denmark-Norway |
| `20278` | Windows 7 | IBM EBCDIC Finland-Sweden |
| `20280` | Windows 7 | IBM EBCDIC Italy |
| `20284` | Windows 7 | IBM EBCDIC Latin America-Spain |
| `20285` | Windows 7 | IBM EBCDIC United Kingdom |
| `20290` | Windows 7 | IBM EBCDIC Japanese Katakana Extended |
| `20297` | Windows 7 | IBM EBCDIC France |
| `20420` | Windows 7 | IBM EBCDIC Arabic |
| `20423` | Windows 7 | IBM EBCDIC Greek |
| `20424` | Windows 7 | IBM EBCDIC Hebrew |
| `20833` | Windows 7 | IBM EBCDIC Korean Extended |
| `20838` | Windows 7 | IBM EBCDIC Thai |
| `20866` | Windows 7 | Russian Cyrillic (KOI8-R) |
| `20871` | Windows 7 | IBM EBCDIC Icelandic |
| `20880` | Windows 7 | IBM EBCDIC Cyrillic Russian |
| `20905` | Windows 7 | IBM EBCDIC Turkish |
| `20924` | Windows 7 | IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) |
| `20932` | Windows 7 | Japanese (JIS 0208-1990 and 0212-1990) |
| `20936` | Windows 7 | Simplified Chinese (GB2312-80) |
| `20949` | Windows 7 | Korean Wansung |
| `21025` | Windows 7 | IBM EBCDIC Cyrillic Serbian-Bulgarian |
| `21027` | NLS | Extended/Ext Alpha Lowercase |
| `21866` | Windows 7 | Ukrainian Cyrillic (KOI8-U) |
| `28591` | unicode.org | ISO 8859-1 Latin 1 (Western European) |
| `28592` | unicode.org | ISO 8859-2 Latin 2 (Central European) |
| `28593` | unicode.org | ISO 8859-3 Latin 3 |
| `28594` | unicode.org | ISO 8859-4 Baltic |
| `28595` | unicode.org | ISO 8859-5 Cyrillic |
| `28596` | unicode.org | ISO 8859-6 Arabic |
| `28597` | unicode.org | ISO 8859-7 Greek |
| `28598` | unicode.org | ISO 8859-8 Hebrew (ISO-Visual) |
| `28599` | unicode.org | ISO 8859-9 Turkish |
| `28600` | unicode.org | ISO 8859-10 Latin 6 |
| `28601` | unicode.org | ISO 8859-11 Latin (Thai) |
| `28603` | unicode.org | ISO 8859-13 Latin 7 (Estonian) |
| `28604` | unicode.org | ISO 8859-14 Latin 8 (Celtic) |
| `28605` | unicode.org | ISO 8859-15 Latin 9 |
| `28606` | unicode.org | ISO 8859-15 Latin 10 |
| `29001` | Windows 7 | Europa 3 |
| `38598` | Windows 7 | ISO 8859-8 Hebrew (ISO-Logical) |
| `47451` | unicode.org | Atari ST/TT |
| `50220` | Windows 7 | ISO 2022 JIS Japanese with no halfwidth Katakana |
| `50221` | Windows 7 | ISO 2022 JIS Japanese with halfwidth Katakana |
| `50222` | Windows 7 | ISO 2022 Japanese JIS X 0201-1989 (1 byte Kana-SO/SI)|
| `50225` | Windows 7 | ISO 2022 Korean |
| `50227` | Windows 7 | ISO 2022 Simplified Chinese |
| `51932` | Windows 7 | EUC Japanese |
| `51936` | Windows 7 | EUC Simplified Chinese |
| `51949` | Windows 7 | EUC Korean |
| `52936` | Windows 7 | HZ-GB2312 Simplified Chinese |
| `54936` | Windows 7 | GB18030 Simplified Chinese (4 byte) |
| `57002` | Windows 7 | ISCII Devanagari |
| `57003` | Windows 7 | ISCII Bengali |
| `57004` | Windows 7 | ISCII Tamil |
| `57005` | Windows 7 | ISCII Telugu |
| `57006` | Windows 7 | ISCII Assamese |
| `57007` | Windows 7 | ISCII Oriya |
| `57008` | Windows 7 | ISCII Kannada |
| `57009` | Windows 7 | ISCII Malayalam |
| `57010` | Windows 7 | ISCII Gujarati |
| `57011` | Windows 7 | ISCII Punjabi |
| `65000` | magic | Unicode (UTF-7) |
| `65001` | magic | Unicode (UTF-8) |
Note that MakeEncoding.cs deviates from unicode.org for some codepages. In the
case of direct conflicts, unicode.org takes precedence. In cases where the
unicode.org listing does not prescribe a value, MakeEncoding.cs value is used.
`unicode.org` refers to the Unicode Consortium Public Mappings, a database of
various mappings between unicode characters and respective character sets. The
tables are processed by a few scripts in the build process.
NLS refers to the National Language Support files supplied in various versions of
Windows. In older versions of Windows (e.g. Windows 98) these files followed the
pattern `CP_#.NLS`, but newer versions use the pattern `C_#.NLS`.
`IBM` refers to the IBM coded character set database. Even though IBM uses a
different numbering scheme from Windows, the IBM numbers are used when there is
no conflict. The tables are manually generated from the symbol PDFs.
`Windows 7` refers to direct inspection of Windows 7 machines using .NET class
`System.Text.Encoding`. The enclosed `MakeEncoding.cs` C# program brute-forces
code pages. MakeEncoding.cs deviates from unicode.org in some cases. When they
map a given code to different characters, unicode.org value is used. When
unicode.org does not prescribe a value, MakeEncoding.cs value is used.
`NLS` refers to the National Language Support files supplied in various versions
of Windows. In older versions of Windows (e.g. Windows 98) these files followed
the name pattern `CP_#.NLS`, but newer versions use the name pattern `C_#.NLS`.
## Sources
- [Unicode Consortium Public Mappings](http://www.unicode.org/Public/MAPPINGS/)
- [Code Page Enumeration](http://msdn.microsoft.com/en-us/library/cc195051.aspx)
- [Code Page Identifiers](http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756.aspx)
- [Windows Code Page Enumeration](http://msdn.microsoft.com/en-us/library/cc195051.aspx)
- [Windows Code Page Identifiers](http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756.aspx)
- [IBM Coded Character Sets](https://www-01.ibm.com/software/globalization/ccsid/ccsid_registered.html)
## Badges

2
bits/1010.js Normal file

@ -0,0 +1,2 @@
if(typeof cptable === 'undefined') cptable = {};
cptable[1010] = (function(){ var d = "<22>\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"£$%&()*+,-./0123456789:;<=>?àABCDEFGHIJKLMNOPQRSTUVWXYZ°ç§ˆ_µabcdefghijklmnopqrstuvwxyzéùè¨<C3A8><C2A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();

2
bits/1132.js Normal file

@ -0,0 +1,2 @@
if(typeof cptable === 'undefined') cptable = {};
cptable[1132] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ<E0BAAD><E0BAAE><EFBFBD>ຯະາຳິີຶືຸູຼັົຽ<E0BABB><E0BABD><EFBFBD>ເແໂໃໄ່້໊໋໌ໍໆ<E0BB8D>ໜໝ₭<E0BB9D><E282AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>໑໒໓໔໕໖໗໘໙<E0BB98><E0BB99>¢¬¦ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();

2
bits/47451.js Normal file

@ -0,0 +1,2 @@
if(typeof cptable === 'undefined') cptable = {};
cptable[47451] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáíóúñѪº¿⌐¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ijIJאבגדהוזחטיכלמנסעפצקרשתןךםףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²³¯", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();

2
bits/808.js Normal file

@ -0,0 +1,2 @@
if(typeof cptable === 'undefined') cptable = {};
cptable[808] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();

2
bits/872.js Normal file

@ -0,0 +1,2 @@
if(typeof cptable === 'undefined') cptable = {};
cptable[872] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬€лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();

@ -36,6 +36,7 @@ The fields of the pages.csv manifest are `codepage,url,bytes` (SBCS=1, DBCS=2)
1256,http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1256.TXT,1
1257,http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT,1
1258,http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1258.TXT,1
47451,http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/ATARIST.TXT,1
```
Note that the Windows rendering is used for the Mac code pages. The primary
@ -165,9 +166,13 @@ The following codepages are available in .NET on Windows:
```>pages.csv
708,,1
720,,1
808,,1
858,,1
870,,1
872,,1
1010,,1
1047,,1
1132,,1
1140,,1
1141,,1
1142,,1
@ -259,8 +264,6 @@ The following codepages are dependencies for Visual FoxPro:
895,,1
```
The known missing codepages are enumerated in the README.
## Building Notes
The script `make.sh` (described later) will get these files and massage the data
@ -469,6 +472,7 @@ describe('README', function() {
assert.equal(cp10000_711, 255);
var b1 = [0xbb,0xe3,0xd7,0xdc];
var s1 = b1.map(function(x) { return String.fromCharCode(x); }).join("");
var 汇总 = cptable.utils.decode(936, b1);
var buf = cptable.utils.encode(936, 汇总);
assert.equal(汇总,"汇总");
@ -570,7 +574,7 @@ describe('entry conditions', function() {
c(cp,i,'str');
};
describe('encode', function() {
it('CP 1252 : sbcs', function() { chken(1252,"foobar"); });
it('CP 1252 : sbcs', function() { chken(1252,"foo•bþr"); });
it('CP 708 : sbcs', function() { chken(708,"ت and ث smiley faces");});
it('CP 936 : dbcs', function() { chken(936, "这是中文字符测试");});
});
@ -616,6 +620,10 @@ function testfile(f,cp,type,skip) {
z = cptable.utils.encode(cp, a);
if(z.length != d.length) throw new Error(f + " " + JSON.stringify(z) + " != " + JSON.stringify(d) + " : " + z.length + " " + d.length);
for(var i = 0; i != d.length; ++i) if(d[i] !== z[i]) throw new Error("" + i + " " + d[i] + "!=" + z[i]);
if(f.indexOf("cptable.js") == -1) {
cptable.utils.encode(cp, d, 'str');
cptable.utils.encode(cp, d, 'arr');
}
}
cptable.utils.cache.encache();
chk(cp);
@ -680,6 +688,12 @@ Object.keys(m).forEach(function(t){if(t != 16969) describe(m[t], function() {
if(t != 65000) cmp(x,z);
else { assert.equal(y, cptable.utils.decode(t, z)); }
cptable.utils.cache.encache();
cptable.utils.encode(t, y, 'str');
cptable.utils.encode(t, y, 'arr');
cptable.utils.cache.decache();
cptable.utils.encode(t, y, 'str');
cptable.utils.encode(t, y, 'arr');
cptable.utils.cache.encache();
}
: null);
it("should process README.md." + m[t], fs.existsSync('./misc/README.md.' + m[t]) ?
@ -721,6 +735,11 @@ describe('failures', function() {
it('should fail when presented with invalid char codes', function() {
assert.throws(function(){cptable.utils.cache.decache(); return cptable.utils.encode(20127, [String.fromCharCode(0xAA)]);});
});
it('should fail to propagate UTF8 BOM in UTF7', function() {
["+/v8-abc", "+/v9"].forEach(function(m) { assert.throws(function() {
assert.equal(m, cptable.utils.encode(65000, cptable.utils.decode(65000, m)));
}); });
});
});
```
@ -729,7 +748,7 @@ describe('failures', function() {
```json>package.json
{
"name": "codepage",
"version": "1.4.0",
"version": "1.5.0",
"author": "SheetJS",
"description": "pure-JS library to handle codepages",
"keywords": [ "codepage", "iconv", "convert", "strings" ],
@ -762,7 +781,7 @@ describe('failures', function() {
},
"config": {
"blanket": {
"pattern": "[cptable.js,cputils.js,cpexcel.js]"
"pattern": "[cputils.js]"
}
},
"bugs": { "url": "https://github.com/SheetJS/js-codepage/issues" },

126
codepages/1010.TBL Normal file

@ -0,0 +1,126 @@
0x01 0x0001
0x02 0x0002
0x03 0x0003
0x04 0x0004
0x05 0x0005
0x06 0x0006
0x07 0x0007
0x08 0x0008
0x09 0x0009
0x0a 0x000a
0x0b 0x000b
0x0c 0x000c
0x0d 0x000d
0x0e 0x000e
0x0f 0x000f
0x10 0x0010
0x11 0x0011
0x12 0x0012
0x13 0x0013
0x14 0x0014
0x15 0x0015
0x16 0x0016
0x17 0x0017
0x18 0x0018
0x19 0x0019
0x1a 0x001a
0x1b 0x001b
0x1c 0x001c
0x1d 0x001d
0x1e 0x001e
0x1f 0x001f
0x20 0x0020
0x21 0x0021
0x22 0x0022
0x23 0x00A3
0x24 0x0024
0x25 0x0025
0x26 0x0026
0x27 0x2019
0x28 0x0028
0x29 0x0029
0x2a 0x002a
0x2b 0x002b
0x2c 0x002c
0x2d 0x002d
0x2e 0x002e
0x2f 0x002f
0x30 0x0030
0x31 0x0031
0x32 0x0032
0x33 0x0033
0x34 0x0034
0x35 0x0035
0x36 0x0036
0x37 0x0037
0x38 0x0038
0x39 0x0039
0x3a 0x003a
0x3b 0x003b
0x3c 0x003c
0x3d 0x003d
0x3e 0x003e
0x3f 0x003f
0x40 0x00e0
0x41 0x0041
0x42 0x0042
0x43 0x0043
0x44 0x0044
0x45 0x0045
0x46 0x0046
0x47 0x0047
0x48 0x0048
0x49 0x0049
0x4a 0x004a
0x4b 0x004b
0x4c 0x004c
0x4d 0x004d
0x4e 0x004e
0x4f 0x004f
0x50 0x0050
0x51 0x0051
0x52 0x0052
0x53 0x0053
0x54 0x0054
0x55 0x0055
0x56 0x0056
0x57 0x0057
0x58 0x0058
0x59 0x0059
0x5a 0x005a
0x5b 0x00b0
0x5c 0x00e7
0x5d 0x00a7
0x5e 0x02c6
0x5f 0x005f
0x60 0x00b5
0x61 0x0061
0x62 0x0062
0x63 0x0063
0x64 0x0064
0x65 0x0065
0x66 0x0066
0x67 0x0067
0x68 0x0068
0x69 0x0069
0x6a 0x006a
0x6b 0x006b
0x6c 0x006c
0x6d 0x006d
0x6e 0x006e
0x6f 0x006f
0x70 0x0070
0x71 0x0071
0x72 0x0072
0x73 0x0073
0x74 0x0074
0x75 0x0075
0x76 0x0076
0x77 0x0077
0x78 0x0078
0x79 0x0079
0x7a 0x007a
0x7b 0x00e9
0x7c 0x00f9
0x7d 0x00e8
0x7e 0x00a8

198
codepages/1132.TBL Normal file

@ -0,0 +1,198 @@
0x00 0x0000
0x01 0x0001
0x02 0x0002
0x03 0x0003
0x04 0x0004
0x05 0x0005
0x06 0x0006
0x07 0x0007
0x08 0x0008
0x09 0x0009
0x0a 0x000a
0x0b 0x000b
0x0c 0x000c
0x0d 0x000d
0x0e 0x000e
0x0f 0x000f
0x10 0x0010
0x11 0x0011
0x12 0x0012
0x13 0x0013
0x14 0x0014
0x15 0x0015
0x16 0x0016
0x17 0x0017
0x18 0x0018
0x19 0x0019
0x1a 0x001a
0x1b 0x001b
0x1c 0x001c
0x1d 0x001d
0x1e 0x001e
0x1f 0x001f
0x20 0x0020
0x21 0x0021
0x22 0x0022
0x23 0x0023
0x24 0x0024
0x25 0x0025
0x26 0x0026
0x27 0x0027
0x28 0x0028
0x29 0x0029
0x2a 0x002a
0x2b 0x002b
0x2c 0x002c
0x2d 0x002d
0x2e 0x002e
0x2f 0x002f
0x30 0x0030
0x31 0x0031
0x32 0x0032
0x33 0x0033
0x34 0x0034
0x35 0x0035
0x36 0x0036
0x37 0x0037
0x38 0x0038
0x39 0x0039
0x3a 0x003a
0x3b 0x003b
0x3c 0x003c
0x3d 0x003d
0x3e 0x003e
0x3f 0x003f
0x40 0x0040
0x41 0x0041
0x42 0x0042
0x43 0x0043
0x44 0x0044
0x45 0x0045
0x46 0x0046
0x47 0x0047
0x48 0x0048
0x49 0x0049
0x4a 0x004a
0x4b 0x004b
0x4c 0x004c
0x4d 0x004d
0x4e 0x004e
0x4f 0x004f
0x50 0x0050
0x51 0x0051
0x52 0x0052
0x53 0x0053
0x54 0x0054
0x55 0x0055
0x56 0x0056
0x57 0x0057
0x58 0x0058
0x59 0x0059
0x5a 0x005a
0x5b 0x005b
0x5c 0x005c
0x5d 0x005d
0x5e 0x005e
0x5f 0x005f
0x60 0x0060
0x61 0x0061
0x62 0x0062
0x63 0x0063
0x64 0x0064
0x65 0x0065
0x66 0x0066
0x67 0x0067
0x68 0x0068
0x69 0x0069
0x6a 0x006a
0x6b 0x006b
0x6c 0x006c
0x6d 0x006d
0x6e 0x006e
0x6f 0x006f
0x70 0x0070
0x71 0x0071
0x72 0x0072
0x73 0x0073
0x74 0x0074
0x75 0x0075
0x76 0x0076
0x77 0x0077
0x78 0x0078
0x79 0x0079
0x7a 0x007a
0x7b 0x007b
0x7c 0x007c
0x7d 0x007d
0x7e 0x007e
0x7f 0x007f
0xa1 0x0e81
0xa2 0x0e82
0xa3 0x0e84
0xa4 0x0e87
0xa5 0x0e88
0xa6 0x0eaa
0xa7 0x0e8a
0xa8 0x0e8d
0xa9 0x0e94
0xaa 0x0e95
0xab 0x0e96
0xac 0x0e97
0xad 0x0e99
0xae 0x0e9a
0xaf 0x0e9b
0xb0 0x0e9c
0xb1 0x0e9d
0xb2 0x0e9e
0xb3 0x0e9f
0xb4 0x0ea1
0xb5 0x0ea2
0xb6 0x0ea3
0xb7 0x0ea5
0xb8 0x0ea7
0xb9 0x0eab
0xba 0x0ead
0xbb 0x0eae
0xbf 0x0eaf
0xc0 0x0eb0
0xc1 0x0eb2
0xc2 0x0eb3
0xc3 0x0eb4
0xc4 0x0eb5
0xc5 0x0eb6
0xc6 0x0eb7
0xc7 0x0eb8
0xc8 0x0eb9
0xc9 0x0ebc
0xca 0x0eb1
0xcb 0x0ebb
0xcc 0x0ebd
0xd0 0x0ec0
0xd1 0x0ec1
0xd2 0x0ec2
0xd3 0x0ec3
0xd4 0x0ec4
0xd5 0x0ec8
0xd6 0x0ec9
0xd7 0x0eca
0xd8 0x0ecb
0xd9 0x0ecc
0xda 0x0ecd
0xdb 0x0ec6
0xdd 0x0edc
0xde 0x0edd
0xdf 0x20ad
0xf0 0x0ed0
0xf1 0x0ed1
0xf2 0x0ed2
0xf3 0x0ed3
0xf4 0x0ed4
0xf5 0x0ed5
0xf6 0x0ed6
0xf7 0x0ed7
0xf8 0x0ed8
0xf9 0x0ed9
0xfc 0x00a2
0xfd 0x00ac
0xfe 0x00a6
0xff 0x00a0

256
codepages/808.TBL Normal file

@ -0,0 +1,256 @@
0x00 0x0000
0x01 0x0001
0x02 0x0002
0x03 0x0003
0x04 0x0004
0x05 0x0005
0x06 0x0006
0x07 0x0007
0x08 0x0008
0x09 0x0009
0x0a 0x000a
0x0b 0x000b
0x0c 0x000c
0x0d 0x000d
0x0e 0x000e
0x0f 0x000f
0x10 0x0010
0x11 0x0011
0x12 0x0012
0x13 0x0013
0x14 0x0014
0x15 0x0015
0x16 0x0016
0x17 0x0017
0x18 0x0018
0x19 0x0019
0x1a 0x001a
0x1b 0x001b
0x1c 0x001c
0x1d 0x001d
0x1e 0x001e
0x1f 0x001f
0x20 0x0020
0x21 0x0021
0x22 0x0022
0x23 0x0023
0x24 0x0024
0x25 0x0025
0x26 0x0026
0x27 0x0027
0x28 0x0028
0x29 0x0029
0x2a 0x002a
0x2b 0x002b
0x2c 0x002c
0x2d 0x002d
0x2e 0x002e
0x2f 0x002f
0x30 0x0030
0x31 0x0031
0x32 0x0032
0x33 0x0033
0x34 0x0034
0x35 0x0035
0x36 0x0036
0x37 0x0037
0x38 0x0038
0x39 0x0039
0x3a 0x003a
0x3b 0x003b
0x3c 0x003c
0x3d 0x003d
0x3e 0x003e
0x3f 0x003f
0x40 0x0040
0x41 0x0041
0x42 0x0042
0x43 0x0043
0x44 0x0044
0x45 0x0045
0x46 0x0046
0x47 0x0047
0x48 0x0048
0x49 0x0049
0x4a 0x004a
0x4b 0x004b
0x4c 0x004c
0x4d 0x004d
0x4e 0x004e
0x4f 0x004f
0x50 0x0050
0x51 0x0051
0x52 0x0052
0x53 0x0053
0x54 0x0054
0x55 0x0055
0x56 0x0056
0x57 0x0057
0x58 0x0058
0x59 0x0059
0x5a 0x005a
0x5b 0x005b
0x5c 0x005c
0x5d 0x005d
0x5e 0x005e
0x5f 0x005f
0x60 0x0060
0x61 0x0061
0x62 0x0062
0x63 0x0063
0x64 0x0064
0x65 0x0065
0x66 0x0066
0x67 0x0067
0x68 0x0068
0x69 0x0069
0x6a 0x006a
0x6b 0x006b
0x6c 0x006c
0x6d 0x006d
0x6e 0x006e
0x6f 0x006f
0x70 0x0070
0x71 0x0071
0x72 0x0072
0x73 0x0073
0x74 0x0074
0x75 0x0075
0x76 0x0076
0x77 0x0077
0x78 0x0078
0x79 0x0079
0x7a 0x007a
0x7b 0x007b
0x7c 0x007c
0x7d 0x007d
0x7e 0x007e
0x7f 0x007f
0x80 0x0410
0x81 0x0411
0x82 0x0412
0x83 0x0413
0x84 0x0414
0x85 0x0415
0x86 0x0416
0x87 0x0417
0x88 0x0418
0x89 0x0419
0x8a 0x041a
0x8b 0x041b
0x8c 0x041c
0x8d 0x041d
0x8e 0x041e
0x8f 0x041f
0x90 0x0420
0x91 0x0421
0x92 0x0422
0x93 0x0423
0x94 0x0424
0x95 0x0425
0x96 0x0426
0x97 0x0427
0x98 0x0428
0x99 0x0429
0x9a 0x042a
0x9b 0x042b
0x9c 0x042c
0x9d 0x042d
0x9e 0x042e
0x9f 0x042f
0xa0 0x0430
0xa1 0x0431
0xa2 0x0432
0xa3 0x0433
0xa4 0x0434
0xa5 0x0435
0xa6 0x0436
0xa7 0x0437
0xa8 0x0438
0xa9 0x0439
0xaa 0x043a
0xab 0x043b
0xac 0x043c
0xad 0x043d
0xae 0x043e
0xaf 0x043f
0xb0 0x2591
0xb1 0x2592
0xb2 0x2593
0xb3 0x2502
0xb4 0x2524
0xb5 0x2561
0xb6 0x2562
0xb7 0x2556
0xb8 0x2555
0xb9 0x2563
0xba 0x2551
0xbb 0x2557
0xbc 0x255d
0xbd 0x255c
0xbe 0x255b
0xbf 0x2510
0xc0 0x2514
0xc1 0x2534
0xc2 0x252c
0xc3 0x251c
0xc4 0x2500
0xc5 0x253c
0xc6 0x255e
0xc7 0x255f
0xc8 0x255a
0xc9 0x2554
0xca 0x2569
0xcb 0x2566
0xcc 0x2560
0xcd 0x2550
0xce 0x256c
0xcf 0x2567
0xd0 0x2568
0xd1 0x2564
0xd2 0x2565
0xd3 0x2559
0xd4 0x2558
0xd5 0x2552
0xd6 0x2553
0xd7 0x256b
0xd8 0x256a
0xd9 0x2518
0xda 0x250c
0xdb 0x2588
0xdc 0x2584
0xdd 0x258c
0xde 0x2590
0xdf 0x2580
0xe0 0x0440
0xe1 0x0441
0xe2 0x0442
0xe3 0x0443
0xe4 0x0444
0xe5 0x0445
0xe6 0x0446
0xe7 0x0447
0xe8 0x0448
0xe9 0x0449
0xea 0x044a
0xeb 0x044b
0xec 0x044c
0xed 0x044d
0xee 0x044e
0xef 0x044f
0xf0 0x0401
0xf1 0x0451
0xf2 0x0404
0xf3 0x0454
0xf4 0x0407
0xf5 0x0457
0xf6 0x040e
0xf7 0x045e
0xf8 0x00b0
0xf9 0x2219
0xfa 0x00b7
0xfb 0x221a
0xfc 0x2116
0xfd 0x20ac
0xfe 0x25a0
0xff 0x00a0

256
codepages/872.TBL Normal file

@ -0,0 +1,256 @@
0x00 0x0000
0x01 0x0001
0x02 0x0002
0x03 0x0003
0x04 0x0004
0x05 0x0005
0x06 0x0006
0x07 0x0007
0x08 0x0008
0x09 0x0009
0x0a 0x000a
0x0b 0x000b
0x0c 0x000c
0x0d 0x000d
0x0e 0x000e
0x0f 0x000f
0x10 0x0010
0x11 0x0011
0x12 0x0012
0x13 0x0013
0x14 0x0014
0x15 0x0015
0x16 0x0016
0x17 0x0017
0x18 0x0018
0x19 0x0019
0x1a 0x001a
0x1b 0x001b
0x1c 0x001c
0x1d 0x001d
0x1e 0x001e
0x1f 0x001f
0x20 0x0020
0x21 0x0021
0x22 0x0022
0x23 0x0023
0x24 0x0024
0x25 0x0025
0x26 0x0026
0x27 0x0027
0x28 0x0028
0x29 0x0029
0x2a 0x002a
0x2b 0x002b
0x2c 0x002c
0x2d 0x002d
0x2e 0x002e
0x2f 0x002f
0x30 0x0030
0x31 0x0031
0x32 0x0032
0x33 0x0033
0x34 0x0034
0x35 0x0035
0x36 0x0036
0x37 0x0037
0x38 0x0038
0x39 0x0039
0x3a 0x003a
0x3b 0x003b
0x3c 0x003c
0x3d 0x003d
0x3e 0x003e
0x3f 0x003f
0x40 0x0040
0x41 0x0041
0x42 0x0042
0x43 0x0043
0x44 0x0044
0x45 0x0045
0x46 0x0046
0x47 0x0047
0x48 0x0048
0x49 0x0049
0x4a 0x004a
0x4b 0x004b
0x4c 0x004c
0x4d 0x004d
0x4e 0x004e
0x4f 0x004f
0x50 0x0050
0x51 0x0051
0x52 0x0052
0x53 0x0053
0x54 0x0054
0x55 0x0055
0x56 0x0056
0x57 0x0057
0x58 0x0058
0x59 0x0059
0x5a 0x005a
0x5b 0x005b
0x5c 0x005c
0x5d 0x005d
0x5e 0x005e
0x5f 0x005f
0x60 0x0060
0x61 0x0061
0x62 0x0062
0x63 0x0063
0x64 0x0064
0x65 0x0065
0x66 0x0066
0x67 0x0067
0x68 0x0068
0x69 0x0069
0x6a 0x006a
0x6b 0x006b
0x6c 0x006c
0x6d 0x006d
0x6e 0x006e
0x6f 0x006f
0x70 0x0070
0x71 0x0071
0x72 0x0072
0x73 0x0073
0x74 0x0074
0x75 0x0075
0x76 0x0076
0x77 0x0077
0x78 0x0078
0x79 0x0079
0x7a 0x007a
0x7b 0x007b
0x7c 0x007c
0x7d 0x007d
0x7e 0x007e
0x7f 0x007f
0x80 0x0452
0x81 0x0402
0x82 0x0453
0x83 0x0403
0x84 0x0451
0x85 0x0401
0x86 0x0454
0x87 0x0404
0x88 0x0455
0x89 0x0405
0x8a 0x0456
0x8b 0x0406
0x8c 0x0457
0x8d 0x0407
0x8e 0x0458
0x8f 0x0408
0x90 0x0459
0x91 0x0409
0x92 0x045a
0x93 0x040a
0x94 0x045b
0x95 0x040b
0x96 0x045c
0x97 0x040c
0x98 0x045e
0x99 0x040e
0x9a 0x045f
0x9b 0x040f
0x9c 0x044e
0x9d 0x042e
0x9e 0x044a
0x9f 0x042a
0xa0 0x0430
0xa1 0x0410
0xa2 0x0431
0xa3 0x0411
0xa4 0x0446
0xa5 0x0426
0xa6 0x0434
0xa7 0x0414
0xa8 0x0435
0xa9 0x0415
0xaa 0x0444
0xab 0x0424
0xac 0x0433
0xad 0x0413
0xae 0x00ab
0xaf 0x00bb
0xb0 0x2591
0xb1 0x2592
0xb2 0x2593
0xb3 0x2502
0xb4 0x2524
0xb5 0x0445
0xb6 0x0425
0xb7 0x0438
0xb8 0x0418
0xb9 0x2563
0xba 0x2551
0xbb 0x2557
0xbc 0x255d
0xbd 0x0439
0xbe 0x0419
0xbf 0x2510
0xc0 0x2514
0xc1 0x2534
0xc2 0x252c
0xc3 0x251c
0xc4 0x2500
0xc5 0x253c
0xc6 0x043a
0xc7 0x041a
0xc8 0x255a
0xc9 0x2554
0xca 0x2569
0xcb 0x2566
0xcc 0x2560
0xcd 0x2550
0xce 0x256c
0xcf 0x20ac
0xd0 0x043b
0xd1 0x041b
0xd2 0x043c
0xd3 0x041c
0xd4 0x043d
0xd5 0x041d
0xd6 0x043e
0xd7 0x041e
0xd8 0x043f
0xd9 0x2518
0xda 0x250c
0xdb 0x2588
0xdc 0x2584
0xdd 0x041f
0xde 0x044f
0xdf 0x2580
0xe0 0x042f
0xe1 0x0440
0xe2 0x0420
0xe3 0x0441
0xe4 0x0421
0xe5 0x0442
0xe6 0x0422
0xe7 0x0443
0xe8 0x0423
0xe9 0x0436
0xea 0x0416
0xeb 0x0432
0xec 0x0412
0xed 0x044c
0xee 0x042c
0xef 0x2116
0xf0 0x00ad
0xf1 0x044b
0xf2 0x042b
0xf3 0x0437
0xf4 0x0417
0xf5 0x0448
0xf6 0x0428
0xf7 0x044d
0xf8 0x042d
0xf9 0x0449
0xfa 0x0429
0xfb 0x0447
0xfc 0x0427
0xfd 0x00a7
0xfe 0x25a0
0xff 0x00a0

@ -1,6 +1,6 @@
/* cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */
/*jshint -W100 */
var cptable = {version:"1.4.0"};
var cptable = {version:"1.5.0"};
cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F><E282AC><EFBFBD><EFBFBD><EFBFBD><E280A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>“”•<E28093><E28094><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู<E0B8B9><E0B8BA><EFBFBD><EFBFBD>฿เแโใไๅๆ็่้๊๋์ํ๎๏๑๒๓๔๕๖๗๘๙๚๛<E0B99A><E0B99B><EFBFBD><EFBFBD>", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
cptable[932] = (function(){ var d = [], e = {}, D = [], j;
D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚<EFBE9E><EFBE9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>".split("");

@ -1,6 +1,6 @@
/* cptable.js (C) 2013-present SheetJS -- http://sheetjs.com */
/*jshint -W100 */
var cptable = {version:"1.4.0"};
var cptable = {version:"1.5.0"};
cptable[37] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
cptable[500] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
@ -810,6 +810,7 @@ cptable[1255] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006
cptable[1256] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
cptable[1257] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F><EFBFBD>„…†‡<E280A0><EFBFBD><EFBFBD>¨ˇ¸<CB87>“”•<E28093><EFBFBD><EFBFBD>¯˛<C2AF> <EFBFBD>¢£¤<C2A3>¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚ