Compare commits

...

111 Commits
0.5 ... master

Author SHA1 Message Date
Daniel Wagner
51dfd77f3c note a few more changes 2017-07-31 21:59:08 -07:00
Daniel Wagner
2e3e61a2b4 Merge remote-tracking branch 'ScottSedgwick/StackCompatibility'
Conflicts:
	encoding.cabal
2017-07-30 18:00:41 -07:00
Daniel Wagner
52aabc47cd mark upper and lower bounds on library dependencies 2017-07-30 17:40:22 -07:00
Daniel Wagner
8925f398af -fno-warn-tabs 2017-07-30 17:39:58 -07:00
Daniel Wagner
7adcda8547 record what's new 2017-07-30 12:31:30 -07:00
Daniel Wagner
59b81ad775 avoid using revisions
Hackage revisions are great, but since we've removed an outdated flag we
can't use them. We'll have to use an actual point release.
2017-07-30 12:28:46 -07:00
Scott Sedgwick
8727ac25a5 Made package stack compatible
Created and added stack.yaml and .gitignore files.
Relaxed the version dependency on 'binary' package in cabal file.  Is that OK?
Also brought the minimum cabal version to >=1.8, so I could add a test target that pulls in the library.
Changed all tabs to spaces - I don't know when the Haskell compiler started giving warnings about that.
2017-07-28 14:17:42 +10:00
Daniel Wagner
6284c1a677 fix up repository metadata 2017-07-15 16:11:47 -07:00
Daniel Wagner
f1a2889bfe fix a typo in the cabal file 2017-07-15 16:11:32 -07:00
Daniel Wagner
7c07f48a45 fix dependencies so it builds
Ignore-this: 1dcaab9390e2cd47b7c429620e697003

darcs-hash:20170715230208-7469c-dcf2ca84d39bd0ca519b47e744f353c05daed1f7
2017-07-15 16:02:08 -07:00
Daniel Wagner
4be65c2f13 bump version to 0.8.1
Ignore-this: 3a50200de9ccce5f0a648ef68615a0cf

darcs-hash:20160731183857-7469c-54bc23ccb38615550b3d4ead6fed2cdcf8e5d5b8
2016-07-31 11:38:57 -07:00
endhrk
63e17e9a22 Implemented CP932 and ShiftJIS encodings
Ignore-this: 67153b679dabd226a7b1fab3ff501453

darcs-hash:20160725070504-fb088-842c21423d713a81a8ada591dffdfbb9cd08b68c
2016-07-25 00:05:04 -07:00
Daniel Wagner
de78ca5f34 update CHANGELOG + bump tag number in cabal file
Ignore-this: ef232119c63c53dcce67c96d5eee0f5a

darcs-hash:20150206173636-7469c-34a56c0a5c25aac0498446a7af9f0eb2fe90035a
2015-02-06 09:36:36 -08:00
Daniel Wagner
2be6331521 bump dependencies and version number
Ignore-this: abdc3ce060ae830738fc026f33a590b2

darcs-hash:20150206173325-7469c-c1698de4dfca938fcf6fd20cbccaeb08951bdebc
2015-02-06 09:33:25 -08:00
Daniel Wagner
2e910834dc unbreak the build
Ignore-this: d1335751599d3d5e80360d415984e1b8

darcs-hash:20150206173311-7469c-f1074a310d4d296496989e0fcb900a1bf93ae996
2015-02-06 09:33:11 -08:00
ryan.trinkle
e5e64a794f Add Applicative instances for instances of Monad
Ignore-this: a95ef4a320b4c1506f5352716a656385

darcs-hash:20150116211446-5ff09-fca82019a01b124f7c93efe6f25ff73d1abfa665
2015-01-16 13:14:46 -08:00
Daniel Wagner
f679a9eb63 update RELEASING script to gzip at the same time as tar'ing and to deal with Hackage's no-GNU-tar restriction
Ignore-this: 6820ea6cb52138b3e39d579abb174d43

darcs-hash:20140707185311-7469c-6c9b30eb0ee847791c52573eb745fa23d5c76afd
2014-07-07 11:53:11 -07:00
Daniel Wagner
699abee92b the "NEWS" file is now called "CHANGELOG"; fix this in the "RELEASING" instructions
Ignore-this: 35ba119bdb111f91844a3c16ecf79e7b

darcs-hash:20140707174439-7469c-393e1047f758f9cbd10d88d6cb4003abc97fd37e
2014-07-07 10:44:39 -07:00
Daniel Wagner
4e53752d41 update CHANGELOG
Ignore-this: cd0ef07e4dde5f7dae052954b97ca7de

darcs-hash:20140707174356-7469c-6735a4a73a469a0286aa6e97765f26d88d287f09
2014-07-07 10:43:56 -07:00
Daniel Wagner
80e12d02f9 bump version to 0.7.0.2
Ignore-this: d5645215c8fb8f2d6e51d3e135fd8181

darcs-hash:20140707174202-7469c-123eb74d859455316033f1aeee37b2e0ab5cc158
2014-07-07 10:42:02 -07:00
Daniel Wagner
e6a388b038 amend MacOSRoman to match http://en.wikipedia.org/wiki/Mac_OS_Roman as suggested by Adam Bergmark
Ignore-this: 5c8f8abc665d16ac061cc8fd730b11ae

darcs-hash:20140707173911-7469c-7747c7710cdbbe489dde218eb72ab4e98683e70c
2014-07-07 10:39:11 -07:00
Daniel Wagner
ccdcf9c392 rename NEWS to CHANGELOG in the hopes that it will appear on Hackage
Ignore-this: 4fd873c2ae3f912e62d43aa94871d7cf

darcs-hash:20140525015849-7469c-92982613122be211f4748b94ddcb6f185dc599d6
2014-05-24 18:58:49 -07:00
Daniel Wagner
f565a7e82e note GHC-7.8 compat in NEWS
Ignore-this: d5a83c9d055f00229292d90d8be3d087

darcs-hash:20140525015814-7469c-99f480b54519121089924246e8f6c57c427d8ca0
2014-05-24 18:58:14 -07:00
Daniel Wagner
f81e1808ff bump version number to 0.7.0.1
Ignore-this: d038fd6703c313311cc7bafa1b85b7a3

darcs-hash:20140525015729-7469c-4bbb82545b83f2970aef6d8864db4d1ebd7ebdc0
2014-05-24 18:57:29 -07:00
Daniel Wagner
00f914ebde GHC 7.8 compatibility, based on a patch suggested by José Romildo Malaquias
Ignore-this: 4a655a3a1d2348054d2028f5c26dc0d5

darcs-hash:20140525015603-7469c-30d96daeffde6da775c2b8f6579c0a2fbbfc479a
2014-05-24 18:56:03 -07:00
Daniel Wagner
91f119bbfb update NEWS
Ignore-this: 2d6130b4b59737de15dcbcd0fe692517

darcs-hash:20140117023145-76d51-9cc6bbb709f03381dcf1f3a3ac64ce5aec94586b
2014-01-16 18:31:45 -08:00
Daniel Wagner
da883601cb relax dependencies on binary and HaXml
Ignore-this: e31192fece193a225c138ed779c08e79

darcs-hash:20140117023131-76d51-e66839c37479414aa543da736eacd39d082e13e5
2014-01-16 18:31:31 -08:00
Daniel Wagner
8b1f45a6ec binary-0.6 compatibility
Ignore-this: 6af2adadedc20f51bb5084b3da59724e

darcs-hash:20121213030806-76d51-6d52680cab9b4f4b6c2ba17e29fa457b85d4d838
2012-12-12 19:08:06 -08:00
Daniel Wagner
25d4551635 bump version to 0.6.7.2
Ignore-this: 1ad0071f34d63d2012b869a8cc8b1818

darcs-hash:20121124014853-76d51-1cb8ae120a4ff2f4cb017d76a0bbc69ce70fe3c3
2012-11-23 17:48:53 -08:00
Daniel Wagner
2a0fc9d7b8 write future me a warning about how to use the regression tester
Ignore-this: f51e3161e581a8e480101c7060d1ae77

darcs-hash:20121208023249-76d51-f071cee65b5ec2896ad229aa27bca87a9e479854
2012-12-07 18:32:49 -08:00
Daniel Wagner
d604ac7763 add a way to run regression tests
Ignore-this: 5a811f403a442afc19ef9ae2874ac4ae

darcs-hash:20121208023159-76d51-feb50029c8fa6fd30e43e627d1f996ab898f7649
2012-12-07 18:31:59 -08:00
Daniel Wagner
9da33cd371 add Ord and Read instances to the encoding/decoding exceptions
Ignore-this: 5ec11b8739b241f1cc2935f5f8e34bfb

darcs-hash:20121208023123-76d51-b27be713e80337673d35c2b749a52e964810b17b
2012-12-07 18:31:23 -08:00
Daniel Wagner
7d2f55ce07 add a tool for generating regression tests before you start hacking on the implementation of an encoding
Ignore-this: d1f08ea3737455b87aa9828b88763d1f

darcs-hash:20121203233647-76d51-a289254906f15e21b147294bfa0d5b37efde2854
2012-12-03 15:36:47 -08:00
Daniel Wagner
d8f94105ee throw -> throwException; all tests now pass
Ignore-this: 9ca8029db67a3f2a55e74b9d2f5deb90

darcs-hash:20121203225812-76d51-341b22e3205a2d5348ab7bf2df4320824b01a172
2012-12-03 14:58:12 -08:00
Daniel Wagner
789bc64b4c make an executable that runs all the tests in preparation for making possibly-breaking changes
Ignore-this: 9fcdf4cbef8c48ab63cf8852f7c34609

darcs-hash:20121128033250-76d51-fec2cd876579663f85d3b23a9bcf2dc6a469ce94
2012-11-27 19:32:50 -08:00
Daniel Wagner
93da077efb put an upper bound on the binary package until we figure out how to deal with lookAhead disappearing
Ignore-this: c8aaa1909902fcaf6a3cd3e975f0cf23

darcs-hash:20121124014801-76d51-d8767d5a4568de20b3850ce8fa4e36e370386c4d
2012-11-23 17:48:01 -08:00
Daniel Wagner
1c3ac37dfb blurgh, it's code.haskell.org not community.haskell.org
Ignore-this: 17c564f131e17631d0b07463246afd83

darcs-hash:20121017174928-76d51-e9219915e36318d42e367dd5d4fd1060e96efb44
2012-10-17 10:49:28 -07:00
Daniel Wagner
048bf2ec0c record what to do when releasing for my feeble memory
Ignore-this: 35d31f1c221ab6be43949d610a9db279

darcs-hash:20121017174555-76d51-a679a1f3270cf781ce1d826e289cad5bbce58502
2012-10-17 10:45:55 -07:00
Daniel Wagner
5c497e5dde fix some "cabal sdist" warnings
Ignore-this: 638c9a8617ce5488efe95fa8019380fd

darcs-hash:20121017172328-76d51-da695fe80b7bddb090b219dd949d8c9b87fa9bc0
2012-10-17 10:23:28 -07:00
Daniel Wagner
3f8c3bbb26 whitespace: eol marker at end of all files
Ignore-this: 3b03abece3edb25c656f84db9cef7734

darcs-hash:20121017171258-76d51-76a4e9057c0a4c3c1370485f3dc072c18caafddf
2012-10-17 10:12:58 -07:00
Daniel Wagner
e170c32ac3 update NEWS file for 0.6.7
Ignore-this: b9eb9b25a38772f87e378311de7fc98d

darcs-hash:20121017171028-76d51-8d1b9f75ecba65e76967fe19692487db7140b405
2012-10-17 10:10:28 -07:00
Daniel Wagner
c06d483ef6 provide a flag to disable the FFI function getSystemEncoding
Ignore-this: 4c6b01ddae1d86034b7d9522c188ad75
The library for querying locale isn't as easily available on Windows as it is
on Linux. This flag provides a way for people who don't need the
getSystemEncoding function to ease the build process.

darcs-hash:20121017170920-76d51-7caa5ee9897c49a46d7beeb4aca5dcedf60e3c32
2012-10-17 10:09:20 -07:00
Daniel Wagner
201eccc546 change maintainer and bump version number
Ignore-this: 9a6a1fefb3b7662c6e36d87786626e61

darcs-hash:20121017163230-76d51-a69ebceb95d8622ab4cbc534a92bbca7d40a29b7
2012-10-17 09:32:30 -07:00
Daniel Wagner
ffb37b3e2c minor cleanup: remove some commented-out code
Ignore-this: b85f525f9eaba4e475e157a541c45070

darcs-hash:20120420205823-76d51-62f8eb59cb07d75ca4f5be1a787be93746075c85
2012-04-20 13:58:23 -07:00
Daniel Wagner
a95a1e298b changes for GHC-7 and HaXml-1.22 compatibility
Ignore-this: c517f25bda6021abca5d16cf9d7d88dd

darcs-hash:20120420205714-76d51-a665d650004e98cad59fa489b97b81496848bc3b
2012-04-20 13:57:14 -07:00
Henning Guenther
44f3f083aa Make package work with base-4.3 and mtl-2
Ignore-this: 85b05556d0b7b5968d2d0340ea9daf5d

darcs-hash:20110425123827-a4fee-dd4f4c2a305d9937316b57dbe50ce154494032ac
2011-04-25 05:38:27 -07:00
Henning Guenther
ce0aa549b7 Bump version in cabal file
Ignore-this: bb4c0f9d3c5c480e73a3763abcc0894d

darcs-hash:20110403125137-a4fee-51ea64d6eb9c36d3d48f9fcbe3b716a593f9a5d3
2011-04-03 05:51:37 -07:00
Henning Guenther
23ae31d2a1 Update NEWS file for version 0.6.4
Ignore-this: 3dbc16a142b369101d2af70bc670bc6b

darcs-hash:20110403124702-a4fee-b187902a8d397f94f97ae50a614e00fbddd6e76f
2011-04-03 05:47:02 -07:00
Henning Guenther
9a7f52ab7a Fix compilation with mtl-2
Ignore-this: 867097705abf2d63e427858078720dc4
This took really long, sorry everybody :/

darcs-hash:20110403123836-a4fee-c6af95e58267ca7e215e24bee250d0bbae13a1d4
2011-04-03 05:38:36 -07:00
Daniel Wagner
a3a24776a3 let D.E.ASCII conform to the spec
Ignore-this: 788eb99b3948ce201769471919562114

The contract for the "encodeable" function says, in part, "If it yields False,
encodeChar must throw an exception.". This patch makes the ASCII encoding
instance throw an exception for non-ASCII characters.

darcs-hash:20100909222914-76d51-76d9891ae18f13751b004e2b6ed24401192ae79f
2010-09-09 15:29:14 -07:00
Henning Guenther
fef1fbd22f Bump version to 0.6.3
Ignore-this: d648331a5633dd1185592ba54dd60444

darcs-hash:20100214232011-a4fee-36b26174bede9e10a26d1134c6901eb09949b233
2010-02-14 15:20:11 -08:00
Henning Guenther
f3022891df Remove nl_langinfo hack
Ignore-this: 1f46fdb32bd81d98cd52744377da3dbb

darcs-hash:20100214231939-a4fee-53f1a968c4e6a89f1526bbb85d9926688de4afda
2010-02-14 15:19:39 -08:00
Henning Guenther
9e6b9a4cf0 Fix test file reading
Ignore-this: 7aa67cc1382a6f49ee2fcf6243c86f32

darcs-hash:20100214231812-a4fee-1f4138b361f42309de69aea81e07993dd567db19
2010-02-14 15:18:12 -08:00
Henning Guenther
58dd5e4a58 Remove BIG5 tests
Ignore-this: c1a205c92054dfaa81dbc15318949344

darcs-hash:20100214231631-a4fee-191d09de2ea31adb0808c227ef9c6cd3511c6bf4
2010-02-14 15:16:31 -08:00
Henning Guenther
adcf21c753 Use QuickCheck2 for tests
Ignore-this: 6737cd0c99551059dbd38ccd5c829c3f

darcs-hash:20100214220741-a4fee-595218656a3e7a18ecf2413bfdbaa04fa4add743
2010-02-14 14:07:41 -08:00
Henning Guenther
87dbb737ed Fix encoding range of UTF16
Ignore-this: 444de9225bcb43b6af883a9cdf5f352a
Found due to better QuickCheck properties

darcs-hash:20100214220255-a4fee-56b8388a1379774f3603405e144cdedead4a2edc
2010-02-14 14:02:55 -08:00
Henning Guenther
7b887abcb1 Fix bang pattern warning
Ignore-this: 25c92a74956ada02b849a5bdb56f78c1

darcs-hash:20100214211452-a4fee-22d79ad1175d6d8728b2c9ba438a44ff891aa69f
2010-02-14 13:14:52 -08:00
Henning Guenther
5b514a206a Add HaXml dependency
Ignore-this: 2e01b35277105343d0426e0951544505

darcs-hash:20100201082204-a4fee-fc0a0d7683c2ed2457eb38726525fee04f330513
2010-02-01 00:22:04 -08:00
Henning Guenther
c2ce913d3f Remove dependency on template-haskell
Ignore-this: e4fc48e59e1a43e1e2c155b5d05f4b3c

darcs-hash:20090830155745-a4fee-44419c305487b0dc60d53f43e8b9d3dc8e21b9c9
2009-08-30 08:57:45 -07:00
Henning Guenther
7e4b35de61 Bump version to 0.6.2
Ignore-this: c757675fcaf5e9025b281326a7643c8c

darcs-hash:20090830111653-a4fee-a748c4e2e3a183ecd85ef9e1a0274d787574e274
2009-08-30 04:16:53 -07:00
Henning Guenther
7b5de2715c Bump version to 0.6.1
Ignore-this: ec6377bace790a22dd28c1a83a53443c

darcs-hash:20090829140114-a4fee-3f7aedd86d61d8973c4684e420922b30d1e0536c
2009-08-29 07:01:14 -07:00
Henning Guenther
871b207ab2 Tuple instances for StaticElement
Ignore-this: 50d3356bb845ae964e3a4b45cac0235d

darcs-hash:20090829135510-a4fee-131e4610a14dbd1b9f6d17aa65f41e2b5458311e
2009-08-29 06:55:10 -07:00
Henning Guenther
44d37e6bea More IO functions
Ignore-this: e118f2be06c7c911034b937de28a9549

darcs-hash:20090829135432-a4fee-7d2652ba7654d21d147388929b6864817e327428
2009-08-29 06:54:32 -07:00
Henning Guenther
f7b6c800ef Generate fancy translation table for documentation
Ignore-this: 353d70985d048216dcf4522ceef10c26

darcs-hash:20090829131955-a4fee-c9e694757edc00d61e4a4365ef1fe2b0aeb948e8
2009-08-29 06:19:55 -07:00
Henning Guenther
85394f42d2 Remove bogus documentation from ISO modules
Ignore-this: a81365c812029787ddc46e9b6d597e5d

darcs-hash:20090829131726-a4fee-03bd97dfe38876c7c41039f5dc27a54a71ed7755
2009-08-29 06:17:26 -07:00
Henning Guenther
b12649a071 Allow for documentation on mapping files
Ignore-this: 5bcfdd21c16464e29fb7498dd6ec8915
Use the first commented lines in each mapping file as the docstring for the whole module.

darcs-hash:20090829125423-a4fee-c99efd2cccdaa24d3b283aca0d43cd7ff6970c7f
2009-08-29 05:54:23 -07:00
Henning Guenther
56867f5768 Add warning about auto-generated files
Ignore-this: 848d57a87bb839738cb055ff578b4784

darcs-hash:20090829121624-a4fee-b98f311f8e3358d3185d8cf9a796458ef234e2a7
2009-08-29 05:16:24 -07:00
Henning Guenther
98ece426d9 Document Encoding base classes
Ignore-this: 6a7f57460edd3a888d5f214c9aa115b

darcs-hash:20090828223146-a4fee-0e54f4127ceef0ddc6bfd938813b030d5b2faf19
2009-08-28 15:31:46 -07:00
Henning Guenther
94b3b3f7d9 Various MSDOS copepages added
Ignore-this: 6adc7c3ba146e7c41d3178241c173751

darcs-hash:20090828222844-a4fee-08926d980f1ffc4287b992a528855d03dd2d7bed
2009-08-28 15:28:44 -07:00
Henning Guenther
2a2630625c Add Show instance for DynEncoding
Ignore-this: 358ed8859aebfc1e9493150fbec0ff40

darcs-hash:20090828213441-a4fee-83066014b6a8b4d92c41c8bda7a36ea5c141673b
2009-08-28 14:34:41 -07:00
Henning Guenther
e0231b1213 Bumped to version 0.6.0
Ignore-this: ec545e809c7f51061620a8cde76752bd

darcs-hash:20090813050845-a4fee-8697ed8dddc0e28097e43ab06d3a5888848e2a63
2009-08-12 22:08:45 -07:00
Henning Guenther
6f3c147f8d Added missing Data.Static
Ignore-this: 1bea98c16d73c055f608e8e2ea7b99d0

darcs-hash:20090813050306-a4fee-8fa3d698cffaff03b58cd867a29d7d08d078fd42
2009-08-12 22:03:06 -07:00
Henning Guenther
7f1a89a45a Add Preprocessor files to cabal, change build-type
Ignore-this: 954f97107600cfe61c3cc993136559c1
Since we're using special preprocessors, the build-type is no longer 'Simple'

darcs-hash:20090813045828-a4fee-b97b1613b37d5ec1b0e755ccaa25c805fbbb0c1b
2009-08-12 21:58:28 -07:00
Henning Guenther
10730b3131 Removed old GB18030 code generation script
Ignore-this: 194000c4210b31742b6ae73e6e7ef7bc

darcs-hash:20090813044355-a4fee-f2e9163b6e295ecd35de52f3c51cee22fd9f5f00
2009-08-12 21:43:55 -07:00
Henning Guenther
b000cd4e0a Update NEWS file
Ignore-this: 7e24e82582a82c06d393033177e37ea6

darcs-hash:20090813043850-a4fee-bd38377dee85ca2e91c273457b7f1ecad0bd1585
2009-08-12 21:38:50 -07:00
Henning Guenther
037505e3d6 Documentation for ISO8859-1
Ignore-this: 2c8c38a574a39170f67a4f043406f081

darcs-hash:20090813043833-a4fee-65a4a6eba1ca3d6ad04b69ec9b9ce805edb8e302
2009-08-12 21:38:33 -07:00
Henning Guenther
414adf4e7d Removed obsolete template code
Ignore-this: d555a44d9f5cf27c03f7b5ddd3a6ef4a

darcs-hash:20090813043811-a4fee-6ce046900453472765daf718ffe5446cf65ce4e7
2009-08-12 21:38:11 -07:00
Henning Guenther
dc6c1f142d Move tests to subfolder
Ignore-this: a66b6855c44adcf4008d42633a18dcc0

darcs-hash:20090813043718-a4fee-e9fd245938235a20e79973861c3a4992d20a9d7f
2009-08-12 21:37:18 -07:00
Henning Guenther
73eefc2838 Removed obsolete import
Ignore-this: 1dbf628a27fb6b26d38dbf30e17f3a5e

darcs-hash:20090813024342-a4fee-54437c7ba6ea62ac454a6d1d4dc31c721b227d9f
2009-08-12 19:43:42 -07:00
Henning Guenther
39af34b0a3 Added Preprocessor for XML mappings and normal mappings
Ignore-this: dc0902f526ceb99db528e14c9e3ad563

darcs-hash:20090813024109-a4fee-447c0ff194c227ed919d6eef0f7824e63276183e
2009-08-12 19:41:09 -07:00
Henning Guenther
6101ee16ae Switch from Template-based code generating to text-based
Ignore-this: f58ceb5e1068be132b0a67a851b096f4
This has two advantages:
1. TemplateHaskell is painfully slow. There, I said it.
2. TemplateHaskell doesn't yet support some extensions that can be usefull for this library. Specifically the MagicHash extension.

darcs-hash:20090813023321-a4fee-0da13d0da6454f6ba3bd111ed6b80268d9e1b45c
2009-08-12 19:33:21 -07:00
Henning Guenther
1ad8755a80 Fix chr calling on big numbers in UTF8
Ignore-this: 3a7650c4b75691b79b082db6bddd5b8b

darcs-hash:20090813022455-a4fee-1989c74eb7f7a9daa87f902da138c45185ea520e
2009-08-12 19:24:55 -07:00
Henning Guenther
c4a1e63869 Changed version to 0.5.2
Ignore-this: dbf13b00cc9d7fc9133d333af113e95e

darcs-hash:20090806114518-a4fee-803a90ad4e15185477a3ba3224bb123be78b2c60
2009-08-06 04:45:18 -07:00
Daniel Wagner
4b8a0341ac export encodingFromStringMaybe (as encodingFromStringExplicit for consistency)
Ignore-this: 93f0968658fbdcd66f8f352308ebb1d5

darcs-hash:20090730233821-76d51-9ee074434d3626ad1a49cc44678d937fdb8750ce
2009-07-30 16:38:21 -07:00
Henning Guenther
8b5975bde5 Set cabal file version to 0.5.1
Ignore-this: c38e113f436cb7780c13294a2b6ca204

darcs-hash:20090311160251-a4fee-ab11b9a4767a0d32d8e4449cc0cb960709999226
2009-03-11 09:02:51 -07:00
Henning Guenther
733e39c9c5 Fixed missing symbol error
Ignore-this: 74737e29ca18f14d3c6368d0e6fd5266

darcs-hash:20090307235915-a4fee-1f487ef97eb85851eb1147866da28fa0a945165f
2009-03-07 15:59:15 -08:00
Henning Guenther
3fe8b56539 Included extra files in the cabal file
Ignore-this: b0470515a20c9c6ab15e4ac122065da5

darcs-hash:20090306150225-a4fee-a21ac1acad202a360764df66624f8a13fc228bab
2009-03-06 07:02:25 -08:00
Henning Guenther
46d5eb8efd Generalized column skipping in code tables
Ignore-this: dbcc883c561f2f074dd4739387dd3f43

darcs-hash:20090306150105-a4fee-b4d441cd38c758c803732e0c74a86a53d8db9c28
2009-03-06 07:01:05 -08:00
Henning Guenther
6b57fd01c2 Added JIS0212 data
Ignore-this: 249c7da22447627edd796eaaa403045b

darcs-hash:20090303131723-a4fee-722fc03a8585e1a1ca9a118dd698d049a9e64be9
2009-03-03 05:17:23 -08:00
Henning Guenther
fb5111d7dc ISO2022JP encoding
Ignore-this: fa857024fa249fff451f5c024962484e

darcs-hash:20090303125641-a4fee-ac96e5788bb6b3cdf61f2e19f4bd19ece710e24b
2009-03-03 04:56:41 -08:00
Henning Guenther
7f65298d3a ISO2022 encoding
Ignore-this: 6058e1ef5776d1cdf70c32e533252b5e

darcs-hash:20090303125452-a4fee-d9a0533bf8215100a923f6552775048c2844a240
2009-03-03 04:54:52 -08:00
Henning Guenther
693010654c Added JISX0212
Ignore-this: 731c592d836554408bd7350b20a623a3

darcs-hash:20090303125335-a4fee-48fb4fa694f42bae3ba57834c3e52966c414bb55
2009-03-03 04:53:35 -08:00
Henning Guenther
26924f12a5 Added JISX0212 to cabal file
Ignore-this: f265ef1c7b0096b55a487eb63264b0af

darcs-hash:20090303125143-a4fee-8e5416156fec585f38270f87d5c5faab395eeed2
2009-03-03 04:51:43 -08:00
Henning Guenther
53d723d61e Added MacOSRoman
Ignore-this: 9e8a302ffb6510ac490e71274d831231

darcs-hash:20090303125116-a4fee-ab486e72484d1ab9ac33dedc0ab2150ad05d2714
2009-03-03 04:51:16 -08:00
Henning Guenther
3270e03da1 Made decoding array lookup safe
Ignore-this: 346535974ae363daf4ade7e22ed48ad7

darcs-hash:20090226144653-a4fee-42808f15a3bab3fa1712ab12d8b0cfb54ff96aad
2009-02-26 06:46:53 -08:00
Henning Guenther
6eb2d51ee2 Decoding arrays are unboxed (thus strict) now
darcs-hash:20090225075818-a4fee-f558e4bde484482e0987c8623c3b2ec54ac4e394
2009-02-24 23:58:18 -08:00
Henning Guenther
3b3f042529 Fix case and indentation
darcs-hash:20090225073306-a4fee-a93aac7f0d47124c91a6b0a4899e9a96649d009d
2009-02-24 23:33:06 -08:00
Henning Guenther
c2899caa35 Added ISO 2022-JP string to names list
darcs-hash:20090225073143-a4fee-ec84c9ab6d5baa030e204df92bc5f4450011f9f9
2009-02-24 23:31:43 -08:00
Henning Guenther
d2e7eeddd1 Updated news file
darcs-hash:20090225071714-a4fee-e38af4b173aad5cced3a0f9999d13c202d1a2050
2009-02-24 23:17:14 -08:00
Henning Guenther
ad5c9e1d59 Added ISO2022JP to cabal file
darcs-hash:20090225040620-a4fee-f90d7f0763b5fb8996d594cd64753cfd2cedb530
2009-02-24 20:06:20 -08:00
Henning Guenther
0608a57c6b Added ISO2022JP testcase
darcs-hash:20090225040556-a4fee-38a743dc10cd3eca8b33cc656ba33f6e89354db5
2009-02-24 20:05:56 -08:00
Henning Guenther
0b18661553 Added JISX0208 encoding file
darcs-hash:20090225040351-a4fee-c061eed83f2d97c98a4ed56e75f58c4bf0f9b057
2009-02-24 20:03:51 -08:00
Henning Guenther
d12097c7a1 Removed useless comment
darcs-hash:20090225040233-a4fee-16dcf1f9cbc42c7e379f8ba83cb5f16ff1832d2c
2009-02-24 20:02:33 -08:00
Henning Guenther
7b2af16c03 Added fetchAhead function
darcs-hash:20090225040209-a4fee-816a8cef5c9edeea5b35fd5fe75ca5b0ec36ee17
2009-02-24 20:02:09 -08:00
Henning Guenther
5528bf1a55 Added encodeable function
darcs-hash:20090225040044-a4fee-67753f6d651b18d5bd3a28340ea8f5d7ea7eb90d
2009-02-24 20:00:44 -08:00
Henning Guenther
1543e75f50 Added Eq instance for DynEncoding
This envolves adding the requirement, that every Encoding must also be an instance of Eq and Typeable to go into DynEncoding.

darcs-hash:20090225035150-a4fee-c7d902e28313929ee9ffe0c6a6b60d8ff4704ae9
2009-02-24 19:51:50 -08:00
Henning Guenther
b95bfe9be4 JIS X 0208 encoding
darcs-hash:20090223182459-a4fee-98ced8f8b7bac594dc6510eeecb6bea8c51a6090
2009-02-23 10:24:59 -08:00
Henning Guenther
0398f66695 Remove Hack Warning
darcs-hash:20090222183603-a4fee-b9435eb4652e49092c8c3b875e72006ff03b9de2
2009-02-22 10:36:03 -08:00
Henning Guenther
9344038d33 JIS X 0201 encoding
darcs-hash:20090222182246-a4fee-903520e4098e6809877fc55568207f40ebd6fda9
2009-02-22 10:22:46 -08:00
Henning Guenther
d83074fa18 MacOS Roman encoding
darcs-hash:20090222035756-a4fee-d2fef7a2c3317fbe9f25ab80bb6e156ceb0abf8a
2009-02-21 19:57:56 -08:00
Henning Guenther
9e94c56aa0 Updated NEWS file for 0.5
darcs-hash:20090222034200-a4fee-a3ded8b6ae57fc33637778fb4dce6f378fac1ae4
2009-02-21 19:42:00 -08:00
115 changed files with 34850 additions and 1653 deletions

22
.gitignore vendored Normal file
View File

@ -0,0 +1,22 @@
### Haskell ###
dist
dist-*
cabal-dev
*.o
*.hi
*.chi
*.chs.h
*.dyn_o
*.dyn_hi
.hpc
.hsenv
.cabal-sandbox/
cabal.sandbox.config
*.prof
*.aux
*.hp
*.eventlog
.stack-work/
cabal.project.local
.HTF/

112
CHANGELOG Normal file
View File

@ -0,0 +1,112 @@
Changes from 0.8 to 0.8.2
-------------------------
* Deprecated support for very old GHCs
* Updated cabal file to differentiate between build dependencies and setup dependencies
* Add upper and lower bounds to build dependencies
* Stack compatibility
Changes from 0.8 to 0.8.1
-------------------------
* Added the ShiftJIS and CP932 encodings
Changes from 0.7.0.2 to 0.8
---------------------------
* GHC-7.10/AMP compatibility
Changes from 0.7.0.1 to 0.7.0.2
-------------------------------
* Flesh out the MacOSRoman encoding, which was missing 33 code points
Changes from 0.7 to 0.7.0.1
---------------------------
* GHC-7.8 compatibility
Changes from 0.6.7 to 0.7
-------------------------
* the type of ByteSource's fetchAhead method changed to accomodate updates to the binary package
Changes from 0.6.5 to 0.6.7
---------------------------
* Skipped version 0.6.6 due to rogue upload on Hackage
* GHC-7 and HaXml-1.22 compatibility
* add -systemEncoding flag for Windows builds
Changes from 0.6.4 to 0.6.5
---------------------------
* Make package work with >=base-4.3.0.0 and mtl-2
Changes from 0.6.3 to 0.6.4
---------------------------
* Throw an error when encoding non-ascii chars with ascii
* Fix compilation with mtl-2
Changes from 0.6.2 to 0.6.3
---------------------------
* Use new QuickCheck version 2 for tests
* Fixed UTF16 encoding range
Changes from 0.6.0 to 0.6.1
---------------------------
* Support for many MSDOS codepages
* Show instance for DynEncoding
* More IO functions
* Fancy translation tables for the documentation of auto-generated modules
Changes from 0.5.2 to 0.6.0
---------------------------
* Moved from TemplateHaskell to a custom pre-processor for code-generation.
This is necessary because:
- TemplateHaskell is really slow for large data structures
- TemplateHaskell doesn't yet support the MagicHash extension that is useful for the library
* Use efficient, static data structures for encoding/decoding
* Fixed bug in UTF-8 that could call 'chr' with bad arguments
Changes from 0.5 to 0.5.2
-------------------------
* Export function encodingFromStringExplicit
Changes from 0.4 to 0.5
-----------------------
* Complete rewrite of the Encoding class to allow for
- On-the-fly changing of the encoding while en-/decoding
- Ability to en-/decode from/to any data structure
* A general module to help specify encodings based on ISO 2022
* New encodings:
- JIS X 0201
- JIS X 0208
- ISO 2022-JP
* More test cases
Changes from 0.3 to 0.4
-----------------------
* A new, strict UTF-8 decoder
* Minor bugs fixed in UTF-16 and BootString
* Test cases for UTF-8, UTF-16 and BootString
* Added KOI8U encoding
Changes from 0.2 to 0.3
-----------------------
* Converted to new cabal interface
* Support for GHC 6.8
* Support for new bytestring interface
Changes from 0.1 to 0.2
-----------------------
* Implemented GB18030 encoding

15
Data/Array/Static.hs Normal file
View File

@ -0,0 +1,15 @@
{-# LANGUAGE MagicHash,BangPatterns #-}
module Data.Array.Static where
import Data.Static
import GHC.Exts
import Data.Ix
data StaticArray i e = StaticArray i i Addr#
bounds :: Ix i => StaticArray i e -> (i,i)
bounds (StaticArray s e _) = (s,e)
(!) :: (StaticElement e,Ix i) => StaticArray i e -> i -> e
(!) (StaticArray s e addr) i = let !(I# ri) = index (s,e) i
in extract addr ri

View File

@ -0,0 +1,12 @@
{-# LANGUAGE MagicHash #-}
module Data.Array.Static.Builder where
import Data.Static
buildStaticArray :: (StaticElement e,Show i) => (i,i) -> [e] -> String
buildStaticArray (s,e) els = "StaticArray ("++show s++") ("++show e++") \""
++concat (map (\w -> '\\':show w) (concat (map gen els)))
++"\"#"
buildStaticArray' :: (StaticElement e) => [e] -> String
buildStaticArray' els = buildStaticArray (0,length els-1) els

73
Data/CharMap.hs Normal file
View File

@ -0,0 +1,73 @@
module Data.CharMap where
import Data.Map.Static
import Data.Encoding.ByteSink
import Data.Encoding.Exception
import Control.Throws
import Data.Word
import Data.Char
import Prelude hiding (lookup)
data CharMap
= Node !Char !CharMap !CharMap
| DeadEnd
| LeafRange1 !Int !Word8
| LeafRange2 !Int !Word8 !Word8 !Word8
| LeafRange3 !Int !Word8 !Word8 !Word8 !Word8 !Word8
| LeafRange4 !Int !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8
| LeafMap1 (StaticMap Char Word8)
| LeafMap2 (StaticMap Char Word16)
| LeafMap4 (StaticMap Char Word32)
mapEncode :: ByteSink m => Char -> CharMap -> m ()
mapEncode ch (Node rch l r)
| ch < rch = mapEncode ch l
| otherwise = mapEncode ch r
mapEncode ch DeadEnd = throwException (HasNoRepresentation ch)
mapEncode ch (LeafRange1 bch st)
= pushWord8 $ st + (fromIntegral ((ord ch) - bch))
mapEncode ch (LeafRange2 bch min1 min2 r2)
= let v = (ord ch) - bch
(w1,w2) = v `divMod` (fromIntegral r2)
in do
pushWord8 (fromIntegral w1 + min1)
pushWord8 (fromIntegral w2 + min2)
mapEncode ch (LeafRange3 bch min1 min2 r2 min3 r3)
= let v = (ord ch) - bch
(v1,w3) = v `divMod` (fromIntegral r3)
(w1,w2) = v1 `divMod` (fromIntegral r2)
in do
pushWord8 (fromIntegral w1 + min1)
pushWord8 (fromIntegral w2 + min2)
pushWord8 (fromIntegral w3 + min3)
mapEncode ch (LeafRange4 bch min1 min2 r2 min3 r3 min4 r4)
= let v = (ord ch) - bch
(v1,w4) = v `divMod` (fromIntegral r4)
(v2,w3) = v1 `divMod` (fromIntegral r3)
(w1,w2) = v2 `divMod` (fromIntegral r2)
in do
pushWord8 (fromIntegral w1 + min1)
pushWord8 (fromIntegral w2 + min2)
pushWord8 (fromIntegral w3 + min3)
pushWord8 (fromIntegral w4 + min4)
mapEncode ch (LeafMap1 mp) = case lookup ch mp of
Nothing -> throwException (HasNoRepresentation ch)
Just v -> pushWord8 v
mapEncode ch (LeafMap2 mp) = case lookup ch mp of
Nothing -> throwException (HasNoRepresentation ch)
Just v -> pushWord16be v
mapEncode ch (LeafMap4 mp) = case lookup ch mp of
Nothing -> throwException (HasNoRepresentation ch)
Just v -> pushWord32be v
mapMember :: Char -> CharMap -> Bool
mapMember c (Node rc l r)
| c < rc = mapMember c l
| otherwise = mapMember c r
mapMember c DeadEnd = False
mapMember c (LeafMap1 mp) = member c mp
mapMember c (LeafMap2 mp) = member c mp
mapMember c (LeafMap4 mp) = member c mp
mapMember c _ = True

64
Data/CharMap/Builder.hs Normal file
View File

@ -0,0 +1,64 @@
module Data.CharMap.Builder where
import Data.Map.Static.Builder
import Data.List
import Data.Ord
import Data.Char
import Data.Bits
import Data.Word
data BuildingBlock
= SingleMapping Char [Word8]
| RangeMapping Char Char Int [(Word8,Word8)]
charRange :: BuildingBlock -> (Char,Char)
charRange (SingleMapping c _) = (c,c)
charRange (RangeMapping s e _ _) = (s,e)
mappingLength :: BuildingBlock -> Int
mappingLength (SingleMapping _ w) = length w
mappingLength (RangeMapping _ _ _ ws) = length ws
isRange :: BuildingBlock -> Bool
isRange (SingleMapping _ _) = False
isRange (RangeMapping _ _ _ _) = True
buildCharMap :: [BuildingBlock] -> String
buildCharMap lst = let slst = sortBy (comparing (fst.charRange)) lst
grps = groupBy (\x y -> (not (isRange x || isRange y))
&& mappingLength x == mappingLength y
) slst
split' xs = splitAt (length xs `div` 2) xs
build' [] _ _ = "DeadEnd"
build' [[RangeMapping st end off (x:xs)]] bl br
= let e1 = if bl < st
then "Node ("++show st++") DeadEnd ("++e2++")"
else e2
e2 = if br>end
then "Node ("++show end++") ("++e3++") DeadEnd"
else e3
e3 = "LeafRange"++show (length xs+1)++" ("++show (ord st - off)++") "
++show (fst x)++concat (map (\(w,r) -> " "++show w++" "++show r) xs)
in e1
build' [mps@((SingleMapping _ w):_)] bl br
= "LeafMap"++show (length w)++" ("
++(case length w of
1 -> buildStaticMap (map (\(SingleMapping c [w]) -> (c,w)) mps)
2 -> buildStaticMap $ map (\(SingleMapping c [w1,w2])
-> (c,((fromIntegral w1) `shiftL` 8) .|. (fromIntegral w2)::Word16)
) mps
4 -> buildStaticMap $ map (\(SingleMapping c [w1,w2,w3,w4])
-> (c,((fromIntegral w1) `shiftL` 24)
.|. ((fromIntegral w2) `shiftL` 16)
.|. ((fromIntegral w3) `shiftL` 8)
.|. (fromIntegral w4)::Word32)
) mps)++")"
build' mps bl br = let (l,r@((spl:_):_)) = split' mps
(el,_) = charRange spl
in "Node ("++show el++") ("++build' l bl (pred el)++") ("++
build' r el br++")"
in build' grps minBound maxBound

View File

@ -1,4 +1,4 @@
{-# LANGUAGE FlexibleContexts,ExistentialQuantification #-}
{-# LANGUAGE FlexibleContexts #-}
module Data.Encoding
(module Data.Encoding.Exception
,module Data.Encoding.ByteSource
@ -19,6 +19,7 @@ module Data.Encoding
,decodeStrictByteString
,decodeStrictByteStringExplicit
,encodingFromString
,encodingFromStringExplicit
)
where
@ -71,17 +72,31 @@ import Data.Encoding.CP1258
import Data.Encoding.KOI8R
import Data.Encoding.KOI8U
import Data.Encoding.GB18030
import Data.Encoding.MacOSRoman
import Data.Encoding.JISX0201
import Data.Encoding.JISX0208
import Data.Encoding.ISO2022JP
import Data.Encoding.ShiftJIS
import Data.Encoding.CP437
import Data.Encoding.CP737
import Data.Encoding.CP775
import Data.Encoding.CP850
import Data.Encoding.CP852
import Data.Encoding.CP855
import Data.Encoding.CP857
import Data.Encoding.CP860
import Data.Encoding.CP861
import Data.Encoding.CP862
import Data.Encoding.CP863
import Data.Encoding.CP864
import Data.Encoding.CP865
import Data.Encoding.CP866
import Data.Encoding.CP869
import Data.Encoding.CP874
import Data.Encoding.CP932
import Data.Char
import Text.Regex
data DynEncoding = forall enc. Encoding enc => DynEncoding enc
instance Encoding DynEncoding where
decodeChar (DynEncoding e) = decodeChar e
encodeChar (DynEncoding e) = encodeChar e
decode (DynEncoding e) = decode e
encode (DynEncoding e) = encode e
recode :: (Encoding enc1,Encoding enc2,ByteSource m,ByteSink m) => enc1 -> enc2 -> m ()
recode e1 e2 = untilM_ sourceEmpty (decodeChar e1 >>= encodeChar e2)
@ -129,8 +144,8 @@ decodeStrictByteStringExplicit :: Encoding enc => enc -> BS.ByteString -> Either
decodeStrictByteStringExplicit e str = evalStateT (decode e) str
-- | Like 'encodingFromString' but returns 'Nothing' instead of throwing an error
encodingFromStringMaybe :: String -> Maybe DynEncoding
encodingFromStringMaybe codeName = case (normalizeEncoding codeName) of
encodingFromStringExplicit :: String -> Maybe DynEncoding
encodingFromStringExplicit codeName = case (normalizeEncoding codeName) of
-- ASCII
"ascii" -> Just $ DynEncoding ASCII
"646" -> Just $ DynEncoding ASCII
@ -306,6 +321,35 @@ encodingFromStringMaybe codeName = case (normalizeEncoding codeName) of
-- GB18030
"gb18030" -> Just $ DynEncoding GB18030
"gb18030_2000" -> Just $ DynEncoding GB18030
-- MacOSRoman
"macintosh" -> Just $ DynEncoding MacOSRoman
-- JIS X 0201
"jis_x_0201" -> Just $ DynEncoding JISX0201
-- JIS X 0208
"jis_x_0208" -> Just $ DynEncoding JISX0208
-- ISO 2022-JP
"iso_2022_jp" -> Just $ DynEncoding ISO2022JP
-- Shift JIS
"shift_jis" -> Just $ DynEncoding ShiftJIS
"sjis" -> Just $ DynEncoding ShiftJIS
-- MSDOS codepages
"cp437" -> Just $ DynEncoding CP437
"cp737" -> Just $ DynEncoding CP737
"cp775" -> Just $ DynEncoding CP775
"cp850" -> Just $ DynEncoding CP850
"cp852" -> Just $ DynEncoding CP852
"cp855" -> Just $ DynEncoding CP855
"cp857" -> Just $ DynEncoding CP857
"cp860" -> Just $ DynEncoding CP860
"cp861" -> Just $ DynEncoding CP861
"cp862" -> Just $ DynEncoding CP862
"cp863" -> Just $ DynEncoding CP863
"cp864" -> Just $ DynEncoding CP864
"cp865" -> Just $ DynEncoding CP865
"cp866" -> Just $ DynEncoding CP866
"cp869" -> Just $ DynEncoding CP869
"cp874" -> Just $ DynEncoding CP874
"cp932" -> Just $ DynEncoding CP932
-- defaults to nothing
_ -> Nothing
where
@ -317,4 +361,4 @@ encodingFromString :: String -> DynEncoding
encodingFromString str = maybe
(error $ "Data.Encoding.encodingFromString: Unknown encoding: "++show str)
id
(encodingFromStringMaybe str)
(encodingFromStringExplicit str)

View File

@ -1,10 +1,12 @@
{-# LANGUAGE DeriveDataTypeable #-}
module Data.Encoding.ASCII where
import Control.Throws
import Data.Char
import Data.Encoding.Base
import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Data.Encoding.Exception
import Data.Typeable
data ASCII = ASCII deriving (Show,Eq,Typeable)
@ -13,5 +15,7 @@ instance Encoding ASCII where
decodeChar _ = do
w <- fetchWord8
return $ chr $ fromIntegral w
encodeChar _ c = do
pushWord8 $ fromIntegral $ ord c
encodeChar enc c
| encodeable enc c = pushWord8 . fromIntegral . ord $ c
| otherwise = throwException . HasNoRepresentation $ c
encodeable _ c = c < '\128'

View File

@ -1,3 +1,4 @@
{-# LANGUAGE ExistentialQuantification #-}
module Data.Encoding.Base where
import Data.Encoding.Exception
@ -5,18 +6,49 @@ import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Control.Throws
import Data.Array as Array
import Data.Array.Unboxed as Array
import Data.Map as Map hiding ((!))
import Data.Word
import Data.Char
import Data.Typeable
{- | The base class for all encodings. At least decodeChar, encodeChar and encodeable must be implemented.
-}
class Encoding enc where
-- | Read a single character of a ByteSource
decodeChar :: ByteSource m => enc -> m Char
-- | Encode a single character and write it to a ByteSink
encodeChar :: ByteSink m => enc -> Char -> m ()
-- | Read characters from a ByteSource until it is empty
decode :: ByteSource m => enc -> m String
decode e = untilM sourceEmpty (decodeChar e)
-- | Encode a String and write it to a ByteSink
encode :: ByteSink m => enc -> String -> m ()
encode e = mapM_ (encodeChar e)
-- | Tests whether a given character is representable in the Encoding.
-- If this yields True, encodeChar must not fail.
-- If it yields False, encodeChar _must_ throw an exception.
encodeable :: enc -> Char -> Bool
{- | Wraps all possible encoding types into one data type.
Used when a function needs to return an encoding.
-}
data DynEncoding = forall enc. (Encoding enc,Eq enc,Typeable enc,Show enc) => DynEncoding enc
instance Show DynEncoding where
show (DynEncoding enc) = show enc
instance Encoding DynEncoding where
decodeChar (DynEncoding e) = decodeChar e
encodeChar (DynEncoding e) = encodeChar e
decode (DynEncoding e) = decode e
encode (DynEncoding e) = encode e
encodeable (DynEncoding e) = encodeable e
instance Eq DynEncoding where
(DynEncoding e1) == (DynEncoding e2) = case cast e2 of
Nothing -> False
Just e2' -> e1==e2'
untilM :: Monad m => m Bool -> m a -> m [a]
untilM check act = do
@ -27,7 +59,7 @@ untilM check act = do
x <- act
xs <- untilM check act
return (x:xs)
)
)
untilM_ :: Monad m => m Bool -> m a -> m ()
untilM_ check act = untilM check act >> return ()
@ -37,9 +69,33 @@ encodeWithMap mp c = case Map.lookup c mp of
Nothing -> throwException $ HasNoRepresentation c
Just v -> pushWord8 v
decodeWithArray :: ByteSource m => Array Word8 (Maybe Char) -> m Char
encodeWithMap2 :: ByteSink m => Map Char (Word8,Word8) -> Char -> m ()
encodeWithMap2 mp c = case Map.lookup c mp of
Nothing -> throwException $ HasNoRepresentation c
Just (w1,w2) -> do
pushWord8 w1
pushWord8 w2
encodeableWithMap :: Map Char a -> Char -> Bool
encodeableWithMap = flip Map.member
decodeWithArray :: ByteSource m => UArray Word8 Int -> m Char
decodeWithArray arr = do
w <- fetchWord8
case arr!w of
Nothing -> throwException $ IllegalCharacter w
Just c -> return c
let res = arr!w
if res < 0
then throwException $ IllegalCharacter w
else return $ chr res
decodeWithArray2 :: ByteSource m => UArray (Word8,Word8) Int -> m Char
decodeWithArray2 arr = do
w1 <- fetchWord8
w2 <- fetchWord8
if inRange (bounds arr) (w1,w2)
then (do
let res = arr!(w1,w2)
if res < 0
then throwException $ IllegalCharacter w1
else return $ chr res
)
else throwException $ IllegalCharacter w1

View File

@ -182,3 +182,4 @@ instance Encoding BootString where
Nothing -> punyDecode base nbase
Just ww -> throwException (IllegalCharacter ww)
Nothing -> punyDecode [] wrds
encodeable bs c = True -- XXX: hm, really?

View File

@ -1,4 +1,4 @@
{-# LANGUAGE FlexibleInstances,FlexibleContexts,MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances,FlexibleContexts,MultiParamTypeClasses,CPP #-}
module Data.Encoding.ByteSink where
import Data.Encoding.Exception
@ -11,6 +11,7 @@ import Data.Word
import Data.Foldable (toList)
import Control.Throws
import Control.Exception.Extensible
import Control.Applicative
import Control.Monad.State
import Control.Monad.Identity
import Control.Monad.Reader
@ -80,6 +81,13 @@ instance ByteSink PutM where
newtype PutME a = PutME (Either EncodingException (PutM (),a))
instance Functor PutME where
fmap = liftM
instance Applicative PutME where
pure = return
(<*>) = ap
instance Monad PutME where
return x = PutME $ Right (return (),x)
(PutME x) >>= g = PutME $ do
@ -101,22 +109,26 @@ instance ByteSink PutME where
pushWord64be w = PutME $ Right (putWord64be w,())
pushWord64le w = PutME $ Right (putWord64le w,())
#if MIN_VERSION_base(4,3,0)
#else
instance Monad (Either EncodingException) where
return x = Right x
Left err >>= g = Left err
Right x >>= g = g x
#endif
instance Throws EncodingException (State (Seq Char)) where
throwException = throw
instance ByteSink (State (Seq Char)) where
pushWord8 x = modify (|> (chr $ fromIntegral x))
instance ByteSink (StateT (Seq Char) (Either EncodingException)) where
instance (Monad m,Throws EncodingException m) => ByteSink (StateT (Seq Char) m) where
pushWord8 x = modify (|> (chr $ fromIntegral x))
newtype StrictSink a = StrictS (Ptr Word8 -> Int -> Int -> IO (a,Ptr Word8,Int,Int))
instance Functor StrictSink where
fmap = liftM
instance Applicative StrictSink where
pure = return
(<*>) = ap
instance Monad StrictSink where
return x = StrictS $ \cstr pos max -> return (x,cstr,pos,max)
(StrictS f) >>= g = StrictS (\cstr pos max -> do
@ -143,6 +155,13 @@ instance ByteSink StrictSink where
newtype StrictSinkE a = StrictSinkE (StrictSink (Either EncodingException a))
instance Functor StrictSinkE where
fmap = liftM
instance Applicative StrictSinkE where
pure = return
(<*>) = ap
instance Monad StrictSinkE where
return = StrictSinkE . return . Right
(StrictSinkE s) >>= g = StrictSinkE $ do
@ -170,6 +189,13 @@ createStrict sink = createStrictWithLen sink 32
newtype StrictSinkExplicit a = StrictSinkExplicit (StrictSink (Either EncodingException a))
instance Functor StrictSinkExplicit where
fmap = liftM
instance Applicative StrictSinkExplicit where
pure = return
(<*>) = ap
instance Monad StrictSinkExplicit where
return = (StrictSinkExplicit).return.Right
(StrictSinkExplicit sink) >>= f
@ -192,4 +218,4 @@ instance ByteSink (ReaderT Handle IO) where
pushWord8 x = do
h <- ask
liftIO $ do
hPutChar h (chr $ fromIntegral x)
hPutChar h (chr $ fromIntegral x)

View File

@ -1,4 +1,4 @@
{-# LANGUAGE FlexibleInstances,FlexibleContexts,MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances,FlexibleContexts,MultiParamTypeClasses,CPP #-}
module Data.Encoding.ByteSource where
import Data.Encoding.Exception
@ -6,7 +6,9 @@ import Data.Encoding.Exception
import Data.Bits
import Data.Binary.Get
import Data.Char
import Data.Maybe
import Data.Word
import Control.Applicative as A
import Control.Monad.State
import Control.Monad.Identity
import Control.Monad.Reader
@ -19,6 +21,9 @@ import System.IO
class (Monad m,Throws DecodingException m) => ByteSource m where
sourceEmpty :: m Bool
fetchWord8 :: m Word8
-- 'fetchAhead act' should return the same thing 'act' does, but should
-- only consume input if 'act' returns a 'Just' value
fetchAhead :: m (Maybe a) -> m (Maybe a)
fetchWord16be :: m Word16
fetchWord16be = do
w1 <- fetchWord8
@ -94,6 +99,20 @@ instance Throws DecodingException Get where
instance ByteSource Get where
sourceEmpty = isEmpty
fetchWord8 = getWord8
#if MIN_VERSION_binary(0,6,0)
fetchAhead act = (do
res <- act
case res of
Nothing -> A.empty
Just a -> return res
) <|> return Nothing
#else
fetchAhead act = do
res <- lookAhead act
case res of
Nothing -> return Nothing
Just a -> act
#endif
fetchWord16be = getWord16be
fetchWord16le = getWord16le
fetchWord32be = getWord32be
@ -101,54 +120,55 @@ instance ByteSource Get where
fetchWord64be = getWord64be
fetchWord64le = getWord64le
instance Throws DecodingException (State [Char]) where
throwException = throw
fetchAheadState act = do
chs <- get
res <- act
when (isNothing res) (put chs)
return res
instance ByteSource (State [Char]) where
instance ByteSource (StateT [Char] Identity) where
sourceEmpty = gets null
fetchWord8 = do
chs <- get
case chs of
[] -> throw UnexpectedEnd
[] -> throwException UnexpectedEnd
c:cs -> do
put cs
return (fromIntegral $ ord c)
fetchAhead = fetchAheadState
#if MIN_VERSION_base(4,3,0)
#else
instance Monad (Either DecodingException) where
return = Right
(Left err) >>= g = Left err
(Right x) >>= g = g x
#endif
instance ByteSource (StateT [Char] (Either DecodingException)) where
sourceEmpty = gets null
fetchWord8 = do
chs <- get
case chs of
[] -> throwException UnexpectedEnd --handleDecodingError UnexpectedEnd
[] -> throwException UnexpectedEnd
c:cs -> do
put cs
return (fromIntegral $ ord c)
fetchAhead = fetchAheadState
instance Throws DecodingException (State BS.ByteString) where
throwException = throw
instance ByteSource (State BS.ByteString) where
sourceEmpty = gets BS.null
fetchWord8 = State (\str -> case BS.uncons str of
Nothing -> throw UnexpectedEnd
Just (c,cs) -> (c,cs))
instance ByteSource (StateT BS.ByteString (Either DecodingException)) where
instance (Monad m,Throws DecodingException m) => ByteSource (StateT BS.ByteString m) where
sourceEmpty = gets BS.null
fetchWord8 = StateT (\str -> case BS.uncons str of
Nothing -> Left UnexpectedEnd
Just ns -> Right ns)
Nothing -> throwException UnexpectedEnd
Just (c,cs) -> return (c,cs))
fetchAhead = fetchAheadState
instance ByteSource (StateT LBS.ByteString (Either DecodingException)) where
sourceEmpty = gets LBS.null
fetchWord8 = StateT (\str -> case LBS.uncons str of
Nothing -> Left UnexpectedEnd
Just ns -> Right ns)
fetchAhead = fetchAheadState
instance ByteSource (ReaderT Handle IO) where
sourceEmpty = do
@ -158,4 +178,10 @@ instance ByteSource (ReaderT Handle IO) where
h <- ask
liftIO $ do
ch <- hGetChar h
return (fromIntegral $ ord ch)
return (fromIntegral $ ord ch)
fetchAhead act = do
h <- ask
pos <- liftIO $ hGetPosn h
res <- act
when (isNothing res) (liftIO $ hSetPosn pos)
return res

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1250 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1250" "CP1250.TXT" )

View File

@ -1,21 +1,5 @@
#
# Name: cp1250 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1250 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1250 order
#
#Implements the Windows-1250 encoding.
#For details, refer to <http://en.wikipedia.org/wiki/Windows-1250>.
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1251 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1251" "CP1251.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1251 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1251 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1251 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1252 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1252" "CP1252.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1252 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1252 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1252 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1253 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1253" "CP1253.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1253 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1253 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1253 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1254 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1254" "CP1254.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1254 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1254 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1254 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1255 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1255" "CP1255.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1255 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 1/7/2000
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1255 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1255 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1256 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1256" "CP1256.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1256 to Unicode table
# Unicode version: 2.1
# Table version: 2.01
# Table format: Format A
# Date: 01/5/99
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1256 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1256 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1257 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1257" "CP1257.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1257 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1257 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1257 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.CP1258 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "CP1258" "CP1258.TXT" )

View File

@ -1,21 +1,3 @@
#
# Name: cp1258 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1258 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1258 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT

256
Data/Encoding/CP437.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP737.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0391 #GREEK CAPITAL LETTER ALPHA
0x81 0x0392 #GREEK CAPITAL LETTER BETA
0x82 0x0393 #GREEK CAPITAL LETTER GAMMA
0x83 0x0394 #GREEK CAPITAL LETTER DELTA
0x84 0x0395 #GREEK CAPITAL LETTER EPSILON
0x85 0x0396 #GREEK CAPITAL LETTER ZETA
0x86 0x0397 #GREEK CAPITAL LETTER ETA
0x87 0x0398 #GREEK CAPITAL LETTER THETA
0x88 0x0399 #GREEK CAPITAL LETTER IOTA
0x89 0x039a #GREEK CAPITAL LETTER KAPPA
0x8a 0x039b #GREEK CAPITAL LETTER LAMDA
0x8b 0x039c #GREEK CAPITAL LETTER MU
0x8c 0x039d #GREEK CAPITAL LETTER NU
0x8d 0x039e #GREEK CAPITAL LETTER XI
0x8e 0x039f #GREEK CAPITAL LETTER OMICRON
0x8f 0x03a0 #GREEK CAPITAL LETTER PI
0x90 0x03a1 #GREEK CAPITAL LETTER RHO
0x91 0x03a3 #GREEK CAPITAL LETTER SIGMA
0x92 0x03a4 #GREEK CAPITAL LETTER TAU
0x93 0x03a5 #GREEK CAPITAL LETTER UPSILON
0x94 0x03a6 #GREEK CAPITAL LETTER PHI
0x95 0x03a7 #GREEK CAPITAL LETTER CHI
0x96 0x03a8 #GREEK CAPITAL LETTER PSI
0x97 0x03a9 #GREEK CAPITAL LETTER OMEGA
0x98 0x03b1 #GREEK SMALL LETTER ALPHA
0x99 0x03b2 #GREEK SMALL LETTER BETA
0x9a 0x03b3 #GREEK SMALL LETTER GAMMA
0x9b 0x03b4 #GREEK SMALL LETTER DELTA
0x9c 0x03b5 #GREEK SMALL LETTER EPSILON
0x9d 0x03b6 #GREEK SMALL LETTER ZETA
0x9e 0x03b7 #GREEK SMALL LETTER ETA
0x9f 0x03b8 #GREEK SMALL LETTER THETA
0xa0 0x03b9 #GREEK SMALL LETTER IOTA
0xa1 0x03ba #GREEK SMALL LETTER KAPPA
0xa2 0x03bb #GREEK SMALL LETTER LAMDA
0xa3 0x03bc #GREEK SMALL LETTER MU
0xa4 0x03bd #GREEK SMALL LETTER NU
0xa5 0x03be #GREEK SMALL LETTER XI
0xa6 0x03bf #GREEK SMALL LETTER OMICRON
0xa7 0x03c0 #GREEK SMALL LETTER PI
0xa8 0x03c1 #GREEK SMALL LETTER RHO
0xa9 0x03c3 #GREEK SMALL LETTER SIGMA
0xaa 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
0xab 0x03c4 #GREEK SMALL LETTER TAU
0xac 0x03c5 #GREEK SMALL LETTER UPSILON
0xad 0x03c6 #GREEK SMALL LETTER PHI
0xae 0x03c7 #GREEK SMALL LETTER CHI
0xaf 0x03c8 #GREEK SMALL LETTER PSI
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03c9 #GREEK SMALL LETTER OMEGA
0xe1 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
0xe2 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
0xe3 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
0xe4 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xe5 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
0xe6 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
0xe7 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
0xe8 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xe9 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
0xea 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
0xeb 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
0xec 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
0xed 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
0xee 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
0xef 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
0xf0 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0xf5 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP775.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x0101 #LATIN SMALL LETTER A WITH MACRON
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
0x89 0x0113 #LATIN SMALL LETTER E WITH MACRON
0x8a 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
0x8b 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
0x8c 0x012b #LATIN SMALL LETTER I WITH MACRON
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x014d #LATIN SMALL LETTER O WITH MACRON
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
0x96 0x00a2 #CENT SIGN
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x00a4 #CURRENCY SIGN
0xa0 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
0xa1 0x012a #LATIN CAPITAL LETTER I WITH MACRON
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xa4 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
0xa5 0x017a #LATIN SMALL LETTER Z WITH ACUTE
0xa6 0x201d #RIGHT DOUBLE QUOTATION MARK
0xa7 0x00a6 #BROKEN BAR
0xa8 0x00a9 #COPYRIGHT SIGN
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xb6 0x010c #LATIN CAPITAL LETTER C WITH CARON
0xb7 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xb8 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x012e #LATIN CAPITAL LETTER I WITH OGONEK
0xbe 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
0xc7 0x016a #LATIN CAPITAL LETTER U WITH MACRON
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x017d #LATIN CAPITAL LETTER Z WITH CARON
0xd0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xd1 0x010d #LATIN SMALL LETTER C WITH CARON
0xd2 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xd3 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
0xd4 0x012f #LATIN SMALL LETTER I WITH OGONEK
0xd5 0x0161 #LATIN SMALL LETTER S WITH CARON
0xd6 0x0173 #LATIN SMALL LETTER U WITH OGONEK
0xd7 0x016b #LATIN SMALL LETTER U WITH MACRON
0xd8 0x017e #LATIN SMALL LETTER Z WITH CARON
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
0xe2 0x014c #LATIN CAPITAL LETTER O WITH MACRON
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xe8 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
0xe9 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
0xea 0x013b #LATIN CAPITAL LETTER L WITH CEDILLA
0xeb 0x013c #LATIN SMALL LETTER L WITH CEDILLA
0xec 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
0xed 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
0xee 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
0xef 0x2019 #RIGHT SINGLE QUOTATION MARK
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x201c #LEFT DOUBLE QUOTATION MARK
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x201e #DOUBLE LOW-9 QUOTATION MARK
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP850.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0xb8 0x00a9 #COPYRIGHT SIGN
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x00a2 #CENT SIGN
0xbe 0x00a5 #YEN SIGN
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x00f0 #LATIN SMALL LETTER ETH
0xd1 0x00d0 #LATIN CAPITAL LETTER ETH
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0xd5 0x0131 #LATIN SMALL LETTER DOTLESS I
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x00a6 #BROKEN BAR
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 0x00fe #LATIN SMALL LETTER THORN
0xe8 0x00de #LATIN CAPITAL LETTER THORN
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0xee 0x00af #MACRON
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2017 #DOUBLE LOW LINE
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP852.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x016f #LATIN SMALL LETTER U WITH RING ABOVE
0x86 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0x8b 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
0x92 0x013a #LATIN SMALL LETTER L WITH ACUTE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x013d #LATIN CAPITAL LETTER L WITH CARON
0x96 0x013e #LATIN SMALL LETTER L WITH CARON
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x0164 #LATIN CAPITAL LETTER T WITH CARON
0x9c 0x0165 #LATIN SMALL LETTER T WITH CARON
0x9d 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x010d #LATIN SMALL LETTER C WITH CARON
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xa5 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xa6 0x017d #LATIN CAPITAL LETTER Z WITH CARON
0xa7 0x017e #LATIN SMALL LETTER Z WITH CARON
0xa8 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xa9 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xaa 0x00ac #NOT SIGN
0xab 0x017a #LATIN SMALL LETTER Z WITH ACUTE
0xac 0x010c #LATIN CAPITAL LETTER C WITH CARON
0xad 0x015f #LATIN SMALL LETTER S WITH CEDILLA
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x011a #LATIN CAPITAL LETTER E WITH CARON
0xb8 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xbe 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
0xc7 0x0103 #LATIN SMALL LETTER A WITH BREVE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x0111 #LATIN SMALL LETTER D WITH STROKE
0xd1 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
0xd2 0x010e #LATIN CAPITAL LETTER D WITH CARON
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x010f #LATIN SMALL LETTER D WITH CARON
0xd5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x011b #LATIN SMALL LETTER E WITH CARON
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
0xde 0x016e #LATIN CAPITAL LETTER U WITH RING ABOVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xe4 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xe5 0x0148 #LATIN SMALL LETTER N WITH CARON
0xe6 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0xe7 0x0161 #LATIN SMALL LETTER S WITH CARON
0xe8 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x0155 #LATIN SMALL LETTER R WITH ACUTE
0xeb 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0xee 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x02dd #DOUBLE ACUTE ACCENT
0xf2 0x02db #OGONEK
0xf3 0x02c7 #CARON
0xf4 0x02d8 #BREVE
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x02d9 #DOT ABOVE
0xfb 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xfc 0x0158 #LATIN CAPITAL LETTER R WITH CARON
0xfd 0x0159 #LATIN SMALL LETTER R WITH CARON
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP855.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0452 #CYRILLIC SMALL LETTER DJE
0x81 0x0402 #CYRILLIC CAPITAL LETTER DJE
0x82 0x0453 #CYRILLIC SMALL LETTER GJE
0x83 0x0403 #CYRILLIC CAPITAL LETTER GJE
0x84 0x0451 #CYRILLIC SMALL LETTER IO
0x85 0x0401 #CYRILLIC CAPITAL LETTER IO
0x86 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0x87 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0x88 0x0455 #CYRILLIC SMALL LETTER DZE
0x89 0x0405 #CYRILLIC CAPITAL LETTER DZE
0x8a 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0x8b 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0x8c 0x0457 #CYRILLIC SMALL LETTER YI
0x8d 0x0407 #CYRILLIC CAPITAL LETTER YI
0x8e 0x0458 #CYRILLIC SMALL LETTER JE
0x8f 0x0408 #CYRILLIC CAPITAL LETTER JE
0x90 0x0459 #CYRILLIC SMALL LETTER LJE
0x91 0x0409 #CYRILLIC CAPITAL LETTER LJE
0x92 0x045a #CYRILLIC SMALL LETTER NJE
0x93 0x040a #CYRILLIC CAPITAL LETTER NJE
0x94 0x045b #CYRILLIC SMALL LETTER TSHE
0x95 0x040b #CYRILLIC CAPITAL LETTER TSHE
0x96 0x045c #CYRILLIC SMALL LETTER KJE
0x97 0x040c #CYRILLIC CAPITAL LETTER KJE
0x98 0x045e #CYRILLIC SMALL LETTER SHORT U
0x99 0x040e #CYRILLIC CAPITAL LETTER SHORT U
0x9a 0x045f #CYRILLIC SMALL LETTER DZHE
0x9b 0x040f #CYRILLIC CAPITAL LETTER DZHE
0x9c 0x044e #CYRILLIC SMALL LETTER YU
0x9d 0x042e #CYRILLIC CAPITAL LETTER YU
0x9e 0x044a #CYRILLIC SMALL LETTER HARD SIGN
0x9f 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
0xa0 0x0430 #CYRILLIC SMALL LETTER A
0xa1 0x0410 #CYRILLIC CAPITAL LETTER A
0xa2 0x0431 #CYRILLIC SMALL LETTER BE
0xa3 0x0411 #CYRILLIC CAPITAL LETTER BE
0xa4 0x0446 #CYRILLIC SMALL LETTER TSE
0xa5 0x0426 #CYRILLIC CAPITAL LETTER TSE
0xa6 0x0434 #CYRILLIC SMALL LETTER DE
0xa7 0x0414 #CYRILLIC CAPITAL LETTER DE
0xa8 0x0435 #CYRILLIC SMALL LETTER IE
0xa9 0x0415 #CYRILLIC CAPITAL LETTER IE
0xaa 0x0444 #CYRILLIC SMALL LETTER EF
0xab 0x0424 #CYRILLIC CAPITAL LETTER EF
0xac 0x0433 #CYRILLIC SMALL LETTER GHE
0xad 0x0413 #CYRILLIC CAPITAL LETTER GHE
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x0445 #CYRILLIC SMALL LETTER HA
0xb6 0x0425 #CYRILLIC CAPITAL LETTER HA
0xb7 0x0438 #CYRILLIC SMALL LETTER I
0xb8 0x0418 #CYRILLIC CAPITAL LETTER I
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xbe 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x043a #CYRILLIC SMALL LETTER KA
0xc7 0x041a #CYRILLIC CAPITAL LETTER KA
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x043b #CYRILLIC SMALL LETTER EL
0xd1 0x041b #CYRILLIC CAPITAL LETTER EL
0xd2 0x043c #CYRILLIC SMALL LETTER EM
0xd3 0x041c #CYRILLIC CAPITAL LETTER EM
0xd4 0x043d #CYRILLIC SMALL LETTER EN
0xd5 0x041d #CYRILLIC CAPITAL LETTER EN
0xd6 0x043e #CYRILLIC SMALL LETTER O
0xd7 0x041e #CYRILLIC CAPITAL LETTER O
0xd8 0x043f #CYRILLIC SMALL LETTER PE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x041f #CYRILLIC CAPITAL LETTER PE
0xde 0x044f #CYRILLIC SMALL LETTER YA
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x042f #CYRILLIC CAPITAL LETTER YA
0xe1 0x0440 #CYRILLIC SMALL LETTER ER
0xe2 0x0420 #CYRILLIC CAPITAL LETTER ER
0xe3 0x0441 #CYRILLIC SMALL LETTER ES
0xe4 0x0421 #CYRILLIC CAPITAL LETTER ES
0xe5 0x0442 #CYRILLIC SMALL LETTER TE
0xe6 0x0422 #CYRILLIC CAPITAL LETTER TE
0xe7 0x0443 #CYRILLIC SMALL LETTER U
0xe8 0x0423 #CYRILLIC CAPITAL LETTER U
0xe9 0x0436 #CYRILLIC SMALL LETTER ZHE
0xea 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0xeb 0x0432 #CYRILLIC SMALL LETTER VE
0xec 0x0412 #CYRILLIC CAPITAL LETTER VE
0xed 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
0xee 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
0xef 0x2116 #NUMERO SIGN
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x044b #CYRILLIC SMALL LETTER YERU
0xf2 0x042b #CYRILLIC CAPITAL LETTER YERU
0xf3 0x0437 #CYRILLIC SMALL LETTER ZE
0xf4 0x0417 #CYRILLIC CAPITAL LETTER ZE
0xf5 0x0448 #CYRILLIC SMALL LETTER SHA
0xf6 0x0428 #CYRILLIC CAPITAL LETTER SHA
0xf7 0x044d #CYRILLIC SMALL LETTER E
0xf8 0x042d #CYRILLIC CAPITAL LETTER E
0xf9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xfa 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0xfb 0x0447 #CYRILLIC SMALL LETTER CHE
0xfc 0x0427 #CYRILLIC CAPITAL LETTER CHE
0xfd 0x00a7 #SECTION SIGN
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP857.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x0131 #LATIN SMALL LETTER DOTLESS I
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
0x9f 0x015f #LATIN SMALL LETTER S WITH CEDILLA
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x011e #LATIN CAPITAL LETTER G WITH BREVE
0xa7 0x011f #LATIN SMALL LETTER G WITH BREVE
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0xb8 0x00a9 #COPYRIGHT SIGN
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x00a2 #CENT SIGN
0xbe 0x00a5 #YEN SIGN
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x00ba #MASCULINE ORDINAL INDICATOR
0xd1 0x00aa #FEMININE ORDINAL INDICATOR
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0xd5 #UNDEFINED
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x00a6 #BROKEN BAR
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 #UNDEFINED
0xe8 0x00d7 #MULTIPLICATION SIGN
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0xec 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0xed 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0xee 0x00af #MACRON
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 #UNDEFINED
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP860.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0x8c 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0x8f 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0x92 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0x99 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0x9e 0x20a7 #PESETA SIGN
0x9f 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP861.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00d0 #LATIN CAPITAL LETTER ETH
0x8c 0x00f0 #LATIN SMALL LETTER ETH
0x8d 0x00de #LATIN CAPITAL LETTER THORN
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00fe #LATIN SMALL LETTER THORN
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0x98 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xa5 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xa6 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xa7 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP862.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x05d0 #HEBREW LETTER ALEF
0x81 0x05d1 #HEBREW LETTER BET
0x82 0x05d2 #HEBREW LETTER GIMEL
0x83 0x05d3 #HEBREW LETTER DALET
0x84 0x05d4 #HEBREW LETTER HE
0x85 0x05d5 #HEBREW LETTER VAV
0x86 0x05d6 #HEBREW LETTER ZAYIN
0x87 0x05d7 #HEBREW LETTER HET
0x88 0x05d8 #HEBREW LETTER TET
0x89 0x05d9 #HEBREW LETTER YOD
0x8a 0x05da #HEBREW LETTER FINAL KAF
0x8b 0x05db #HEBREW LETTER KAF
0x8c 0x05dc #HEBREW LETTER LAMED
0x8d 0x05dd #HEBREW LETTER FINAL MEM
0x8e 0x05de #HEBREW LETTER MEM
0x8f 0x05df #HEBREW LETTER FINAL NUN
0x90 0x05e0 #HEBREW LETTER NUN
0x91 0x05e1 #HEBREW LETTER SAMEKH
0x92 0x05e2 #HEBREW LETTER AYIN
0x93 0x05e3 #HEBREW LETTER FINAL PE
0x94 0x05e4 #HEBREW LETTER PE
0x95 0x05e5 #HEBREW LETTER FINAL TSADI
0x96 0x05e6 #HEBREW LETTER TSADI
0x97 0x05e7 #HEBREW LETTER QOF
0x98 0x05e8 #HEBREW LETTER RESH
0x99 0x05e9 #HEBREW LETTER SHIN
0x9a 0x05ea #HEBREW LETTER TAV
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP863.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00b6 #PILCROW SIGN
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x2017 #DOUBLE LOW LINE
0x8e 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0x8f 0x00a7 #SECTION SIGN
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0x92 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0x95 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00a4 #CURRENCY SIGN
0x99 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0x9e 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00a6 #BROKEN BAR
0xa1 0x00b4 #ACUTE ACCENT
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00a8 #DIAERESIS
0xa5 0x00b8 #CEDILLA
0xa6 0x00b3 #SUPERSCRIPT THREE
0xa7 0x00af #MACRON
0xa8 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00be #VULGAR FRACTION THREE QUARTERS
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP864.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x066a #ARABIC PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00b0 #DEGREE SIGN
0x81 0x00b7 #MIDDLE DOT
0x82 0x2219 #BULLET OPERATOR
0x83 0x221a #SQUARE ROOT
0x84 0x2592 #MEDIUM SHADE
0x85 0x2500 #FORMS LIGHT HORIZONTAL
0x86 0x2502 #FORMS LIGHT VERTICAL
0x87 0x253c #FORMS LIGHT VERTICAL AND HORIZONTAL
0x88 0x2524 #FORMS LIGHT VERTICAL AND LEFT
0x89 0x252c #FORMS LIGHT DOWN AND HORIZONTAL
0x8a 0x251c #FORMS LIGHT VERTICAL AND RIGHT
0x8b 0x2534 #FORMS LIGHT UP AND HORIZONTAL
0x8c 0x2510 #FORMS LIGHT DOWN AND LEFT
0x8d 0x250c #FORMS LIGHT DOWN AND RIGHT
0x8e 0x2514 #FORMS LIGHT UP AND RIGHT
0x8f 0x2518 #FORMS LIGHT UP AND LEFT
0x90 0x03b2 #GREEK SMALL BETA
0x91 0x221e #INFINITY
0x92 0x03c6 #GREEK SMALL PHI
0x93 0x00b1 #PLUS-OR-MINUS SIGN
0x94 0x00bd #FRACTION 1/2
0x95 0x00bc #FRACTION 1/4
0x96 0x2248 #ALMOST EQUAL TO
0x97 0x00ab #LEFT POINTING GUILLEMET
0x98 0x00bb #RIGHT POINTING GUILLEMET
0x99 0xfef7 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
0x9a 0xfef8 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
0x9b #UNDEFINED
0x9c #UNDEFINED
0x9d 0xfefb #ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
0x9e 0xfefc #ARABIC LIGATURE LAM WITH ALEF FINAL FORM
0x9f #UNDEFINED
0xa0 0x00a0 #NON-BREAKING SPACE
0xa1 0x00ad #SOFT HYPHEN
0xa2 0xfe82 #ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
0xa3 0x00a3 #POUND SIGN
0xa4 0x00a4 #CURRENCY SIGN
0xa5 0xfe84 #ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
0xa6 #UNDEFINED
0xa7 #UNDEFINED
0xa8 0xfe8e #ARABIC LETTER ALEF FINAL FORM
0xa9 0xfe8f #ARABIC LETTER BEH ISOLATED FORM
0xaa 0xfe95 #ARABIC LETTER TEH ISOLATED FORM
0xab 0xfe99 #ARABIC LETTER THEH ISOLATED FORM
0xac 0x060c #ARABIC COMMA
0xad 0xfe9d #ARABIC LETTER JEEM ISOLATED FORM
0xae 0xfea1 #ARABIC LETTER HAH ISOLATED FORM
0xaf 0xfea5 #ARABIC LETTER KHAH ISOLATED FORM
0xb0 0x0660 #ARABIC-INDIC DIGIT ZERO
0xb1 0x0661 #ARABIC-INDIC DIGIT ONE
0xb2 0x0662 #ARABIC-INDIC DIGIT TWO
0xb3 0x0663 #ARABIC-INDIC DIGIT THREE
0xb4 0x0664 #ARABIC-INDIC DIGIT FOUR
0xb5 0x0665 #ARABIC-INDIC DIGIT FIVE
0xb6 0x0666 #ARABIC-INDIC DIGIT SIX
0xb7 0x0667 #ARABIC-INDIC DIGIT SEVEN
0xb8 0x0668 #ARABIC-INDIC DIGIT EIGHT
0xb9 0x0669 #ARABIC-INDIC DIGIT NINE
0xba 0xfed1 #ARABIC LETTER FEH ISOLATED FORM
0xbb 0x061b #ARABIC SEMICOLON
0xbc 0xfeb1 #ARABIC LETTER SEEN ISOLATED FORM
0xbd 0xfeb5 #ARABIC LETTER SHEEN ISOLATED FORM
0xbe 0xfeb9 #ARABIC LETTER SAD ISOLATED FORM
0xbf 0x061f #ARABIC QUESTION MARK
0xc0 0x00a2 #CENT SIGN
0xc1 0xfe80 #ARABIC LETTER HAMZA ISOLATED FORM
0xc2 0xfe81 #ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
0xc3 0xfe83 #ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
0xc4 0xfe85 #ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
0xc5 0xfeca #ARABIC LETTER AIN FINAL FORM
0xc6 0xfe8b #ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
0xc7 0xfe8d #ARABIC LETTER ALEF ISOLATED FORM
0xc8 0xfe91 #ARABIC LETTER BEH INITIAL FORM
0xc9 0xfe93 #ARABIC LETTER TEH MARBUTA ISOLATED FORM
0xca 0xfe97 #ARABIC LETTER TEH INITIAL FORM
0xcb 0xfe9b #ARABIC LETTER THEH INITIAL FORM
0xcc 0xfe9f #ARABIC LETTER JEEM INITIAL FORM
0xcd 0xfea3 #ARABIC LETTER HAH INITIAL FORM
0xce 0xfea7 #ARABIC LETTER KHAH INITIAL FORM
0xcf 0xfea9 #ARABIC LETTER DAL ISOLATED FORM
0xd0 0xfeab #ARABIC LETTER THAL ISOLATED FORM
0xd1 0xfead #ARABIC LETTER REH ISOLATED FORM
0xd2 0xfeaf #ARABIC LETTER ZAIN ISOLATED FORM
0xd3 0xfeb3 #ARABIC LETTER SEEN INITIAL FORM
0xd4 0xfeb7 #ARABIC LETTER SHEEN INITIAL FORM
0xd5 0xfebb #ARABIC LETTER SAD INITIAL FORM
0xd6 0xfebf #ARABIC LETTER DAD INITIAL FORM
0xd7 0xfec1 #ARABIC LETTER TAH ISOLATED FORM
0xd8 0xfec5 #ARABIC LETTER ZAH ISOLATED FORM
0xd9 0xfecb #ARABIC LETTER AIN INITIAL FORM
0xda 0xfecf #ARABIC LETTER GHAIN INITIAL FORM
0xdb 0x00a6 #BROKEN VERTICAL BAR
0xdc 0x00ac #NOT SIGN
0xdd 0x00f7 #DIVISION SIGN
0xde 0x00d7 #MULTIPLICATION SIGN
0xdf 0xfec9 #ARABIC LETTER AIN ISOLATED FORM
0xe0 0x0640 #ARABIC TATWEEL
0xe1 0xfed3 #ARABIC LETTER FEH INITIAL FORM
0xe2 0xfed7 #ARABIC LETTER QAF INITIAL FORM
0xe3 0xfedb #ARABIC LETTER KAF INITIAL FORM
0xe4 0xfedf #ARABIC LETTER LAM INITIAL FORM
0xe5 0xfee3 #ARABIC LETTER MEEM INITIAL FORM
0xe6 0xfee7 #ARABIC LETTER NOON INITIAL FORM
0xe7 0xfeeb #ARABIC LETTER HEH INITIAL FORM
0xe8 0xfeed #ARABIC LETTER WAW ISOLATED FORM
0xe9 0xfeef #ARABIC LETTER ALEF MAKSURA ISOLATED FORM
0xea 0xfef3 #ARABIC LETTER YEH INITIAL FORM
0xeb 0xfebd #ARABIC LETTER DAD ISOLATED FORM
0xec 0xfecc #ARABIC LETTER AIN MEDIAL FORM
0xed 0xfece #ARABIC LETTER GHAIN FINAL FORM
0xee 0xfecd #ARABIC LETTER GHAIN ISOLATED FORM
0xef 0xfee1 #ARABIC LETTER MEEM ISOLATED FORM
0xf0 0xfe7d #ARABIC SHADDA MEDIAL FORM
0xf1 0x0651 #ARABIC SHADDAH
0xf2 0xfee5 #ARABIC LETTER NOON ISOLATED FORM
0xf3 0xfee9 #ARABIC LETTER HEH ISOLATED FORM
0xf4 0xfeec #ARABIC LETTER HEH MEDIAL FORM
0xf5 0xfef0 #ARABIC LETTER ALEF MAKSURA FINAL FORM
0xf6 0xfef2 #ARABIC LETTER YEH FINAL FORM
0xf7 0xfed0 #ARABIC LETTER GHAIN MEDIAL FORM
0xf8 0xfed5 #ARABIC LETTER QAF ISOLATED FORM
0xf9 0xfef5 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
0xfa 0xfef6 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
0xfb 0xfedd #ARABIC LETTER LAM ISOLATED FORM
0xfc 0xfed9 #ARABIC LETTER KAF ISOLATED FORM
0xfd 0xfef1 #ARABIC LETTER YEH ISOLATED FORM
0xfe 0x25a0 #BLACK SQUARE
0xff #UNDEFINED

256
Data/Encoding/CP865.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00a4 #CURRENCY SIGN
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP866.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0410 #CYRILLIC CAPITAL LETTER A
0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
0x88 0x0418 #CYRILLIC CAPITAL LETTER I
0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
0x8e 0x041e #CYRILLIC CAPITAL LETTER O
0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
0x93 0x0423 #CYRILLIC CAPITAL LETTER U
0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
0x9d 0x042d #CYRILLIC CAPITAL LETTER E
0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
0xa0 0x0430 #CYRILLIC SMALL LETTER A
0xa1 0x0431 #CYRILLIC SMALL LETTER BE
0xa2 0x0432 #CYRILLIC SMALL LETTER VE
0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
0xa4 0x0434 #CYRILLIC SMALL LETTER DE
0xa5 0x0435 #CYRILLIC SMALL LETTER IE
0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
0xa8 0x0438 #CYRILLIC SMALL LETTER I
0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xaa 0x043a #CYRILLIC SMALL LETTER KA
0xab 0x043b #CYRILLIC SMALL LETTER EL
0xac 0x043c #CYRILLIC SMALL LETTER EM
0xad 0x043d #CYRILLIC SMALL LETTER EN
0xae 0x043e #CYRILLIC SMALL LETTER O
0xaf 0x043f #CYRILLIC SMALL LETTER PE
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x0440 #CYRILLIC SMALL LETTER ER
0xe1 0x0441 #CYRILLIC SMALL LETTER ES
0xe2 0x0442 #CYRILLIC SMALL LETTER TE
0xe3 0x0443 #CYRILLIC SMALL LETTER U
0xe4 0x0444 #CYRILLIC SMALL LETTER EF
0xe5 0x0445 #CYRILLIC SMALL LETTER HA
0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
0xeb 0x044b #CYRILLIC SMALL LETTER YERU
0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
0xed 0x044d #CYRILLIC SMALL LETTER E
0xee 0x044e #CYRILLIC SMALL LETTER YU
0xef 0x044f #CYRILLIC SMALL LETTER YA
0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
0xf1 0x0451 #CYRILLIC SMALL LETTER IO
0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI
0xf5 0x0457 #CYRILLIC SMALL LETTER YI
0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U
0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x2116 #NUMERO SIGN
0xfd 0x00a4 #CURRENCY SIGN
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP869.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 #UNDEFINED
0x81 #UNDEFINED
0x82 #UNDEFINED
0x83 #UNDEFINED
0x84 #UNDEFINED
0x85 #UNDEFINED
0x86 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
0x87 #UNDEFINED
0x88 0x00b7 #MIDDLE DOT
0x89 0x00ac #NOT SIGN
0x8a 0x00a6 #BROKEN BAR
0x8b 0x2018 #LEFT SINGLE QUOTATION MARK
0x8c 0x2019 #RIGHT SINGLE QUOTATION MARK
0x8d 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
0x8e 0x2015 #HORIZONTAL BAR
0x8f 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
0x90 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
0x91 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0x92 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
0x93 #UNDEFINED
0x94 #UNDEFINED
0x95 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
0x96 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0x97 0x00a9 #COPYRIGHT SIGN
0x98 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
0x99 0x00b2 #SUPERSCRIPT TWO
0x9a 0x00b3 #SUPERSCRIPT THREE
0x9b 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
0x9c 0x00a3 #POUND SIGN
0x9d 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
0x9e 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
0x9f 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
0xa0 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xa1 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0xa2 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
0xa3 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
0xa4 0x0391 #GREEK CAPITAL LETTER ALPHA
0xa5 0x0392 #GREEK CAPITAL LETTER BETA
0xa6 0x0393 #GREEK CAPITAL LETTER GAMMA
0xa7 0x0394 #GREEK CAPITAL LETTER DELTA
0xa8 0x0395 #GREEK CAPITAL LETTER EPSILON
0xa9 0x0396 #GREEK CAPITAL LETTER ZETA
0xaa 0x0397 #GREEK CAPITAL LETTER ETA
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x0398 #GREEK CAPITAL LETTER THETA
0xad 0x0399 #GREEK CAPITAL LETTER IOTA
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x039a #GREEK CAPITAL LETTER KAPPA
0xb6 0x039b #GREEK CAPITAL LETTER LAMDA
0xb7 0x039c #GREEK CAPITAL LETTER MU
0xb8 0x039d #GREEK CAPITAL LETTER NU
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x039e #GREEK CAPITAL LETTER XI
0xbe 0x039f #GREEK CAPITAL LETTER OMICRON
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x03a0 #GREEK CAPITAL LETTER PI
0xc7 0x03a1 #GREEK CAPITAL LETTER RHO
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xd0 0x03a4 #GREEK CAPITAL LETTER TAU
0xd1 0x03a5 #GREEK CAPITAL LETTER UPSILON
0xd2 0x03a6 #GREEK CAPITAL LETTER PHI
0xd3 0x03a7 #GREEK CAPITAL LETTER CHI
0xd4 0x03a8 #GREEK CAPITAL LETTER PSI
0xd5 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xd6 0x03b1 #GREEK SMALL LETTER ALPHA
0xd7 0x03b2 #GREEK SMALL LETTER BETA
0xd8 0x03b3 #GREEK SMALL LETTER GAMMA
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x03b4 #GREEK SMALL LETTER DELTA
0xde 0x03b5 #GREEK SMALL LETTER EPSILON
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b6 #GREEK SMALL LETTER ZETA
0xe1 0x03b7 #GREEK SMALL LETTER ETA
0xe2 0x03b8 #GREEK SMALL LETTER THETA
0xe3 0x03b9 #GREEK SMALL LETTER IOTA
0xe4 0x03ba #GREEK SMALL LETTER KAPPA
0xe5 0x03bb #GREEK SMALL LETTER LAMDA
0xe6 0x03bc #GREEK SMALL LETTER MU
0xe7 0x03bd #GREEK SMALL LETTER NU
0xe8 0x03be #GREEK SMALL LETTER XI
0xe9 0x03bf #GREEK SMALL LETTER OMICRON
0xea 0x03c0 #GREEK SMALL LETTER PI
0xeb 0x03c1 #GREEK SMALL LETTER RHO
0xec 0x03c3 #GREEK SMALL LETTER SIGMA
0xed 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
0xee 0x03c4 #GREEK SMALL LETTER TAU
0xef 0x0384 #GREEK TONOS
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x03c5 #GREEK SMALL LETTER UPSILON
0xf3 0x03c6 #GREEK SMALL LETTER PHI
0xf4 0x03c7 #GREEK SMALL LETTER CHI
0xf5 0x00a7 #SECTION SIGN
0xf6 0x03c8 #GREEK SMALL LETTER PSI
0xf7 0x0385 #GREEK DIALYTIKA TONOS
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x03c9 #GREEK SMALL LETTER OMEGA
0xfb 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xfc 0x03b0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0xfd 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

256
Data/Encoding/CP874.mapping Normal file
View File

@ -0,0 +1,256 @@
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 #UNDEFINED
0x83 #UNDEFINED
0x84 #UNDEFINED
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 #UNDEFINED
0x87 #UNDEFINED
0x88 #UNDEFINED
0x89 #UNDEFINED
0x8A #UNDEFINED
0x8B #UNDEFINED
0x8C #UNDEFINED
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 #UNDEFINED
0x9A #UNDEFINED
0x9B #UNDEFINED
0x9C #UNDEFINED
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F #UNDEFINED
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x0E01 #THAI CHARACTER KO KAI
0xA2 0x0E02 #THAI CHARACTER KHO KHAI
0xA3 0x0E03 #THAI CHARACTER KHO KHUAT
0xA4 0x0E04 #THAI CHARACTER KHO KHWAI
0xA5 0x0E05 #THAI CHARACTER KHO KHON
0xA6 0x0E06 #THAI CHARACTER KHO RAKHANG
0xA7 0x0E07 #THAI CHARACTER NGO NGU
0xA8 0x0E08 #THAI CHARACTER CHO CHAN
0xA9 0x0E09 #THAI CHARACTER CHO CHING
0xAA 0x0E0A #THAI CHARACTER CHO CHANG
0xAB 0x0E0B #THAI CHARACTER SO SO
0xAC 0x0E0C #THAI CHARACTER CHO CHOE
0xAD 0x0E0D #THAI CHARACTER YO YING
0xAE 0x0E0E #THAI CHARACTER DO CHADA
0xAF 0x0E0F #THAI CHARACTER TO PATAK
0xB0 0x0E10 #THAI CHARACTER THO THAN
0xB1 0x0E11 #THAI CHARACTER THO NANGMONTHO
0xB2 0x0E12 #THAI CHARACTER THO PHUTHAO
0xB3 0x0E13 #THAI CHARACTER NO NEN
0xB4 0x0E14 #THAI CHARACTER DO DEK
0xB5 0x0E15 #THAI CHARACTER TO TAO
0xB6 0x0E16 #THAI CHARACTER THO THUNG
0xB7 0x0E17 #THAI CHARACTER THO THAHAN
0xB8 0x0E18 #THAI CHARACTER THO THONG
0xB9 0x0E19 #THAI CHARACTER NO NU
0xBA 0x0E1A #THAI CHARACTER BO BAIMAI
0xBB 0x0E1B #THAI CHARACTER PO PLA
0xBC 0x0E1C #THAI CHARACTER PHO PHUNG
0xBD 0x0E1D #THAI CHARACTER FO FA
0xBE 0x0E1E #THAI CHARACTER PHO PHAN
0xBF 0x0E1F #THAI CHARACTER FO FAN
0xC0 0x0E20 #THAI CHARACTER PHO SAMPHAO
0xC1 0x0E21 #THAI CHARACTER MO MA
0xC2 0x0E22 #THAI CHARACTER YO YAK
0xC3 0x0E23 #THAI CHARACTER RO RUA
0xC4 0x0E24 #THAI CHARACTER RU
0xC5 0x0E25 #THAI CHARACTER LO LING
0xC6 0x0E26 #THAI CHARACTER LU
0xC7 0x0E27 #THAI CHARACTER WO WAEN
0xC8 0x0E28 #THAI CHARACTER SO SALA
0xC9 0x0E29 #THAI CHARACTER SO RUSI
0xCA 0x0E2A #THAI CHARACTER SO SUA
0xCB 0x0E2B #THAI CHARACTER HO HIP
0xCC 0x0E2C #THAI CHARACTER LO CHULA
0xCD 0x0E2D #THAI CHARACTER O ANG
0xCE 0x0E2E #THAI CHARACTER HO NOKHUK
0xCF 0x0E2F #THAI CHARACTER PAIYANNOI
0xD0 0x0E30 #THAI CHARACTER SARA A
0xD1 0x0E31 #THAI CHARACTER MAI HAN-AKAT
0xD2 0x0E32 #THAI CHARACTER SARA AA
0xD3 0x0E33 #THAI CHARACTER SARA AM
0xD4 0x0E34 #THAI CHARACTER SARA I
0xD5 0x0E35 #THAI CHARACTER SARA II
0xD6 0x0E36 #THAI CHARACTER SARA UE
0xD7 0x0E37 #THAI CHARACTER SARA UEE
0xD8 0x0E38 #THAI CHARACTER SARA U
0xD9 0x0E39 #THAI CHARACTER SARA UU
0xDA 0x0E3A #THAI CHARACTER PHINTHU
0xDB #UNDEFINED
0xDC #UNDEFINED
0xDD #UNDEFINED
0xDE #UNDEFINED
0xDF 0x0E3F #THAI CURRENCY SYMBOL BAHT
0xE0 0x0E40 #THAI CHARACTER SARA E
0xE1 0x0E41 #THAI CHARACTER SARA AE
0xE2 0x0E42 #THAI CHARACTER SARA O
0xE3 0x0E43 #THAI CHARACTER SARA AI MAIMUAN
0xE4 0x0E44 #THAI CHARACTER SARA AI MAIMALAI
0xE5 0x0E45 #THAI CHARACTER LAKKHANGYAO
0xE6 0x0E46 #THAI CHARACTER MAIYAMOK
0xE7 0x0E47 #THAI CHARACTER MAITAIKHU
0xE8 0x0E48 #THAI CHARACTER MAI EK
0xE9 0x0E49 #THAI CHARACTER MAI THO
0xEA 0x0E4A #THAI CHARACTER MAI TRI
0xEB 0x0E4B #THAI CHARACTER MAI CHATTAWA
0xEC 0x0E4C #THAI CHARACTER THANTHAKHAT
0xED 0x0E4D #THAI CHARACTER NIKHAHIT
0xEE 0x0E4E #THAI CHARACTER YAMAKKAN
0xEF 0x0E4F #THAI CHARACTER FONGMAN
0xF0 0x0E50 #THAI DIGIT ZERO
0xF1 0x0E51 #THAI DIGIT ONE
0xF2 0x0E52 #THAI DIGIT TWO
0xF3 0x0E53 #THAI DIGIT THREE
0xF4 0x0E54 #THAI DIGIT FOUR
0xF5 0x0E55 #THAI DIGIT FIVE
0xF6 0x0E56 #THAI DIGIT SIX
0xF7 0x0E57 #THAI DIGIT SEVEN
0xF8 0x0E58 #THAI DIGIT EIGHT
0xF9 0x0E59 #THAI DIGIT NINE
0xFA 0x0E5A #THAI CHARACTER ANGKHANKHU
0xFB 0x0E5B #THAI CHARACTER KHOMUT
0xFC #UNDEFINED
0xFD #UNDEFINED
0xFE #UNDEFINED
0xFF #UNDEFINED

7941
Data/Encoding/CP932.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ import Control.Monad.Identity
data EncodingException
= HasNoRepresentation Char -- ^ Thrown if a specific character
-- is not representable in an encoding.
deriving (Eq,Show,Typeable)
deriving (Eq,Ord,Show,Read,Typeable)
instance Exception EncodingException
@ -25,6 +25,6 @@ data DecodingException
| OutOfRange -- ^ the decoded value was out of the unicode range
| IllegalRepresentation [Word8] -- ^ The character sequence encodes a
-- character, but is illegal.
deriving (Eq,Show,Typeable)
deriving (Eq,Ord,Show,Read,Typeable)
instance Exception DecodingException

View File

@ -1,236 +0,0 @@
{-# LANGUAGE CPP,DeriveDataTypeable #-}
{- | GB18030 is a chinese character encoding that is mandatory in china (if you
- don\'t implement it, you\'re not allowed to sell your software there).
-}
module Data.Encoding.GB18030
(GB18030(..))
where
import Control.Throws
import Data.Char (chr,ord)
import Data.Word
import Data.Bits
import Data.Encoding.Base
import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Data.Encoding.Exception
import Data.ByteString (ByteString)
import qualified Data.ByteString as BS
import Data.Typeable
#if __GLASGOW_HASKELL__>=608
import Data.ByteString.Unsafe (unsafeIndex)
#else
import Data.ByteString.Base (unsafeIndex)
#endif
import Data.Encoding.GB18030Data
data GB18030 = GB18030 deriving (Eq,Show,Typeable)
instance Encoding GB18030 where
decodeChar _ = do
w1 <- fetchWord8
case () of
_
| w1 <= 0x80 -> return (chr $ fromIntegral w1) -- it's ascii
| w1 <= 0xFE -> do
w2 <- fetchWord8
case () of
_
| w2 < 0x30 -> throwException (IllegalCharacter w2)
| w2 <= 0x39 -> do
w3 <- fetchWord8
case () of
_
| w3 < 0x81 -> throwException (IllegalCharacter w3)
| w3 <= 0xFE -> do
w4 <- fetchWord8
case () of
_
| w4 < 0x30 -> throwException (IllegalCharacter w4)
| w4 <= 0x39 -> decodeGBFour $ linear w1 w2 w3 w4
| otherwise -> throwException (IllegalCharacter w4)
| otherwise -> throwException (IllegalCharacter w3)
| w2 <= 0x7E -> return $ decodeGBTwo $ linear2 w1 w2
| w2 == 0x7F -> throwException (IllegalCharacter w2)
| w2 <= 0xFE -> return $ decodeGBTwo $ linear2 w1 w2
| otherwise -> throwException (IllegalCharacter w2)
| otherwise -> throwException (IllegalCharacter w1)
{- How this works: The nested if-structures form an binary tree over the
- encoding range.
-}
encodeChar _ ch = if ch<='\x4946' -- 1
then (if ch<='\x4055' -- 2
then (if ch<='\x2E80' -- 3
then (if ch<='\x200F' -- 4
then (if ch<'\x0452'
then arr 0x0000 arr1
else range range1)
else (if ch<'\x2643'
then arr 0x2010 arr2
else range range2))
else (if ch<='\x3917' -- 4
then (if ch<'\x361B'
then arr 0x2E81 arr3
else range range3)
else (if ch<'\x3CE1'
then arr 0x3918 arr4
else range range4)))
else (if ch<='\x464B' -- 3
then (if ch<='\x4336' -- 4
then (if ch<'\x4160'
then arr 0x4056 arr5
else range range5)
else (if ch<'\x44D7'
then arr 0x4337 arr6
else range range6))
else (if ch<'\x478E'
then arr 0x464C arr7
else range range7)))
else (if ch<='\xF92B' -- 2
then (if ch<='\xD7FF' -- 3
then (if ch<='\x4C76' -- 4
then (if ch<'\x49B8'
then arr 0x4947 arr8
else range range8)
else (if ch<'\x9FA6'
then arr 0x4C77 arr9
else range range9))
else (if ch<'\xE865'
then arr 0xD800 arr10
else range range10))
else (if ch<='\xFFFF' -- 3
then (if ch<='\xFE2F' -- 4
then (if ch<'\xFA2A'
then arr 0xF92C arr11
else range range11)
else (if ch<'\xFFE6'
then arr 0xFE30 arr12
else range range12))
else (if ch<='\x10FFFF' -- 4
then range range13
else throwException (HasNoRepresentation ch))))
where
range r = let (w1,w2,w3,w4) = delinear (ord ch + r)
in pushWord8 w1 >> pushWord8 w2 >> pushWord8 w3 >> pushWord8 w4
arr off a = let ind = (ord ch - off)*5
w1 = unsafeIndex a (ind+1)
w2 = unsafeIndex a (ind+2)
w3 = unsafeIndex a (ind+3)
w4 = unsafeIndex a (ind+4)
in do
pushWord8 w1
case unsafeIndex a ind of
1 -> return ()
2 -> pushWord8 w2
3 -> pushWord8 w2 >> pushWord8 w3
4 -> pushWord8 w2 >> pushWord8 w3 >> pushWord8 w4
linear :: Word8 -> Word8 -> Word8 -> Word8 -> Int
linear w1 w2 w3 w4
= (fromIntegral (w4-0x30))
+ (fromIntegral (w3-0x81))*10
+ (fromIntegral (w2-0x30))*1260
+ (fromIntegral (w1-0x81))*12600
linear2 :: Word8 -> Word8 -> Int
linear2 w1 w2 = (fromIntegral (w2 - (if w2<=0x7E
then 0x40
else 0x41)))
+ (fromIntegral (w1-0x81))*190
delinear :: Int -> (Word8,Word8,Word8,Word8)
delinear n = let
(w1,n1) = n `divMod` 12600
(w2,n2) = n1 `divMod` 1260
(w3,n3) = n2 `divMod` 10
w4 = n3
in (fromIntegral w1+0x81
,fromIntegral w2+0x30
,fromIntegral w3+0x81
,fromIntegral w4+0x30)
decodeGBTwo :: Int -> Char
decodeGBTwo n = let
rn = n*2
w1 = unsafeIndex rrarr rn
w2 = unsafeIndex rrarr (rn+1)
in chr $ ((fromIntegral w1) `shiftL` 8) .|. (fromIntegral w2)
decodeGBFour :: ByteSource m => Int -> m Char
decodeGBFour v = if v<=17858 -- 1
then (if v<=15582 -- 2
then (if v<=11328 -- 3
then (if v<=7921 -- 4
then (if v<820
then arr 0 rarr1
else range range1)
else (if v<9219
then arr 7922 rarr2
else range range2))
else (if v<=13737 -- 4
then (if v<12973
then arr 11329 rarr3
else range range3)
else (if v<14698
then arr 13738 rarr4
else range range4)))
else (if v<=17101 -- 3
then (if v<=16317 -- 4
then (if v<15847
then arr 15583 rarr5
else range range5)
else (if v<16729
then arr 16318 rarr6
else range range6))
else (if v<17418
then arr 17102 rarr7
else range range7)))
else (if v<=37844 -- 2
then (if v<=33468 -- 3
then (if v<=18663 -- 4
then (if v<17961
then arr 17859 rarr8
else range range8)
else (if v<19043
then arr 18664 rarr9
else range range9))
else (if v<33550
then arr 33469 rarr10
else range range10))
else (if v<=39419 -- 3
then (if v<=39107 -- 4
then (if v<38078
then arr 37845 rarr11
else range range11)
else (if v<39394
then arr 39108 rarr12
else range range12))
else (if v<=1237575 && v>=189000
then range range13
else throwException OutOfRange)))
where
arr off a = let
v' = (v-off)*2
w1 = unsafeIndex a v'
w2 = unsafeIndex a (v'+1)
in return $ chr $ ((fromIntegral w1) `shiftL` 8)
.|. (fromIntegral w2)
range r = return $ chr (v-r)
range1,range2,range3,range4,range5,range6,range7,range8,range9,range10,range11,range12,range13 :: Int
range1 = -286
range2 = -576
range3 = -878
range4 = -887
range5 = -889
range6 = -894
range7 = -900
range8 = -911
range9 = -21827
range10 = -25943
range11 = -25964
range12 = -26116
range13 = 123464

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE characterMapping SYSTEM "http://www.unicode.org/unicode/reports/tr22/CharacterMapping.dtd">
<characterMapping id="gb-18030-2000" version="3">
<characterMapping
id="gb-18030-2000" version="3"
description="GB18030 is a chinese character encoding that is mandatory in china (if you - don't implement it, you're not allowed to sell your software there).">
<history>
<modified version="3" date="2001-02-21">
0x80 appears to be a valid (and unassigned) single-byte code, added to the validity.

File diff suppressed because one or more lines are too long

View File

@ -1,116 +0,0 @@
{- This module is used to create a haskell file with static address-arrays in it -}
module Data.Encoding.Helper.Data where
import Data.Char (ord)
import Data.Word (Word8)
import Data.Ord (comparing)
import Data.Bits (shiftR)
import Data.List (sortBy,genericLength)
import Data.Encoding.Helper.XML
linear :: Word8 -> Word8 -> Word8 -> Word8 -> Int
linear w1 w2 w3 w4
= (fromIntegral (w4-0x30))
+ (fromIntegral (w3-0x81))*10
+ (fromIntegral (w2-0x30))*1260
+ (fromIntegral (w1-0x81))*12600
linear2 :: Word8 -> Word8 -> Int
linear2 w1 w2 = (fromIntegral (w2 - (if w2<=0x7E
then 0x40
else 0x41)))
+ (fromIntegral (w1-0x81))*190
createStandardModule :: IO ()
createStandardModule = do
let fn = "gb-18030-2000.xml"
str <- readFile fn
writeFile "Data/Encoding/GB18030Data.hs" $ createModuleFromFile fn str standardRanges standardRRanges
standardRanges =
[('\x0000','\x0451')
,('\x2010','\x2642')
,('\x2E81','\x361A')
,('\x3918','\x3CE0')
,('\x4056','\x415F')
,('\x4337','\x44D6')
,('\x464C','\x478D')
,('\x4947','\x49B7')
,('\x4C77','\x9FA5')
,('\xD800','\xE864')
,('\xF92C','\xFA29')
,('\xFE30','\xFFE5')
]
standardRRanges =
[( 0, 819)
,( 7922, 9218)
,(11329,12972)
,(13738,14697)
,(15583,15846)
,(16318,16728)
,(17102,17417)
,(17859,17960)
,(18664,19042)
,(33469,33549)
,(37845,38077)
,(39108,39393)
,(39420,188999)]
createModuleFromFile :: String -> String -> [(Char,Char)] -> [(Int,Int)] -> String
createModuleFromFile name str = createModule (readDecodeTable name str)
createModule :: [(Char,[Word8])] -> [(Char,Char)] -> [(Int,Int)] -> String
createModule mp ranges rranges = unlines $
["{-# LANGUAGE CPP,MagicHash #-}"
,"module Data.Encoding.GB18030Data where"
,""
,"import Data.ByteString(ByteString)"
,"#if __GLASGOW_HASKELL__>=608"
,"import Data.ByteString.Unsafe(unsafePackAddressLen)"
,"#else"
,"import Data.ByteString.Base(unsafePackAddressLen)"
,"#endif"
,"import System.IO.Unsafe(unsafePerformIO)"]
++ (createAddrVars "arr" (map (uncurry $ createAddr mp) ranges))
++ (createAddrVars "rarr" (map (uncurry $ createRAddr4 mp) rranges))
++ (createAddrVar "rrarr" (createRAddr2 mp))
createAddrVars :: String -> [[Word8]] -> [String]
createAddrVars base conts = concatMap (\(n,cont) ->
createAddrVar (base++show n) cont) (zip [1..] conts)
createAddrVar :: String -> [Word8] -> [String]
createAddrVar name cont =
[""
,name++" :: ByteString"
,name++" = unsafePerformIO $ unsafePackAddressLen "++show (length cont)++" \""++addr cont++"\"#"
]
createAddr :: [(Char,[Word8])] -> Char -> Char -> [Word8]
createAddr mp f t = let
lst = sortBy (comparing fst) [el | el@(ch,_) <- mp, ch>=f, ch<=t]
in concatMap (\(ch,seq) -> let
l = length seq
in [fromIntegral l]++seq++(replicate (4-l) 0)) lst
createRAddr2 :: [(Char,[Word8])] -> [Word8]
createRAddr2 mp = let
lst = sortBy (comparing snd)
[ (ch,v) | (ch,[w1,w2]) <- mp,let v = linear2 w1 w2]
in concatMap (\(ch,_) -> let i = ord ch
in [fromIntegral (i `shiftR` 8)
,fromIntegral i]) lst
createRAddr4 :: [(Char,[Word8])] -> Int -> Int -> [Word8]
createRAddr4 mp f t = let
lst = sortBy (comparing snd)
[ (ch,v) | (ch,[w1,w2,w3,w4]) <- mp,
let v = linear w1 w2 w3 w4, v>=f, v<=t ]
in concatMap (\(ch,_) -> let i = ord ch
in [fromIntegral (i `shiftR` 8)
,fromIntegral i]) lst
addr :: [Word8] -> String
addr = concatMap (\w -> "\\"++show w)

View File

@ -1,75 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.Helper.Template where
import Data.Encoding.Base
import Data.Char
import Data.Maybe (mapMaybe)
import Data.Map as Map (fromList,lookup)
import Data.Array
import Language.Haskell.TH
makeISOInstance :: String -> FilePath -> Q [Dec]
makeISOInstance name file = do
let rname = mkName name
trans <- runIO (readTranslation file)
mp <- encodingMap (validTranslations trans)
arr <- decodingArray (fillTranslations trans)
return [ DataD [] rname [] [NormalC rname []] [''Show]
, InstanceD [] (AppT (ConT ''Encoding) (ConT rname))
[FunD 'encodeChar
[Clause [WildP] (NormalB $ AppE (VarE 'encodeWithMap) (VarE $ mkName "mp"))
[ValD (VarP $ mkName "mp") (NormalB mp) []]
]
,FunD 'decodeChar
[Clause [WildP] (NormalB $ AppE (VarE 'decodeWithArray) (VarE $ mkName "arr"))
[ValD (VarP $ mkName "arr") (NormalB arr) []]
]
]
]
createCharArray :: [(Integer,Maybe Char)] -> Integer -> Integer -> Q Exp
createCharArray lst = createArray (map (\(x,y) -> (x,case y of
Nothing -> ConE 'Nothing
Just c -> AppE (ConE 'Just) (LitE $ CharL c))
) lst)
createArray :: [(Integer,Exp)] -> Integer -> Integer -> Q Exp
createArray lst from to = return $ AppE
(AppE
(VarE 'array)
(TupE [LitE $ IntegerL from,LitE $ IntegerL to]))
(ListE [ TupE [LitE $ IntegerL x,y]
| (x,y) <- lst ])
decodingArray :: [(Integer,Maybe Char)] -> Q Exp
decodingArray trans = createCharArray trans 0 255
encodingMap :: [(Integer,Char)] -> Q Exp
encodingMap trans = return $ AppE
(VarE 'fromList)
(ListE [ TupE [LitE $ CharL to,LitE $ IntegerL from]
| (from,to) <- trans])
readTranslation :: FilePath -> IO [(Integer,Maybe Char)]
readTranslation file = do
cont <- readFile file
return $ mapMaybe (\ln -> case ln of
[] -> Nothing
('#':xs) -> Nothing
_ -> case words ln of
(src:"#UNDEFINED":_) -> Just (read src,Nothing) -- XXX: Find a better way to handle this
(src:trg:_) -> Just (read src,Just $ chr $ read trg)
_ -> Nothing
) (lines cont)
fillTranslations :: [(Integer,Maybe Char)] -> [(Integer,Maybe Char)]
fillTranslations = fillTranslations' (-1)
where
fillTranslations' n ((n',c):cs) = (map (\i -> (i,Nothing)) [n+1..n'-1])++((n',c):fillTranslations' n' cs)
fillTranslations' n [] = map (\i -> (i,Nothing)) [n+1..255]
validTranslations :: [(Integer,Maybe Char)] -> [(Integer,Char)]
validTranslations = mapMaybe (\(n,mc) -> case mc of
Nothing -> Nothing
Just c -> Just (n,c))

View File

@ -1,41 +0,0 @@
module Data.Encoding.Helper.XML where
import Data.Char
import Data.List (find)
import Data.Word
import Data.Maybe (mapMaybe)
import Text.XML.HaXml.Parse
import Text.XML.HaXml.Types
import Text.XML.HaXml.Verbatim
import Numeric
readDecodeTable :: String -> String -> [(Char,[Word8])]
readDecodeTable name str = let
Document _ _ (Elem root_name _ conts) _ = xmlParse name str
in concat $ mapMaybe findAssignments conts
findAssignments :: Content i -> Maybe [(Char,[Word8])]
findAssignments (CElem (Elem "assignments" _ conts) _)
= Just $ mapMaybe findAssignment conts
findAssignments _ = Nothing
findAssignment :: Content i -> Maybe (Char,[Word8])
findAssignment (CElem (Elem "a" attrs _) _) = do
u <- lookup "u" attrs
b <- lookup "b" attrs
return (chr $ readHexInt (showAttValue u),parseBinary b)
findAssignment _ = Nothing
parseBinary :: AttValue -> [Word8]
parseBinary val = map (fromIntegral.readHexInt) (words (showAttValue val))
showAttValue :: AttValue -> String
showAttValue (AttValue lst) = concat $ map (\el -> case el of
Left str -> str
Right ref -> verbatim ref) lst
readHexInt :: String -> Int
readHexInt str = case find (\x -> snd x == "") (readHex str) of
Nothing -> error "Not a hex"
Just (x,_) -> x

60
Data/Encoding/ISO2022.hs Normal file
View File

@ -0,0 +1,60 @@
module Data.Encoding.ISO2022 where
import Data.Encoding.Base
import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Data.Encoding.Exception
import Data.Encoding.ASCII
import Data.Word
import Control.Throws
class ISO2022 e where
readEscape :: ByteSource m => e -> m (Maybe DynEncoding)
encodingForChar :: e -> Char -> Maybe (DynEncoding,[Word8])
encodeCharISO2022 :: (ISO2022 e,ByteSink m) => e -> Char -> m ()
encodeCharISO2022 e c = case encodingForChar e c of
Nothing -> throwException (HasNoRepresentation c)
Just (enc,esc) -> do
mapM_ pushWord8 esc
encodeChar enc c
decodeCharISO2022 :: (ISO2022 e,ByteSource m) => e -> m Char
decodeCharISO2022 e = do
enc <- readEscape e
case enc of
Nothing -> decodeChar ASCII
Just renc -> decodeChar renc
encodeISO2022 :: (ISO2022 e,ByteSink m) => e -> String -> m ()
encodeISO2022 e = encode' (DynEncoding ASCII)
where
encode' _ [] = return ()
encode' enc (c:cs) = case encodingForChar e c of
Nothing -> throwException (HasNoRepresentation c)
Just (nenc,esc)
| enc==nenc -> do
encodeChar enc c
encode' enc cs
| otherwise -> do
mapM_ pushWord8 esc
encodeChar nenc c
encode' nenc cs
decodeISO2022 :: (ISO2022 e,ByteSource m) => e -> m String
decodeISO2022 e = decode' (DynEncoding ASCII)
where
decode' enc = do
empty <- sourceEmpty
if empty
then return []
else (do
nenc <- readEscape e
case nenc of
Just renc -> decode' renc
Nothing -> do
c <- decodeChar enc
cs <- decode' enc
return (c:cs)
)

View File

@ -0,0 +1,51 @@
{-# LANGUAGE DeriveDataTypeable #-}
{- | Implements the japanese character encoding ISO 2022-JP.
See http://tools.ietf.org/html/rfc1468 for reference.
-}
module Data.Encoding.ISO2022JP where
import Data.Typeable
import Data.Encoding.Base
import Data.Encoding.Exception
import Data.Encoding.ByteSource
import Data.Encoding.ISO2022
import Data.Encoding.ASCII
import Data.Encoding.JISX0201
import Data.Encoding.JISX0208
import Control.Throws
data ISO2022JP = ISO2022JP deriving (Eq,Show,Typeable)
instance Encoding ISO2022JP where
encodeChar = encodeCharISO2022
decodeChar = decodeCharISO2022
encode = encodeISO2022
decode = decodeISO2022
encodeable _ c = encodeable ASCII c || encodeable JISX0201 c || encodeable JISX0208 c
instance ISO2022 ISO2022JP where
readEscape _ = fetchAhead $ do
w <- fetchWord8
if w == 27
then (do
w2 <- fetchWord8
w3 <- fetchWord8
case w2 of
40 -> case w3 of
66 -> return $ Just $ DynEncoding ASCII
74 -> return $ Just $ DynEncoding JISX0201
_ -> throwException (IllegalCharacter w3)
36 -> case w3 of
64 -> return $ Just $ DynEncoding JISX0208 -- XXX: this actually has to be the 1978 version of the standard... too bad I can't find it
66 -> return $ Just $ DynEncoding JISX0208
_ -> throwException (IllegalCharacter w3)
_ -> throwException (IllegalCharacter w2)
)
else return Nothing
encodingForChar _ c
| encodeable ASCII c = Just (DynEncoding ASCII,[27,40,66])
| encodeable JISX0201 c = Just (DynEncoding JISX0201,[27,40,74])
| encodeable JISX0208 c = Just (DynEncoding JISX0208,[27,36,66])
| otherwise = Nothing

View File

@ -1,3 +1,6 @@
{-# LANGUAGE DeriveDataTypeable #-}
{- | Implements ISO\/IEC 8859-1 alias latin-1 encoding. See <http://en.wikipedia.org/wiki/ISO/IEC_8859-1> for further information.
-}
module Data.Encoding.ISO88591 where
import Control.Throws
@ -6,8 +9,9 @@ import Data.Encoding.Exception
import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Data.Char (ord,chr)
import Data.Typeable
data ISO88591 = ISO88591 deriving (Show)
data ISO88591 = ISO88591 deriving (Show,Eq,Typeable)
instance Encoding ISO88591 where
encodeChar _ c
@ -15,4 +19,5 @@ instance Encoding ISO88591 where
| otherwise = pushWord8 (fromIntegral $ ord c)
decodeChar _ = do
w <- fetchWord8
return (chr $ fromIntegral w)
return (chr $ fromIntegral w)
encodeable _ c = c <= '\255'

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO885910 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO885910" "8859-10.TXT" )

View File

@ -1,50 +1,3 @@
#
# Name: ISO/IEC 8859-10:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.1
# Table format: Format A
# Date: 1999 October 11
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-10:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-10 order.
#
# Version history
# 1.0 version new.
# 1.1 corrected mistake in mapping of 0xA4
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO885911 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO885911" "8859-11.TXT" )

View File

@ -1,52 +1,3 @@
#
# Name: ISO/IEC 8859-11:2001 to Unicode
# Unicode version: 3.2
# Table version: 1.0
# Table format: Format A
# Date: 2002 October 7
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 2002 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-11:2001 characters map into Unicode.
#
# ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
# the addition of 0xA0 NO-BREAK SPACE.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-11 order.
#
# Version history:
# 2002 October 7 Created
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# For any comments or problems, please use the Unicode
# web contact form at:
# http://www.unicode.org/unicode/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
@ -294,4 +245,4 @@
0xF8 0x0E58 # THAI DIGIT EIGHT
0xF9 0x0E59 # THAI DIGIT NINE
0xFA 0x0E5A # THAI CHARACTER ANGKHANKHU
0xFB 0x0E5B # THAI CHARACTER KHOMUT
0xFB 0x0E5B # THAI CHARACTER KHOMUT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO885913 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO885913" "8859-13.TXT" )

View File

@ -1,46 +1,3 @@
#
# Name: ISO/IEC 8859-13:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-13:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-13 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO885914 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO885914" "8859-14.TXT" )

View File

@ -1,47 +1,3 @@
#
# Name: ISO/IEC 8859-14:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-14:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-14 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO885915 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO885915" "8859-15.TXT" )

View File

@ -1,49 +1,3 @@
#
# Name: ISO/IEC 8859-15:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-15:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-15 order.
#
# Version history
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO885916 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO885916" "8859-16.TXT" )

View File

@ -1,46 +1,3 @@
#
# Name: ISO/IEC 8859-16:2001 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 2001 July 26
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
#
# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-16:2001 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-16 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88592 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88592" "8859-2.TXT" )

View File

@ -1,50 +1,3 @@
#
# Name: ISO 8859-2:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-2:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-2 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88593 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88593" "8859-3.TXT" )

View File

@ -1,50 +1,3 @@
#
# Name: ISO/IEC 8859-3:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-3:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-3 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88594 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88594" "8859-4.TXT" )

View File

@ -1,50 +1,3 @@
#
# Name: ISO/IEC 8859-4:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-4:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-4 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88595 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88595" "8859-5.TXT" )

View File

@ -1,50 +1,3 @@
#
# Name: ISO 8859-5:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-5:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-5 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88596 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88596" "8859-6.TXT" )

View File

@ -1,52 +1,3 @@
#
# Name: ISO 8859-6:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-6:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-6 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
# of the Arabic digits (U+0660..U+0669).
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88597 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88597" "8859-7.TXT" )

View File

@ -1,58 +1,3 @@
#
# Name: ISO 8859-7:2003 to Unicode
# Unicode version: 4.0
# Table version: 2.0
# Table format: Format A
# Date: 2003-Nov-12
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-2003 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO 8859-7:2003 characters map into Unicode.
#
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
# and ECMA 118. ISO 8859-7:2003 adds two currency signs
# and one other character not in the earlier standard.
#
# Format: Three tab-separated columns
# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO 8859-7 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
#
# 2.0 version updates 1.0 version by adding mappings for the
# three newly added characters 0xA4, 0xA5, 0xAA.
#
# Updated versions of this file may be found in:
# <http://www.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact the Unicode Consortium at:
# <http://www.unicode.org/reporting.html>
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88598 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88598" "8859-8.TXT" )

View File

@ -1,52 +1,3 @@
#
# Name: ISO/IEC 8859-8:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.1
# Table format: Format A
# Date: 2000-Jan-03
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-8:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-8 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# 1.1 version updates to the published 8859-8:1999, correcting
# the mapping of 0xAF and adding mappings for LRM and RLM.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -1,6 +0,0 @@
{-# LANGUAGE TemplateHaskell #-}
module Data.Encoding.ISO88599 where
import Data.Encoding.Helper.Template (makeISOInstance)
$( makeISOInstance "ISO88599" "8859-9.TXT" )

View File

@ -1,52 +1,3 @@
#
# Name: ISO/IEC 8859-9:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on magnetic media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-9:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-9 order.
#
# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT

View File

@ -0,0 +1,158 @@
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x00A5 # YEN SIGN
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x203E # OVERLINE
0xA1 0xFF61 # HALFWIDTH IDEOGRAPHIC FULL STOP
0xA2 0xFF62 # HALFWIDTH LEFT CORNER BRACKET
0xA3 0xFF63 # HALFWIDTH RIGHT CORNER BRACKET
0xA4 0xFF64 # HALFWIDTH IDEOGRAPHIC COMMA
0xA5 0xFF65 # HALFWIDTH KATAKANA MIDDLE DOT
0xA6 0xFF66 # HALFWIDTH KATAKANA LETTER WO
0xA7 0xFF67 # HALFWIDTH KATAKANA LETTER SMALL A
0xA8 0xFF68 # HALFWIDTH KATAKANA LETTER SMALL I
0xA9 0xFF69 # HALFWIDTH KATAKANA LETTER SMALL U
0xAA 0xFF6A # HALFWIDTH KATAKANA LETTER SMALL E
0xAB 0xFF6B # HALFWIDTH KATAKANA LETTER SMALL O
0xAC 0xFF6C # HALFWIDTH KATAKANA LETTER SMALL YA
0xAD 0xFF6D # HALFWIDTH KATAKANA LETTER SMALL YU
0xAE 0xFF6E # HALFWIDTH KATAKANA LETTER SMALL YO
0xAF 0xFF6F # HALFWIDTH KATAKANA LETTER SMALL TU
0xB0 0xFF70 # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
0xB1 0xFF71 # HALFWIDTH KATAKANA LETTER A
0xB2 0xFF72 # HALFWIDTH KATAKANA LETTER I
0xB3 0xFF73 # HALFWIDTH KATAKANA LETTER U
0xB4 0xFF74 # HALFWIDTH KATAKANA LETTER E
0xB5 0xFF75 # HALFWIDTH KATAKANA LETTER O
0xB6 0xFF76 # HALFWIDTH KATAKANA LETTER KA
0xB7 0xFF77 # HALFWIDTH KATAKANA LETTER KI
0xB8 0xFF78 # HALFWIDTH KATAKANA LETTER KU
0xB9 0xFF79 # HALFWIDTH KATAKANA LETTER KE
0xBA 0xFF7A # HALFWIDTH KATAKANA LETTER KO
0xBB 0xFF7B # HALFWIDTH KATAKANA LETTER SA
0xBC 0xFF7C # HALFWIDTH KATAKANA LETTER SI
0xBD 0xFF7D # HALFWIDTH KATAKANA LETTER SU
0xBE 0xFF7E # HALFWIDTH KATAKANA LETTER SE
0xBF 0xFF7F # HALFWIDTH KATAKANA LETTER SO
0xC0 0xFF80 # HALFWIDTH KATAKANA LETTER TA
0xC1 0xFF81 # HALFWIDTH KATAKANA LETTER TI
0xC2 0xFF82 # HALFWIDTH KATAKANA LETTER TU
0xC3 0xFF83 # HALFWIDTH KATAKANA LETTER TE
0xC4 0xFF84 # HALFWIDTH KATAKANA LETTER TO
0xC5 0xFF85 # HALFWIDTH KATAKANA LETTER NA
0xC6 0xFF86 # HALFWIDTH KATAKANA LETTER NI
0xC7 0xFF87 # HALFWIDTH KATAKANA LETTER NU
0xC8 0xFF88 # HALFWIDTH KATAKANA LETTER NE
0xC9 0xFF89 # HALFWIDTH KATAKANA LETTER NO
0xCA 0xFF8A # HALFWIDTH KATAKANA LETTER HA
0xCB 0xFF8B # HALFWIDTH KATAKANA LETTER HI
0xCC 0xFF8C # HALFWIDTH KATAKANA LETTER HU
0xCD 0xFF8D # HALFWIDTH KATAKANA LETTER HE
0xCE 0xFF8E # HALFWIDTH KATAKANA LETTER HO
0xCF 0xFF8F # HALFWIDTH KATAKANA LETTER MA
0xD0 0xFF90 # HALFWIDTH KATAKANA LETTER MI
0xD1 0xFF91 # HALFWIDTH KATAKANA LETTER MU
0xD2 0xFF92 # HALFWIDTH KATAKANA LETTER ME
0xD3 0xFF93 # HALFWIDTH KATAKANA LETTER MO
0xD4 0xFF94 # HALFWIDTH KATAKANA LETTER YA
0xD5 0xFF95 # HALFWIDTH KATAKANA LETTER YU
0xD6 0xFF96 # HALFWIDTH KATAKANA LETTER YO
0xD7 0xFF97 # HALFWIDTH KATAKANA LETTER RA
0xD8 0xFF98 # HALFWIDTH KATAKANA LETTER RI
0xD9 0xFF99 # HALFWIDTH KATAKANA LETTER RU
0xDA 0xFF9A # HALFWIDTH KATAKANA LETTER RE
0xDB 0xFF9B # HALFWIDTH KATAKANA LETTER RO
0xDC 0xFF9C # HALFWIDTH KATAKANA LETTER WA
0xDD 0xFF9D # HALFWIDTH KATAKANA LETTER N
0xDE 0xFF9E # HALFWIDTH KATAKANA VOICED SOUND MARK
0xDF 0xFF9F # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -56,4 +56,5 @@ instance Encoding KOI8R where
| ch < '\128' = pushWord8 $ fromIntegral $ ord ch
| otherwise = case lookup ch koi8rMap of
Just w -> pushWord8 w
Nothing -> throwException (HasNoRepresentation ch)
Nothing -> throwException (HasNoRepresentation ch)
encodeable _ c = member c koi8rMap

View File

@ -56,4 +56,5 @@ instance Encoding KOI8U where
| ch < '\128' = pushWord8 $ fromIntegral $ ord ch
| otherwise = case lookup ch koi8uMap of
Just w -> pushWord8 w
Nothing -> throwException (HasNoRepresentation ch)
Nothing -> throwException (HasNoRepresentation ch)
encodeable _ c = member c koi8uMap

View File

@ -0,0 +1,319 @@
# /Notes on Mac OS Roman:/
#
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
# environments, it is only supported directly in programming
# interfaces for QuickDraw Text, the Script Manager, and related
# Text Utilities. For other purposes it is supported via transcoding
# to and from Unicode.
#
# This character set is used for at least the following Mac OS
# localizations: U.S., British, Canadian French, French, Swiss
# French, German, Swiss German, Italian, Swiss Italian, Dutch,
# Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
# Portuguese, Brazilian, and the default International system.
#
# Variants of Mac OS Roman are used for Croatian, Icelandic,
# Turkish, Romanian, and other encodings. Separate mapping tables
# are available for these encodings.
#
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
# a "currency sign" variant of the Mac OS Roman encoding that still
# maps 0xDB to U+00A4; this can be used for older fonts.
#
# Before Mac OS 8.5, the ROM bitmap versions of the fonts Chicago,
# New York, Geneva, and Monaco did not implement the full Mac OS
# Roman character set; they only supported character codes up to
# 0xD8. The TrueType versions of these fonts have always implemented
# the full character set, as with the bitmap and TrueType versions
# of the other standard Roman fonts.
#
# In all Mac OS encodings, fonts such as Chicago which are used
# as "system" fonts (for menus, dialogs, etc.) have four glyphs
# at code points 0x11-0x14 for transient use by the Menu Manager.
# These glyphs are not intended as characters for use in normal
# text, and the associated code points are not generally
# interpreted as associated with these glyphs; they are usually
# interpreted (if at all) as the control codes DC1-DC4.
#
# /Unicode mapping issues and notes:/
#
# The following corporate zone Unicode character is used in this
# mapping:
#
# 0xF8FF Apple logo
#
# NOTE: The graphic image associated with the Apple logo character
# is not authorized for use without permission of Apple, and
# unauthorized use might constitute trademark infringement.
#
# /Details of mapping changes in each version:/
#
# Changes from version n08 to version b02:
#
# * Encoding changed for Mac OS 8.5; change mapping of 0xDB from
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
#
# Changes from version n03 to version n04:
#
# * Change mapping of 0xBD from U+2126 to its canonical
# decomposition, U+03A9.
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xA0 0x2020 # DAGGER
0xA1 0x00B0 # DEGREE SIGN
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A7 # SECTION SIGN
0xA5 0x2022 # BULLET
0xA6 0x00B6 # PILCROW SIGN
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
0xA8 0x00AE # REGISTERED SIGN
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x2122 # TRADE MARK SIGN
0xAB 0x00B4 # ACUTE ACCENT
0xAC 0x00A8 # DIAERESIS
0xAD 0x2260 # NOT EQUAL TO
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xB0 0x221E # INFINITY
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x2264 # LESS-THAN OR EQUAL TO
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
0xB4 0x00A5 # YEN SIGN
0xB5 0x00B5 # MICRO SIGN
0xB6 0x2202 # PARTIAL DIFFERENTIAL
0xB7 0x2211 # N-ARY SUMMATION
0xB8 0x220F # N-ARY PRODUCT
0xB9 0x03C0 # GREEK SMALL LETTER PI
0xBA 0x222B # INTEGRAL
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
0xBE 0x00E6 # LATIN SMALL LETTER AE
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xC0 0x00BF # INVERTED QUESTION MARK
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
0xC2 0x00AC # NOT SIGN
0xC3 0x221A # SQUARE ROOT
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
0xC5 0x2248 # ALMOST EQUAL TO
0xC6 0x2206 # INCREMENT
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xC9 0x2026 # HORIZONTAL ELLIPSIS
0xCA 0x00A0 # NO-BREAK SPACE
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
0xCF 0x0153 # LATIN SMALL LIGATURE OE
0xD0 0x2013 # EN DASH
0xD1 0x2014 # EM DASH
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
0xD6 0x00F7 # DIVISION SIGN
0xD7 0x25CA # LOZENGE
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xDA 0x2044 # FRACTION SLASH
0xDB 0x20AC # EURO SIGN
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0xDE 0xFB01 # LATIN SMALL LIGATURE FI
0xDF 0xFB02 # LATIN SMALL LIGATURE FL
0xE0 0x2021 # DOUBLE DAGGER
0xE1 0x00B7 # MIDDLE DOT
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
0xE4 0x2030 # PER MILLE SIGN
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xF0 0xF8FF # Apple logo
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
0xF7 0x02DC # SMALL TILDE
0xF8 0x00AF # MACRON
0xF9 0x02D8 # BREVE
0xFA 0x02D9 # DOT ABOVE
0xFB 0x02DA # RING ABOVE
0xFC 0x00B8 # CEDILLA
0xFD 0x02DD # DOUBLE ACUTE ACCENT
0xFE 0x02DB # OGONEK
0xFF 0x02C7 # CARON

View File

@ -0,0 +1,160 @@
module Data.Encoding.Preprocessor.Mapping where
import Distribution.Simple.PreProcess
import Distribution.Simple.Utils
import System.IO
import System.FilePath
import Data.List (intersperse,unfoldr)
import Data.Maybe
import Data.Char
import Data.Word
import Data.Ix
import Data.Bits
import Data.Array.Static.Builder
import Data.CharMap.Builder
data MappingType
= ISOMapping
| JISMapping
deriving (Eq,Ord,Show,Read)
readTranslation :: Int -> FilePath -> IO ([(Integer,Maybe Char)],[String])
readTranslation offset file = do
cont <- fmap parseTranslationTable $ readFile file
let docstr = mapMaybe snd (takeWhile (null.fst) cont)
let trans = mapMaybe (\(ln,comm) -> case drop offset ln of
[src] -> Just (src,Nothing)
[src,trg] -> Just (src,Just $ chr $ fromIntegral trg)
_ -> Nothing) cont
return (trans,docstr)
parseTranslationTable :: String -> [([Integer],Maybe String)]
parseTranslationTable cont = map (\ln -> let (trans,comm) = break (=='#') ln
in (map read (words trans),case comm of
"" -> Nothing
_ -> Just (tail comm))
) (lines cont)
buildDocTable :: [(Integer,Maybe Char)] -> [String]
buildDocTable = intersperse "".
map (\(i,mbc) -> show i ++ (case mbc of
Nothing -> ""
Just c -> "\t = &#"++show (ord c)++"; ("++show (ord c)++")"))
{-fillTranslations :: (Ix a,Show a) => a -> a -> [(a,Maybe Char)] -> [(a,Maybe Char)]
fillTranslations f t = merge (range (f,t))
where
merge xs [] = map (\x -> (x,Nothing)) xs
merge [] cs = error $ "Data.Encoding.Helper.Template.fillTranslations: Character translations out of range: " ++ show cs
merge (x:xs) (y:ys) = if x < fst y
then (x,Nothing):(merge xs (y:ys))
else y:(merge xs ys)-}
fillTranslations :: (Enum a,Eq a) => [(a,Maybe Char)] -> (a,a,[Maybe Char])
fillTranslations [] = error "fillTranslations: zero elements"
fillTranslations ((s,c):rest) = let (e,r) = fill' s rest
fill' cur [] = (cur,[])
fill' cur all@((n,c):rest2) = if succ cur == n
then (let (e',res) = fill' n rest2
in (e',c:res))
else (let (e',res) = fill' (succ cur) all
in (e',Nothing:res))
in (s,e,c:r)
validTranslations :: [(a,Maybe Char)] -> [(a,Char)]
validTranslations = mapMaybe (\(n,mc) -> case mc of
Nothing -> Nothing
Just c -> Just (n,c))
mappingPreprocessor :: PreProcessor
mappingPreprocessor = PreProcessor
{platformIndependent = True
,runPreProcessor = \(sbase,sfile) (tbase,tfile) verb -> do
let (dir,fn) = splitFileName sfile
let (bname,ext) = splitExtensions fn
let dirs = splitDirectories dir
let tp = case ext of
".mapping" -> ISOMapping
".mapping2" -> JISMapping
info verb (tfile++" generated from mapping "++sfile)
preprocessMapping tp (sbase </> sfile) (tbase </> tfile) dirs bname
}
preprocessMapping :: MappingType -> FilePath -> FilePath -> [String] -> String -> IO ()
preprocessMapping tp src trg mods name = do
(trans,doc) <- readTranslation 0 src
let mod = concat $ intersperse "." (mods++[name])
let wsize = case tp of
ISOMapping -> 1
JISMapping -> 2
let bsize = show (wsize*8) ++ (if wsize > 1 then "be" else "")
--let (larr,off,arr) = staticArray32 trans
let (sarr,earr,els) = fillTranslations trans
{-let (lmp,idx,val) = staticMap wsize trans-}
let arrname = "decoding_array_"++name
let mpname = "encoding_map_"++name
let bcheck exp = if sarr/=0 || earr/=255
then ("(if "++
concat (intersperse "||" $ (if sarr/=0 then ["w<"++show sarr] else [])++(if earr/=255 then ["w>"++show earr] else []))++
" then throwException $ IllegalCharacter $ fromIntegral w else "++exp++")"
) else exp
let mp = buildCharMap (mapMaybe (\(i,c) -> do
rc <- c
return $ SingleMapping
rc
(reverse $ unfoldr (\(w,n) -> if n == 0
then Nothing
else Just (fromIntegral w,(w `shiftR` 8,n-1))) (i,wsize))
) trans
)
{-let mp = case wsize of
1 -> buildStaticMap (mapMaybe (\(i,c) -> case c of
Nothing -> Nothing
Just rc -> Just (rc,fromIntegral i::Word8)) trans)
2 -> buildStaticMap (mapMaybe (\(i,c) -> case c of
Nothing -> Nothing
Just rc -> Just (rc,fromIntegral i::Word16)) trans)-}
writeFile trg $ unlines $
["{- This file has been auto-generated. Do not edit it. -}"
,"{-# LANGUAGE MagicHash,DeriveDataTypeable #-}"
]++(case doc of
[] -> ["{- |"]
_ -> ("{- | "++head doc):(map (\ln -> " "++ln) (tail doc)))
++[""]
++buildDocTable trans
++[" -}"]
++
["module "++mod++"("++name++"(..)) where"
,""
,"import Data.Encoding.Base"
,"import Data.Encoding.ByteSource"
,"import Data.Encoding.ByteSink"
,"import Data.Encoding.Exception"
,"import Data.CharMap"
,"import Data.Array.Static"
,"import Data.Map.Static"
,"import Control.Throws"
,"import Prelude hiding (lookup)"
,"import Data.Word"
,""
,"import Data.Typeable"
,""
,"data "++name++" = "++name
," deriving (Show,Eq,Typeable)"
,""
,arrname++" = "++buildStaticArray (sarr,earr) els
,""
,mpname++" :: CharMap"
,mpname++" = "++mp
,""
,"instance Encoding "++name++" where"
," decodeChar _ = do"
," w <- fetchWord"++bsize
," "++bcheck "return ()"
," case "++arrname++"!w of"
," Nothing -> throwException $ IllegalCharacter $ fromIntegral w"
," Just c -> return c"
," encodeChar _ c = mapEncode c "++mpname
," encodeable _ c = mapMember c "++mpname
]

View File

@ -0,0 +1,582 @@
module Data.Encoding.Preprocessor.XMLMapping where
import Data.Word
import Text.Read
import Text.Show
import Numeric
import Data.List (find)
import Data.Char
import Text.XML.HaXml.XmlContent
import Text.XML.HaXml.OneOfN
import Text.XML.HaXml.Types
testFile :: FilePath -> IO CharacterMapping
testFile fp = fReadXml fp
{-Type decls-}
data CharacterMapping = CharacterMapping CharacterMapping_Attrs
(Maybe History)
(OneOf2 Validity Stateful_siso)
Assignments
deriving (Eq,Show)
data CharacterMapping_Attrs = CharacterMapping_Attrs
{ characterMappingId :: String
, characterMappingVersion :: String
, characterMappingDescription :: (Maybe String)
, characterMappingContact :: (Maybe String)
, characterMappingRegistrationAuthority :: (Maybe String)
, characterMappingRegistrationName :: (Maybe String)
, characterMappingCopyright :: (Maybe String)
, characterMappingBidiOrder :: (Defaultable CharacterMapping_bidiOrder)
, characterMappingCombiningOrder :: (Defaultable CharacterMapping_combiningOrder)
, characterMappingNormalization :: (Defaultable CharacterMapping_normalization)
} deriving (Eq,Show)
data CharacterMapping_bidiOrder = CharacterMapping_bidiOrder_logical
| CharacterMapping_bidiOrder_RTL |
CharacterMapping_bidiOrder_LTR
deriving (Eq,Show)
data CharacterMapping_combiningOrder = CharacterMapping_combiningOrder_before
| CharacterMapping_combiningOrder_after
deriving (Eq,Show)
data CharacterMapping_normalization = CharacterMapping_normalization_undetermined
| CharacterMapping_normalization_neither |
CharacterMapping_normalization_NFC |
CharacterMapping_normalization_NFD |
CharacterMapping_normalization_NFC_NFD
deriving (Eq,Show)
data Stateful_siso = Stateful_siso Validity Validity
deriving (Eq,Show)
newtype History = History (List1 Modified) deriving (Eq,Show)
data Modified = Modified Modified_Attrs String
deriving (Eq,Show)
data Modified_Attrs = Modified_Attrs
{ modifiedVersion :: String
, modifiedDate :: String
} deriving (Eq,Show)
newtype Validity = Validity (List1 State) deriving (Eq,Show)
data State = State
{ stateType :: String
, stateNext :: String
, stateS :: ByteSequence
, stateE :: (Maybe ByteSequence)
, stateMax :: (Maybe String)
} deriving (Eq,Show)
data Assignments = Assignments Assignments_Attrs [A] [Fub] [Fbu]
[Sub1] [Range]
deriving (Eq,Show)
data Assignments_Attrs = Assignments_Attrs
{ assignmentsSub :: (Defaultable String)
, assignmentsSub1 :: (Maybe String)
} deriving (Eq,Show)
data A = A
{ aB :: ByteSequence
, aU :: CodePoints
, aC :: (Maybe String)
, aV :: (Maybe String)
} deriving (Eq,Show)
data Fub = Fub
{ fubB :: ByteSequence
, fubU :: CodePoints
, fubC :: (Maybe String)
, fubRu :: (Maybe String)
, fubRc :: (Maybe String)
, fubV :: (Maybe String)
} deriving (Eq,Show)
data Fbu = Fbu
{ fbuB :: ByteSequence
, fbuU :: CodePoints
, fbuV :: (Maybe String)
} deriving (Eq,Show)
data Sub1 = Sub1
{ sub1U :: CodePoints
, sub1C :: (Maybe String)
, sub1V :: (Maybe String)
} deriving (Eq,Show)
data Range = Range
{ rangeBFirst :: ByteSequence
, rangeBLast :: ByteSequence
, rangeUFirst :: CodePoints
, rangeULast :: CodePoints
, rangeBMin :: ByteSequence
, rangeBMax :: ByteSequence
, rangeV :: (Maybe String)
} deriving (Eq,Show)
data Iso2022 = Iso2022 (Maybe Default2022)
(List1 (OneOf5 Escape Si So Ss2 Ss3))
deriving (Eq,Show)
data Default2022 = Default2022
{ default2022Name :: String
} deriving (Eq,Show)
data Escape = Escape
{ escapeSequence :: String
, escapeName :: String
} deriving (Eq,Show)
newtype Si = Si (List1 Designator) deriving (Eq,Show)
newtype So = So (List1 Designator) deriving (Eq,Show)
newtype Ss2 = Ss2 (List1 Designator) deriving (Eq,Show)
newtype Ss3 = Ss3 (List1 Designator) deriving (Eq,Show)
data Designator = Designator
{ designatorSequence :: String
, designatorName :: String
} deriving (Eq,Show)
newtype ByteSequence = BS [Word8] deriving Eq
newtype CodePoints = CP [Char] deriving Eq
{-Instance decls-}
instance HTypeable CharacterMapping where
toHType x = Defined "characterMapping" [] []
instance XmlContent CharacterMapping where
toContents (CharacterMapping as a b c) =
[CElem (Elem (N "characterMapping") (toAttrs as) (maybe [] toContents a
++ toContents b
++ toContents c)) ()]
parseContents = do
{ e@(Elem _ as _) <- element ["characterMapping"]
; interior e $ return (CharacterMapping (fromAttrs as))
`apply` optional parseContents `apply` parseContents `apply` parseContents
} `adjustErr` ("in <characterMapping>, "++)
instance XmlAttributes CharacterMapping_Attrs where
fromAttrs as =
CharacterMapping_Attrs
{ characterMappingId = definiteA fromAttrToStr "characterMapping" "id" as
, characterMappingVersion = definiteA fromAttrToStr "characterMapping" "version" as
, characterMappingDescription = possibleA fromAttrToStr "description" as
, characterMappingContact = possibleA fromAttrToStr "contact" as
, characterMappingRegistrationAuthority = possibleA fromAttrToStr "registrationAuthority" as
, characterMappingRegistrationName = possibleA fromAttrToStr "registrationName" as
, characterMappingCopyright = possibleA fromAttrToStr "copyright" as
, characterMappingBidiOrder = defaultA fromAttrToTyp CharacterMapping_bidiOrder_logical "bidiOrder" as
, characterMappingCombiningOrder = defaultA fromAttrToTyp CharacterMapping_combiningOrder_after "combiningOrder" as
, characterMappingNormalization = defaultA fromAttrToTyp CharacterMapping_normalization_undetermined "normalization" as
}
toAttrs v = catMaybes
[ toAttrFrStr "id" (characterMappingId v)
, toAttrFrStr "version" (characterMappingVersion v)
, maybeToAttr toAttrFrStr "description" (characterMappingDescription v)
, maybeToAttr toAttrFrStr "contact" (characterMappingContact v)
, maybeToAttr toAttrFrStr "registrationAuthority" (characterMappingRegistrationAuthority v)
, maybeToAttr toAttrFrStr "registrationName" (characterMappingRegistrationName v)
, maybeToAttr toAttrFrStr "copyright" (characterMappingCopyright v)
, defaultToAttr toAttrFrTyp "bidiOrder" (characterMappingBidiOrder v)
, defaultToAttr toAttrFrTyp "combiningOrder" (characterMappingCombiningOrder v)
, defaultToAttr toAttrFrTyp "normalization" (characterMappingNormalization v)
]
instance XmlAttrType CharacterMapping_bidiOrder where
fromAttrToTyp n (n',v)
| N n==n' = translate (attr2str v)
| otherwise = Nothing
where translate "logical" = Just CharacterMapping_bidiOrder_logical
translate "RTL" = Just CharacterMapping_bidiOrder_RTL
translate "LTR" = Just CharacterMapping_bidiOrder_LTR
translate _ = Nothing
toAttrFrTyp n CharacterMapping_bidiOrder_logical = Just (N n, str2attr "logical")
toAttrFrTyp n CharacterMapping_bidiOrder_RTL = Just (N n, str2attr "RTL")
toAttrFrTyp n CharacterMapping_bidiOrder_LTR = Just (N n, str2attr "LTR")
instance XmlAttrType CharacterMapping_combiningOrder where
fromAttrToTyp n (n',v)
| N n==n' = translate (attr2str v)
| otherwise = Nothing
where translate "before" = Just CharacterMapping_combiningOrder_before
translate "after" = Just CharacterMapping_combiningOrder_after
translate _ = Nothing
toAttrFrTyp n CharacterMapping_combiningOrder_before = Just (N n, str2attr "before")
toAttrFrTyp n CharacterMapping_combiningOrder_after = Just (N n, str2attr "after")
instance XmlAttrType CharacterMapping_normalization where
fromAttrToTyp n (n',v)
| N n==n' = translate (attr2str v)
| otherwise = Nothing
where translate "undetermined" = Just CharacterMapping_normalization_undetermined
translate "neither" = Just CharacterMapping_normalization_neither
translate "NFC" = Just CharacterMapping_normalization_NFC
translate "NFD" = Just CharacterMapping_normalization_NFD
translate "NFC_NFD" = Just CharacterMapping_normalization_NFC_NFD
translate _ = Nothing
toAttrFrTyp n CharacterMapping_normalization_undetermined = Just (N n, str2attr "undetermined")
toAttrFrTyp n CharacterMapping_normalization_neither = Just (N n, str2attr "neither")
toAttrFrTyp n CharacterMapping_normalization_NFC = Just (N n, str2attr "NFC")
toAttrFrTyp n CharacterMapping_normalization_NFD = Just (N n, str2attr "NFD")
toAttrFrTyp n CharacterMapping_normalization_NFC_NFD = Just (N n, str2attr "NFC_NFD")
instance XmlAttrType ByteSequence where
fromAttrToTyp n (n',v)
| N n==n' = parseByteSequence (attr2str v)
| otherwise = Nothing
toAttrFrTyp n bs = Just (N n, str2attr $ show bs)
parseByteSequence :: String -> Maybe ByteSequence
parseByteSequence str = do
seq <- mapM (\w -> do
(res,_) <- find (null.snd) (readHex w)
return res
) (words str)
return $ BS seq
instance Show ByteSequence where
show (BS seq) = foldl (\f w -> f . (showChar ' ') . (showHex w)) id seq ""
instance XmlAttrType CodePoints where
fromAttrToTyp n (n',v)
| N n==n' = parseCodePoints (attr2str v)
| otherwise = Nothing
toAttrFrTyp n bs = Just (N n, str2attr $ show bs)
parseCodePoints :: String -> Maybe CodePoints
parseCodePoints str = do
seq <- mapM (\w -> do
(res,_) <- find (null.snd) (readHex w)
return (chr res)
) (words str)
return $ CP seq
instance Show CodePoints where
show (CP seq) = foldl (\f w -> f . (showChar ' ') . (showHex (ord w))) id seq ""
instance HTypeable Stateful_siso where
toHType x = Defined "stateful_siso" [] []
instance XmlContent Stateful_siso where
toContents (Stateful_siso a b) =
[CElem (Elem (N "stateful_siso") [] (toContents a ++ toContents b)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["stateful_siso"]
; interior e $ return (Stateful_siso) `apply` parseContents
`apply` parseContents
} `adjustErr` ("in <stateful_siso>, "++)
instance HTypeable History where
toHType x = Defined "history" [] []
instance XmlContent History where
toContents (History a) =
[CElem (Elem (N "history") [] (toContents a)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["history"]
; interior e $ return (History) `apply` parseContents
} `adjustErr` ("in <history>, "++)
instance HTypeable Modified where
toHType x = Defined "modified" [] []
instance XmlContent Modified where
toContents (Modified as a) =
[CElem (Elem (N "modified") (toAttrs as) (toText a)) ()]
parseContents = do
{ e@(Elem _ as _) <- element ["modified"]
; interior e $ return (Modified (fromAttrs as))
`apply` (text `onFail` return "")
} `adjustErr` ("in <modified>, "++)
instance XmlAttributes Modified_Attrs where
fromAttrs as =
Modified_Attrs
{ modifiedVersion = definiteA fromAttrToStr "modified" "version" as
, modifiedDate = definiteA fromAttrToStr "modified" "date" as
}
toAttrs v = catMaybes
[ toAttrFrStr "version" (modifiedVersion v)
, toAttrFrStr "date" (modifiedDate v)
]
instance HTypeable Validity where
toHType x = Defined "validity" [] []
instance XmlContent Validity where
toContents (Validity a) =
[CElem (Elem (N "validity") [] (toContents a)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["validity"]
; interior e $ return (Validity) `apply` parseContents
} `adjustErr` ("in <validity>, "++)
instance HTypeable State where
toHType x = Defined "state" [] []
instance XmlContent State where
toContents as =
[CElem (Elem (N "state") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["state"]
; return (fromAttrs as)
} `adjustErr` ("in <state>, "++)
instance XmlAttributes State where
fromAttrs as =
State
{ stateType = definiteA fromAttrToStr "state" "type" as
, stateNext = definiteA fromAttrToStr "state" "next" as
, stateS = definiteA fromAttrToTyp "state" "s" as
, stateE = possibleA fromAttrToTyp "e" as
, stateMax = possibleA fromAttrToStr "max" as
}
toAttrs v = catMaybes
[ toAttrFrStr "type" (stateType v)
, toAttrFrStr "next" (stateNext v)
, toAttrFrTyp "s" (stateS v)
, maybeToAttr toAttrFrTyp "e" (stateE v)
, maybeToAttr toAttrFrStr "max" (stateMax v)
]
instance HTypeable Assignments where
toHType x = Defined "assignments" [] []
instance XmlContent Assignments where
toContents (Assignments as a b c d e) =
[CElem (Elem (N "assignments") (toAttrs as) (concatMap toContents a ++
concatMap toContents b ++ concatMap toContents c ++
concatMap toContents d ++
concatMap toContents e)) ()]
parseContents = do
{ e@(Elem _ as _) <- element ["assignments"]
; interior e $ return (Assignments (fromAttrs as))
`apply` many parseContents `apply` many parseContents
`apply` many parseContents `apply` many parseContents
`apply` many parseContents
} `adjustErr` ("in <assignments>, "++)
instance XmlAttributes Assignments_Attrs where
fromAttrs as =
Assignments_Attrs
{ assignmentsSub = defaultA fromAttrToStr "1A" "sub" as
, assignmentsSub1 = possibleA fromAttrToStr "sub1" as
}
toAttrs v = catMaybes
[ defaultToAttr toAttrFrStr "sub" (assignmentsSub v)
, maybeToAttr toAttrFrStr "sub1" (assignmentsSub1 v)
]
instance HTypeable A where
toHType x = Defined "a" [] []
instance XmlContent A where
toContents as =
[CElem (Elem (N "a") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["a"]
; return (fromAttrs as)
} `adjustErr` ("in <a>, "++)
instance XmlAttributes A where
fromAttrs as =
A { aB = definiteA fromAttrToTyp "a" "b" as
, aU = definiteA fromAttrToTyp "a" "u" as
, aC = possibleA fromAttrToStr "c" as
, aV = possibleA fromAttrToStr "v" as
}
toAttrs v = catMaybes
[ toAttrFrTyp "b" (aB v)
, toAttrFrTyp "u" (aU v)
, maybeToAttr toAttrFrStr "c" (aC v)
, maybeToAttr toAttrFrStr "v" (aV v)
]
instance HTypeable Fub where
toHType x = Defined "fub" [] []
instance XmlContent Fub where
toContents as =
[CElem (Elem (N "fub") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["fub"]
; return (fromAttrs as)
} `adjustErr` ("in <fub>, "++)
instance XmlAttributes Fub where
fromAttrs as =
Fub
{ fubB = definiteA fromAttrToTyp "fub" "b" as
, fubU = definiteA fromAttrToTyp "fub" "u" as
, fubC = possibleA fromAttrToStr "c" as
, fubRu = possibleA fromAttrToStr "ru" as
, fubRc = possibleA fromAttrToStr "rc" as
, fubV = possibleA fromAttrToStr "v" as
}
toAttrs v = catMaybes
[ toAttrFrTyp "b" (fubB v)
, toAttrFrTyp "u" (fubU v)
, maybeToAttr toAttrFrStr "c" (fubC v)
, maybeToAttr toAttrFrStr "ru" (fubRu v)
, maybeToAttr toAttrFrStr "rc" (fubRc v)
, maybeToAttr toAttrFrStr "v" (fubV v)
]
instance HTypeable Fbu where
toHType x = Defined "fbu" [] []
instance XmlContent Fbu where
toContents as =
[CElem (Elem (N "fbu") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["fbu"]
; return (fromAttrs as)
} `adjustErr` ("in <fbu>, "++)
instance XmlAttributes Fbu where
fromAttrs as =
Fbu
{ fbuB = definiteA fromAttrToTyp "fbu" "b" as
, fbuU = definiteA fromAttrToTyp "fbu" "u" as
, fbuV = possibleA fromAttrToStr "v" as
}
toAttrs v = catMaybes
[ toAttrFrTyp "b" (fbuB v)
, toAttrFrTyp "u" (fbuU v)
, maybeToAttr toAttrFrStr "v" (fbuV v)
]
instance HTypeable Sub1 where
toHType x = Defined "sub1" [] []
instance XmlContent Sub1 where
toContents as =
[CElem (Elem (N "sub1") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["sub1"]
; return (fromAttrs as)
} `adjustErr` ("in <sub1>, "++)
instance XmlAttributes Sub1 where
fromAttrs as =
Sub1
{ sub1U = definiteA fromAttrToTyp "sub1" "u" as
, sub1C = possibleA fromAttrToStr "c" as
, sub1V = possibleA fromAttrToStr "v" as
}
toAttrs v = catMaybes
[ toAttrFrTyp "u" (sub1U v)
, maybeToAttr toAttrFrStr "c" (sub1C v)
, maybeToAttr toAttrFrStr "v" (sub1V v)
]
instance HTypeable Range where
toHType x = Defined "range" [] []
instance XmlContent Range where
toContents as =
[CElem (Elem (N "range") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["range"]
; return (fromAttrs as)
} `adjustErr` ("in <range>, "++)
instance XmlAttributes Range where
fromAttrs as =
Range
{ rangeBFirst = definiteA fromAttrToTyp "range" "bFirst" as
, rangeBLast = definiteA fromAttrToTyp "range" "bLast" as
, rangeUFirst = definiteA fromAttrToTyp "range" "uFirst" as
, rangeULast = definiteA fromAttrToTyp "range" "uLast" as
, rangeBMin = definiteA fromAttrToTyp "range" "bMin" as
, rangeBMax = definiteA fromAttrToTyp "range" "bMax" as
, rangeV = possibleA fromAttrToStr "v" as
}
toAttrs v = catMaybes
[ toAttrFrTyp "bFirst" (rangeBFirst v)
, toAttrFrTyp "bLast" (rangeBLast v)
, toAttrFrTyp "uFirst" (rangeUFirst v)
, toAttrFrTyp "uLast" (rangeULast v)
, toAttrFrTyp "bMin" (rangeBMin v)
, toAttrFrTyp "bMax" (rangeBMax v)
, maybeToAttr toAttrFrStr "v" (rangeV v)
]
instance HTypeable Iso2022 where
toHType x = Defined "iso2022" [] []
instance XmlContent Iso2022 where
toContents (Iso2022 a b) =
[CElem (Elem (N "iso2022") [] (maybe [] toContents a ++
toContents b)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["iso2022"]
; interior e $ return (Iso2022) `apply` optional parseContents
`apply` parseContents
} `adjustErr` ("in <iso2022>, "++)
instance HTypeable Default2022 where
toHType x = Defined "default2022" [] []
instance XmlContent Default2022 where
toContents as =
[CElem (Elem (N "default2022") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["default2022"]
; return (fromAttrs as)
} `adjustErr` ("in <default2022>, "++)
instance XmlAttributes Default2022 where
fromAttrs as =
Default2022
{ default2022Name = definiteA fromAttrToStr "default2022" "name" as
}
toAttrs v = catMaybes
[ toAttrFrStr "name" (default2022Name v)
]
instance HTypeable Escape where
toHType x = Defined "escape" [] []
instance XmlContent Escape where
toContents as =
[CElem (Elem (N "escape") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["escape"]
; return (fromAttrs as)
} `adjustErr` ("in <escape>, "++)
instance XmlAttributes Escape where
fromAttrs as =
Escape
{ escapeSequence = definiteA fromAttrToStr "escape" "sequence" as
, escapeName = definiteA fromAttrToStr "escape" "name" as
}
toAttrs v = catMaybes
[ toAttrFrStr "sequence" (escapeSequence v)
, toAttrFrStr "name" (escapeName v)
]
instance HTypeable Si where
toHType x = Defined "si" [] []
instance XmlContent Si where
toContents (Si a) =
[CElem (Elem (N "si") [] (toContents a)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["si"]
; interior e $ return (Si) `apply` parseContents
} `adjustErr` ("in <si>, "++)
instance HTypeable So where
toHType x = Defined "so" [] []
instance XmlContent So where
toContents (So a) =
[CElem (Elem (N "so") [] (toContents a)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["so"]
; interior e $ return (So) `apply` parseContents
} `adjustErr` ("in <so>, "++)
instance HTypeable Ss2 where
toHType x = Defined "ss2" [] []
instance XmlContent Ss2 where
toContents (Ss2 a) =
[CElem (Elem (N "ss2") [] (toContents a)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["ss2"]
; interior e $ return (Ss2) `apply` parseContents
} `adjustErr` ("in <ss2>, "++)
instance HTypeable Ss3 where
toHType x = Defined "ss3" [] []
instance XmlContent Ss3 where
toContents (Ss3 a) =
[CElem (Elem (N "ss3") [] (toContents a)) ()]
parseContents = do
{ e@(Elem _ [] _) <- element ["ss3"]
; interior e $ return (Ss3) `apply` parseContents
} `adjustErr` ("in <ss3>, "++)
instance HTypeable Designator where
toHType x = Defined "designator" [] []
instance XmlContent Designator where
toContents as =
[CElem (Elem (N "designator") (toAttrs as) []) ()]
parseContents = do
{ (Elem _ as []) <- element ["designator"]
; return (fromAttrs as)
} `adjustErr` ("in <designator>, "++)
instance XmlAttributes Designator where
fromAttrs as =
Designator
{ designatorSequence = definiteA fromAttrToStr "designator" "sequence" as
, designatorName = definiteA fromAttrToStr "designator" "name" as
}
toAttrs v = catMaybes
[ toAttrFrStr "sequence" (designatorSequence v)
, toAttrFrStr "name" (designatorName v)
]
{-Done-}

View File

@ -0,0 +1,316 @@
{-# LANGUAGE ParallelListComp #-}
module Data.Encoding.Preprocessor.XMLMappingBuilder where
import Data.Word
import Data.List
import Data.Ord
import Data.Char
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Array.Static.Builder
import Data.CharMap.Builder
import Data.Encoding.Preprocessor.XMLMapping
import Distribution.Simple.PreProcess
import System.FilePath
import Text.XML.HaXml.OneOfN
import Text.XML.HaXml.XmlContent
import Control.Exception (assert)
xmlPreprocessor :: PreProcessor
xmlPreprocessor = PreProcessor
{ platformIndependent = True
, runPreProcessor = \src trg verb -> do
createModuleFromFile src trg
}
description :: CharacterMapping -> Maybe String
description (CharacterMapping attrs _ _ _) = characterMappingDescription attrs
createModuleFromFile (sbase,sfile) (tbase,tfile) = do
xml <- testFile (sbase </> sfile)
let (dir,fn) = splitFileName sfile
let (bname,ext) = splitExtensions fn
let dirs = splitDirectories dir
let body = buildDecisionTree minBound maxBound "ch" (encodingElements xml)
let body2 = createDecoding (states xml) (decodingElements xml)
let mpname = "encoding_map_"++bname
let mp = buildCharMap $ [SingleMapping c w | (c,w) <- assignments xml]
++[ RangeMapping
st end
(foldl (\v (w,mi,ma) -> v*((fromIntegral $ ma-mi)+1) + (fromIntegral (w-mi))) 0 (zip3 bfirst bmin bmax))
[(min,max-min+1) | min <- bmin | max <- bmax]
| (st,end,bfirst,blast,bmin,bmax) <- ranges xml ]
writeFile (tbase</>tfile) $ unlines $
["{- This file has been auto-generated. Do not edit it. -}"
,"{-# LANGUAGE MagicHash,DeriveDataTypeable #-}"]++
(case description xml of
Nothing -> []
Just str -> ["{- | "++str++" -}"]) ++
["module "++concat (intersperse "." (dirs++[bname]))
," ("++bname++"("++bname++"))"
," where"
,""
,"import Control.Throws"
,"import Data.Encoding.Base"
,"import Data.Encoding.ByteSink"
,"import Data.Encoding.ByteSource"
,"import Data.Encoding.Exception"
,"import Data.Array.Static"
,"import Data.Map.Static"
,"import Data.CharMap"
,"import Data.Char"
,"import Data.Word"
,"import Data.Typeable"
,""
,"data "++bname++" = "++bname
," deriving (Eq,Show,Typeable)"
,""
,mpname++" :: CharMap"
,mpname++" = "++mp
,""
,"instance Encoding "++bname++" where"
," encodeChar _ ch = mapEncode ch "++mpname
," decodeChar _ = "++body2
," encodeable _ ch = mapMember ch "++mpname
]
decodingValueRange :: [(Word8,Word8)] -> DecodingElement -> (Int,Int)
decodingValueRange path (DecodingElement c ws)
= let v = foldl (\n (w,(lo,up)) -> n*((fromIntegral $ up-lo)+1) + (fromIntegral $ w - lo)) 0 (zip ws path)
in (v,v)
decodingValueRange path (DecodingRange first last bfirst blast bmin bmax)
= assert (zip bmin bmax == path) $
(decodingValue path bfirst
,decodingValue path blast)
decodingValue :: [(Word8,Word8)] -> [Word8] -> Int
decodingValue path ws
= foldl (\n (w,(lo,up)) -> n*((fromIntegral $ up-lo) + 1) + (fromIntegral $ w - lo))
0 (zip ws path)
type StateMachine = Map String [(Word8,Word8,String)]
createDecoding :: StateMachine -> [DecodingElement] -> String
createDecoding sm els = create' els [] 0 "FIRST"
where
create' els path n st = let trans = sortBy (\(s1,e1,st1) (s2,e2,st2) -> compare s1 s2) $ sm Map.! st
in "(fetchWord8 >>= \\w"++show n++" -> " ++ tree' n path els trans 0 255++")"
tree' :: Int -> [(Word8,Word8)] -> [DecodingElement] -> [(Word8,Word8,String)] -> Word8 -> Word8 -> String
tree' n path els [] _ _ = illWord $ "w"++show n
tree' n path els [(s,e,nst)] bl br
= let e1 = if s > bl
then "(if w"++show n++" < "++show s++" then "++illWord ("w"++show n)++" else "++e2++")"
else e2
e2 = if e < br
then "(if w"++show n++" > "++show e++" then "++illWord ("w"++show n)++" else "++e3++")"
else e3
e3 = if nst == "VALID"
then array' rpath sels
else "{- for "++nst++"-}" ++ create' nels npath (n+1) nst
npath = (s,e):path
rpath = reverse npath
sels = sortBy (comparing (decodingValueRange rpath)) nels
nels = filter (\el -> let (ll,lr) = (decodingLimits el)!!n in ll>=s && lr <= e) els
in e1
tree' n path els trans bl br
= let (left,right@((b,_,_):_)) = splitAt (length trans `div` 2) trans
(eleft,eright) = partition (\el -> fst ((decodingLimits el)!!n) < b) els
in "(if w"++show n++" < "++show b++" then "++tree' n path eleft left bl (b-1)
++" else "++tree' n path eright right b br++")"
array' path els = let grps = groupBy (\e1 e2 -> case e1 of
DecodingRange _ _ _ _ _ _ -> False
_ -> case e2 of
DecodingRange _ _ _ _ _ _ -> False
_ -> True
) els
ranges = map (\(l,u) -> (fromIntegral $ u-l)+1) path
val = foldl (\expr (r,n,m) -> "("++expr++"*"++show r++"+(fromIntegral w"++show n++"-"++show m++"))")
"0"
(zip3 ranges [0..] (map fst path))
offset = (product ranges)-1
in "(let val = " ++ val ++ " in "++array'' path grps 0 offset++")"
array'' path [] _ _ = "throwException (IllegalRepresentation ["++concat (intersperse "," (zipWith (\n _ -> "w"++show n) [0..] path))++"])"
array'' path [grp] lo up
= case grp of
[DecodingRange first end bfirst bend bmin bmax] ->
let ranges = map (\(l,u) -> (fromIntegral $ u-l)+1) path
off = foldl (\v (r,c,m) -> v*r+(fromIntegral $ c-m)) 0 (zip3 ranges bfirst bmin)
equalranges = and $ zipWith (==) path (zip bmin bmax)
in if equalranges
then "(return (chr (val + ("++show (ord first - off)++"))))"
else error "Can't have a range that has a different range..."
_ -> let chars = fillRange lo $ map (\el@(DecodingElement c _) -> (c,fst $ decodingValueRange path el)) grp
in "(return (("++buildStaticArray (lo,up) chars++")!val))"
array'' path grps lo up = let (left,right@(brk:_)) = splitAt (length grps `div` 2) grps
(off,_) = decodingValueRange path (head brk)
in "(if val < "++show off++" then "++array'' path left lo (off-1)
++" else "++array'' path right off up++")"
fillRange :: Int -> [(Char,Int)] -> [Char]
fillRange s [] = []
fillRange s all@((c,i):cs) = case compare i s of
GT -> '\0':fillRange (s+1) all
LT -> error $ "Char out of range "++show (take 10 all)
EQ -> c:fillRange (s+1) cs
states :: CharacterMapping -> StateMachine
states (CharacterMapping attrs hist val ass)
= case val of
OneOf2 (Validity (NonEmpty lst)) -> Map.fromListWith (++) $
map (\st -> let BS [start] = stateS st
end = case stateE st of
Nothing -> start
Just (BS [rend]) -> rend
in (stateType st,[(start,end,stateNext st)])) lst
_ -> error "Mapping doesn't contain validity section"
decodingElements :: CharacterMapping -> [DecodingElement]
decodingElements mp = map (\(c,ws) -> DecodingElement c ws) (assignments mp)
++ map (\(fi,la,bfi,bla,bmi,bma) -> DecodingRange fi la bfi bla bmi bma) (ranges mp)
illWord :: String -> String
illWord n = "throwException (IllegalCharacter "++n++")"
decodingLimits :: DecodingElement -> [(Word8,Word8)]
decodingLimits (DecodingElement _ ws) = map (\w -> (w,w)) ws
decodingLimits (DecodingRange _ _ bfirst blast bmin bmax) = lim' False (zip4 bfirst blast bmin bmax)
where
lim' dec [] = []
lim' dec ((fi,la,mi,ma):xs) = if dec
then (mi,ma):(lim' dec xs)
else (fi,la):(lim' (fi/=la) xs)
decodingLength :: DecodingElement -> Int
decodingLength (DecodingRange _ _ first _ _ _) = length first
decodingLength (DecodingElement _ ws) = length ws
decodingElementCount :: DecodingElement -> Int
decodingElementCount (DecodingRange s e _ _ _ _) = ord e - ord s
decodingElementCount (DecodingElement _ _) = 1
data DecodingElement
= DecodingRange Char Char [Word8] [Word8] [Word8] [Word8]
| DecodingElement Char [Word8]
deriving Show
norep :: String -> String
norep var = "(throwException $ HasNoRepresentation "++var++")"
buildDecisionTree :: Char -> Char -> String -> [EncodingElement] -> String
buildDecisionTree l r var [] = norep var
buildDecisionTree l r var [el]
= let e1 = if l < startChar el
then "(if "++var++" < "++show (startChar el)++" then "++norep var++" else "++e2++")"
else e2
e2 = if r > endChar el
then "(if "++var++" > "++show (endChar el)++" then "++norep var++" else "++e3++")"
else e3
e3 = buildEncoding el var
in e1
buildDecisionTree ll lr var els
= let (l,r@(sep:_)) = splitAt (length els `div` 2) els
in "(if "++var++" < "++show (startChar sep)
++" then ("++(buildDecisionTree ll (pred $ startChar sep) var l)++")"
++" else ("++(buildDecisionTree (endChar sep) lr var r)++")"
++")"
buildEncoding :: EncodingElement -> String -> String
buildEncoding (EncodingRange start end bf bl bmin bmax) var
= let ranges :: [Int]
ranges = map fromIntegral $ zipWith (-) bmax bmin
in "(let num = (ord "++var++") - ("++show (ord start - (foldl (\n (r,vf,vm) -> n*(r+1) + (fromIntegral (vf-vm))) 0 (zip3 ranges bf bmin)))++")"
++concat ([ " ; (p"++show n++",r"++show n++") = "
++(if n==1 then "num" else "p"++show (n-1))
++" `divMod` "++show (r+1)
| r <- reverse ranges | n <- [1..] ])
++" in "
++concat (intersperse " >> " (reverse ["pushWord8 (fromIntegral (r"++show n++" + "++show w++"))" | n <- [1..] | w <- reverse bmin]))
++")"
buildEncoding (EncodingGroup start end encs) var
= let findParams st [] = st
findParams st (x:xs) = findParams (case compare (length x) (fst st) of
LT -> (fst st,False)
GT -> (length x,False)
EQ -> st) xs
(mx,same) = findParams (length $ head encs,True) (tail encs)
in if same
then ("(let off = "++show mx++"*(ord "++var++" - "++show (ord start)++") ; arr = "
++buildStaticArray (0,(length encs)*mx-1) (concat encs)
++" in "
++concat (intersperse " >> " ["pushWord8 (arr!(off+"++show (n-1)++"))" | n <- [1..mx]])
++")")
else ("(let off = "++show (mx+1)++"*((ord "++var++") - "++show (ord start)++") ; arr = "
++buildStaticArray (0,(length encs)*(mx+1)-1)
(concat [(fromIntegral $ length e)
:(e++replicate (mx-length e) 0) | e <- encs])
++ "::StaticArray Int Word8"
++" ; len = fromIntegral (arr!off)::Int ; bytes = map (\\n -> arr!(off+n)) [1..len]"
++" in mapM_ pushWord8 bytes)")
data EncodingElement
= EncodingRange Char Char [Word8] [Word8] [Word8] [Word8]
| EncodingGroup Char Char [[Word8]]
deriving Show
mergeBy :: (a -> a -> Ordering) -> [a] -> [a] -> [a]
mergeBy f [] ys = ys
mergeBy f xs [] = xs
mergeBy f (x:xs) (y:ys)
= case f x y of
LT -> x:mergeBy f xs (y:ys)
_ -> y:mergeBy f (x:xs) ys
startChar :: EncodingElement -> Char
startChar (EncodingRange c _ _ _ _ _) = c
startChar (EncodingGroup c _ _) = c
endChar :: EncodingElement -> Char
endChar (EncodingRange _ c _ _ _ _) = c
endChar (EncodingGroup _ c _) = c
encodingElements :: CharacterMapping -> [EncodingElement]
encodingElements mp = mergeBy (comparing startChar)
(buildGroups $ sortAssignments $ assignments mp)
(encodingRanges $ ranges mp)
assignments :: CharacterMapping -> [(Char,[Word8])]
assignments (CharacterMapping _ _ _ (Assignments _ ass _ _ _ ranges))
= map (\a -> let CP [cp] = aU a
BS bs = aB a
in (cp,bs)
) ass
encodingRanges :: [(Char,Char,[Word8],[Word8],[Word8],[Word8])] -> [EncodingElement]
encodingRanges lst = sortBy (comparing (\(EncodingRange c _ _ _ _ _) -> c)) $
map (\(ufirst,ulast,bfirst,blast,bmin,bmax) -> EncodingRange ufirst ulast bfirst blast bmin bmax) lst
ranges :: CharacterMapping -> [(Char,Char,[Word8],[Word8],[Word8],[Word8])]
ranges (CharacterMapping _ _ _ (Assignments _ ass _ _ _ ranges))
= map (\r -> let BS bfirst = rangeBFirst r
BS blast = rangeBLast r
CP [ufirst] = rangeUFirst r
CP [ulast] = rangeULast r
BS bmin = rangeBMin r
BS bmax = rangeBMax r
in (ufirst,ulast,bfirst,blast,bmin,bmax)
) ranges
sortAssignments :: [(Char,[Word8])] -> [(Char,[Word8])]
sortAssignments = sortBy (comparing fst)
buildGroups :: [(Char,[Word8])] -> [EncodingElement]
buildGroups [] = []
buildGroups ((c,bs):rest) = (EncodingGroup c end (bs:wrds)):buildGroups oth
where
(end,wrds,oth) = group c rest
group n [] = (n,[],[])
group n all@((c,bs):rest)
| succ n == c = let (e,res,oth) = group c rest
in (e,bs:res,oth)
| otherwise = (n,[],all)

7093
Data/Encoding/ShiftJIS.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -79,3 +79,4 @@ instance Encoding UTF16 where
return (c:cs)
Right bom -> decode bom
decode enc = untilM sourceEmpty (decodeChar enc)
encodeable _ c = (c > '\xDFFF' && c <= '\x10FFFF') || c < '\xD800'

View File

@ -44,3 +44,4 @@ instance Encoding UTF32 where
rest <- untilM sourceEmpty (decodeChar UTF32)
return ((chr $ fromIntegral ch):rest)
decode enc = untilM sourceEmpty (decodeChar enc)
encodeable _ _ = True

View File

@ -38,6 +38,7 @@ instance Encoding UTF8 where
where
n = ord c
p8 = pushWord8.fromIntegral
encodeable _ c = c <= '\x10FFFF'
decodeChar UTF8 = do
w1 <- fetchWord8
case () of
@ -68,11 +69,13 @@ instance Encoding UTF8 where
v2 = w2 .&. 0x3F
v3 = w3 .&. 0x3F
v4 = w4 .&. 0x3F
return $ chr $
((fromIntegral v1) `shiftL` 18)
v = ((fromIntegral v1) `shiftL` 18)
.|. ((fromIntegral v2) `shiftL` 12)
.|. ((fromIntegral v3) `shiftL` 6)
.|. (fromIntegral v4)
if v <= 0x10FFFF
then return $ chr v
else throwException (IllegalRepresentation [w1,w2,w3,w4])
| otherwise -> throwException (IllegalCharacter w1)
decodeChar UTF8Strict = do
w1 <- fetchWord8
@ -108,13 +111,15 @@ instance Encoding UTF8 where
v2 = w2 .&. 0x3F
v3 = w3 .&. 0x3F
v4 = w4 .&. 0x3F
if v1 == 0 && v2 < 0x10
then throwException (IllegalRepresentation [w1,w2,w3,w4])
else return $ chr $
((fromIntegral v1) `shiftL` 18)
v = ((fromIntegral v1) `shiftL` 18)
.|. ((fromIntegral v2) `shiftL` 12)
.|. ((fromIntegral v3) `shiftL` 6)
.|. (fromIntegral v4)
if v1 == 0 && v2 < 0x10
then throwException (IllegalRepresentation [w1,w2,w3,w4])
else (if v <= 0x10FFFF
then return $ chr v
else throwException (IllegalRepresentation [w1,w2,w3,w4]))
| otherwise -> throwException (IllegalCharacter w1)
where
invalidExtend wrd = wrd .&. 0xC0 /= 0x80

28
Data/Map/Static.hs Normal file
View File

@ -0,0 +1,28 @@
module Data.Map.Static where
import Data.Static
import Data.Array.Static
import GHC.Exts
data StaticMap i e = StaticMap (StaticArray Int i) (StaticArray Int e)
lookup :: (StaticElement i,StaticElement e,Ord i) => i -> StaticMap i e -> Maybe e
lookup ind (StaticMap idx els) = lookup' 1
where
lookup' n = if n > snd (bounds idx)
then Nothing
else case compare ind (idx!n) of
LT -> lookup' (n * 2)
GT -> lookup' ((n * 2) + 1)
EQ -> Just $ els!n
member :: (StaticElement i,StaticElement e,Ord i) => i -> StaticMap i e -> Bool
member ind (StaticMap idx _) = lookup' 1
where
lookup' n = if n > snd (bounds idx)
then False
else case compare ind (idx!n) of
LT -> lookup' (n * 2)
GT -> lookup' ((n * 2) + 1)
EQ -> True

View File

@ -0,0 +1,42 @@
module Data.Map.Static.Builder where
import Data.Static
import Data.Array.Static.Builder
import Data.List
import Data.Ord
import Data.Bits
buildStaticMap :: (StaticElement i,StaticElement e,Ord i) => [(i,e)] -> String
buildStaticMap lst = let step :: Int -> [(i,e)] -> [(Int,(i,e))]
step n chunk = let ss = findSplitSize (length chunk)
(h,d:t) = splitAt ss chunk
in if null chunk
then []
else (n,d):((step (n*2) h)++(step (n*2+1) t))
checkHeap n [] = []
checkHeap n ((c,x):xs) = if c == n
then x:checkHeap (n+1) xs
else error $ "Heap is not consistent: Should be "++show n++" but is "++show c
uheap = sortBy (comparing fst) (step 1 slst)
slst = sortBy (comparing fst) lst
heap = checkHeap 1 $ sortBy (comparing fst) (step 1 slst)
len = length heap
in "StaticMap ("++buildStaticArray (1,len) (map fst heap)++") ("++buildStaticArray (1,len) (map snd heap)++")"
maxSize :: Int -> Int
maxSize d = (1 `shiftL` d) - 1
treeDepth :: Int -> Int
treeDepth sz = find' [0..]
where
find' (x:xs) = if 1 `shiftL` x > sz
then x
else find' xs
findSplitSize :: Int -> Int
findSplitSize len = let depth = treeDepth len
free = (maxSize depth) - len
in if free <= (1 `shiftL` (depth - 2))
then maxSize (depth - 1)
else len - (maxSize (depth - 2)) - 1

Some files were not shown because too many files have changed in this diff Show More