libintl-perl-1.26/000755 000765 000024 00000000000 12727473413 014323 5ustar00guidostaff000000 000000 libintl-perl-1.26/ChangeLog000644 000765 000024 00000254332 12507434022 016073 0ustar00guidostaff000000 000000 commit d26cf9f7c2f32c7c888aa8322f2d7da544c9debe Author: Guido Flohr Date: Thu Jan 24 17:56:29 2013 +0200 bumped version number to 1.23 commit 852632efc7022cdf26c77371e687461e86e7f7ec Author: Guido Flohr Date: Thu Jan 24 17:50:19 2013 +0200 updated ChangeLog commit d2392f2178c84035f9168e1cd3ce56bbf37b82aa Author: Guido Flohr Date: Thu Jan 24 17:49:53 2013 +0200 indirect version number outsmarts PAUSE commit 64a9105679c7194b49524d7aafddc7609691f2cd Author: Guido Flohr Date: Thu Jan 24 17:35:36 2013 +0200 updated ChangeLog commit 7aafc768315aacf20e679e0a188f1add3154fcd8 Author: Guido Flohr Date: Thu Jan 24 17:35:17 2013 +0200 updated release date for 1.22 in NEWS commit f92843cbd45b8a5597398fa9b9b362ee223baec9 Author: Guido Flohr Date: Thu Jan 24 17:34:25 2013 +0200 updated ChangeLog commit 858750985fee23badf35fc0484e190b7a323e552 Author: Guido Flohr Date: Thu Jan 24 17:33:52 2013 +0200 use LC_ALL instead of LANG in test LC_ALL was set before and it has precedence over lang. commit 2754ea936d3cb144976ad5e9e7e4e13bfc383f4a Author: Guido Flohr Date: Wed Jan 23 19:00:21 2013 +0200 Locale::gettext_pp needs File::Spec commit 3d4f31c1db2fece1c3e81ccdb0d298dafe4c41cc Author: Guido Flohr Date: Wed Jan 23 18:08:18 2013 +0200 updated THANKS commit f7eda6a60fcd80a78dd02a5956a02101f56c62be Author: Guido Flohr Date: Wed Jan 23 18:02:47 2013 +0200 made tests match PO files commit fb48568c2744a7a0ce607b344e9f9cb8ce6c78c6 Author: Guido Flohr Date: Wed Jan 23 17:46:21 2013 +0200 bumped version number to 1.22 commit 82eae3716ee218eb9820e90facd8a9b588d5cbb1 Author: Guido Flohr Date: Wed Jan 23 17:46:08 2013 +0200 remove generated files from scm commit 6b32e628d4cc69bb87cd2b95cd3c6a2fc70e7ad5 Author: Guido Flohr Date: Wed Jan 23 17:45:39 2013 +0200 updated MANIFEST commit 5f038a1b98feef745eed543eec66bcd557a09933 Author: Guido Flohr Date: Wed Jan 23 17:45:20 2013 +0200 updated NEWS commit b2d189b5612aacf426b2ee79e704d5aefafe22aa Author: Guido Flohr Date: Wed Jan 23 17:45:08 2013 +0200 additional PO data for testing commit fc13f51b8e4615af3e8fd179caace3aad3fc7994 Author: Guido Flohr Date: Wed Jan 23 17:18:39 2013 +0200 better explanation for Locale::gettext_dumb(3pm) commit 38bded7c8702f2615b40a5ec637c97b7544709d6 Author: Guido Flohr Date: Wed Jan 23 16:16:57 2013 +0200 more tests for locale-unaware backend commit 2721e02e973c1b4a4e4e505ffa2c843fae3c7553 Author: Guido Flohr Date: Wed Jan 23 15:56:15 2013 +0200 do not clobber $ENV{LC_ALL} commit b81bf45303ad6d60417ea4028f3d78cc2adba793 Author: Guido Flohr Date: Tue Jan 22 19:20:50 2013 +0200 honor LC_MESSAGES in locale-unaware implementation commit 105a728270a762f1778e49e4c4a6f69c454fdf32 Author: Guido Flohr Date: Tue Jan 22 19:16:48 2013 +0200 test for locale-unaware textdomain() commit 8e2f18eb7611dc5e096b274fc67467cd0daef167 Author: Guido Flohr Date: Tue Jan 22 19:15:16 2013 +0200 make do without new envariable Rather export the catalog loader at some time. commit e590687d7f9d12b75b63d95afa5f340c8c08aa8f Author: Guido Flohr Date: Tue Jan 22 19:08:51 2013 +0200 use MSGPATH instead of MESSAGE_CATALOGS in wrapper commit 5ab8ab07510f8e3bc60f5f88209f21cb05cb4b7c Author: Guido Flohr Date: Tue Jan 22 19:05:32 2013 +0200 use MSGPATH in test instead of MESSAGE_CATALOGS Instead of a list of mo files we rather take a traditional search path approach. Otherwise, the current textdomain would be completely ignored and the locale-unaware interface would be too different from the locale-aware. This commit only contains the test, not the implementation! commit 25c8d0a19814451005c1366cf7377a9abf591750 Author: Guido Flohr Date: Tue Jan 22 18:57:34 2013 +0200 test precedence of catalog paths commit 458565752b0ad0c5288b7d0a5d22c6bfdbb21f18 Author: Guido Flohr Date: Tue Jan 22 18:54:45 2013 +0200 locale-unaware implementation of dcnpgettext() commit bc8223dd196874ef96e35813117c49e03538aea2 Author: Guido Flohr Date: Tue Jan 22 18:12:02 2013 +0200 insert a wrapper around dcnpgettext() commit bf1dd581a2d9fca42be6bc6434b4b9f371afbf2e Author: Guido Flohr Date: Tue Jan 22 18:07:15 2013 +0200 replaced tabs by spaces commit dcf755109f7376bff0c86b261ff08a0ec1432b3a Author: Guido Flohr Date: Tue Jan 22 18:01:27 2013 +0200 simplified Locale::gettext_pp::__load_domain() commit 00160cef94b6f22d7dee787f50c13b45351b6060 Author: Guido Flohr Date: Tue Jan 22 17:56:45 2013 +0200 more abstractions for Locale::gettext_pp commit 8175b2423dce3cc0bcfa8b785214263d7dde2c61 Author: Guido Flohr Date: Tue Jan 22 17:46:02 2013 +0200 restructured Locale::gettext_pp a little So that we can later hook better with our dumb implementation. commit d65abb71797eadc10523df7d17ef93412a48effb Author: Guido Flohr Date: Tue Jan 22 17:37:08 2013 +0200 Locale::gettext_dump needs its own wrappers Otherwise we cannot enforce that the central entry point dcnpgettext() will be called in our own package. commit 6a4f29be97e7776ee02153dc24efb3acb8fe55b3 Author: Guido Flohr Date: Tue Jan 22 16:58:18 2013 +0200 abstract Locale::Messages to support more backends commit 5759332780f997edb862bce0940c420e28be8c97 Author: Guido Flohr Date: Tue Jan 22 16:20:16 2013 +0200 override textdomain functions in gettext_dumb commit 10cf1f896ddd3456588b938f8c51c33ad509b9ed Author: Guido Flohr Date: Tue Jan 22 15:43:54 2013 +0200 dumb backend for message retrieval commit 841e441974660f898d99b4608d0b36ed75997edd Author: Guido Flohr Date: Thu Jan 17 12:26:27 2013 +0200 0xbeefbabe is not a valid unicode code point commit b69e9b27f57f2c1d075361c1b2e80bbab0e5aa73 Author: Guido Flohr Date: Thu Jan 17 12:25:29 2013 +0200 do not run gettext tests without locale de_AT commit 165511ac11d187a78750272ba6cb81c325472c99 Author: Guido Flohr Date: Wed Jan 16 02:11:57 2013 +0200 git uses libintl-perl commit 3a5578ff47eef257840ee505576ecf7715b0ff08 Author: Guido Flohr Date: Wed Jan 16 02:11:43 2013 +0200 updated NEWS commit 533f50f54bbb3b43ae9f595c12e9d3fcd7a2c3ee Author: Guido Flohr Date: Tue Jan 15 14:40:43 2013 +0200 updated ChangeLog commit e04511866be52da18ee848da933a16ab130a9837 Author: Guido Flohr Date: Tue Jan 15 14:29:51 2013 +0200 distcheck tweaks commit da50f196b5879cd4ac4903b11f265db1854de441 Author: Guido Flohr Date: Tue Jan 15 14:18:01 2013 +0200 simplified XS version check commit eb759fbf7b7a39fae79ec3a6517e60e023b024a8 Author: Guido Flohr Date: Tue Jan 15 14:08:59 2013 +0200 updated README for sample application commit a1fb194032e27dc375b3b38f772d7e37d8407274 Author: Guido Flohr Date: Tue Jan 15 14:06:19 2013 +0200 standardization tweaks commit 763af3c2c564db536dea59a5ced9eaaf097c74eb Author: Guido Flohr Date: Mon Jan 14 18:55:32 2013 +0200 bumped version number to 1.21 commit 92870f0ebd32021d9d8fab91c0bc27720c383d7f Author: Guido Flohr Date: Mon Jan 14 18:51:05 2013 +0200 updated copyright date commit 628d8a1ae8b2781b37d41aea648026b40be4a04e Author: Guido Flohr Date: Mon Jan 14 18:48:48 2013 +0200 added czech mo file for sample app commit 0490ae65a13fa7630f334efc536a562e12109d94 Author: Guido Flohr Date: Mon Jan 14 18:41:30 2013 +0200 updated MANIFEST commit 7be831bfbd4b6a5d765050fe8de2404e1603505a Author: Guido Flohr Date: Mon Jan 14 18:37:45 2013 +0200 updated NEWS commit acbdb411589c69c52cfb9958dcf6d9f4d0a2dd64 Author: Guido Flohr Date: Mon Jan 14 18:14:36 2013 +0200 use POTFILES, not POTFILES.in commit 8cf18b092b15955db8058d4797693d7391d15eef Author: Guido Flohr Date: Fri Jan 11 18:52:36 2013 +0200 corrected hints for l10n commit 7dbb97c013bc2de966648352bf51b72fffc488a9 Author: Guido Flohr Date: Fri Jan 11 18:47:48 2013 +0200 correct behavior for LANG(UAGE) The environment variables LANGUAGE or LANG are now ignored, when neither LC_ALL nor LC_MESSAGES are set to a valid locale (not C or POSIX). This fixes https://rt.cpan.org/Public/Bug/Display.html?id=81315 commit 2e0519455756fad31676611c1227326e48aabef7 Author: Guido Flohr Date: Fri Jan 11 17:58:32 2013 +0200 updated MANIFEST commit a603074a18a4b4f0be887f3c2c0502a71c7aca7e Author: Guido Flohr Date: Fri Jan 11 17:58:23 2013 +0200 updated ReleaseNotes commit b59f0cdc125d5702259e5fa516a94f8c042ba28c Author: Jan Tomášek Date: Fri Jan 11 17:55:30 2013 +0200 czech translations for simplecal commit 8699b710274c60f4c840c1f5e4487502f6fca5c3 Author: Guido Flohr Date: Fri Jan 11 17:54:07 2013 +0200 tests for handling of LANGUAGE See https://rt.cpan.org/Public/Bug/Display.html?id=81315 commit 4df5fc79c237a71646e235d73f9b9b65f2ba0d38 Author: Guido Flohr Date: Fri Jan 11 17:28:28 2013 +0200 check that LANG works commit 6c0832236f763eb7e80316695ec3472965984da7 Author: Guido Flohr Date: Fri Jan 11 14:18:58 2013 +0200 clean test environment first commit 6142deaa316177fd92c84e0f4533ea78e67397b6 Author: Guido Flohr Date: Thu Jan 10 18:16:40 2013 +0200 test xs version for $ENV{LANGUAGE} Additionally, according to the GNU gettet documentation, see http://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html one of the LC_ envariables must be set to a valid locale in order to have the envariable LANGUAGE be interpreted. commit c1db0b6d53927ebc603cc1d924b383064efb5787 Author: Guido Flohr Date: Thu Jan 10 17:32:48 2013 +0200 typo commit 34b334a0ce5d1b15211142bab46b0f0c3a564297 Author: Guido Flohr Date: Thu Jan 10 16:50:52 2013 +0200 temporarily removed checks for newlocale Will be re-added after the next release. commit 93212879b7dca042b1990e83b0ea3e9f225723d3 Author: Guido Flohr Date: Thu Jan 10 16:36:55 2013 +0200 temporarily removed premature code for release commit 7fcb233dd0dc3ed0cf910f23713c6181c52d45ee Author: Guido Flohr Date: Thu Jan 10 15:25:34 2013 +0200 basic test for Locale::Type commit f6346a154c56a88f565eff36d4ac65f31bd9e2cf Author: Guido Flohr Date: Thu Oct 4 11:20:05 2012 +0300 Updated POD to reflect latest changes commit 6b09f16fa9dbce394bfd9ae1e8a9d3595821e46b Author: David E. Wheeler Date: Thu Oct 4 11:11:41 2012 +0300 Search both "locale" and "LocaleData" commit d29291522d0274457ef5add90b6d6e3f3a8a6375 Author: David E. Wheeler Date: Tue Sep 11 10:01:00 2012 -0700 Add resources to META.* files. commit eff5eed70d503595cd250af30be7cf45e06dcffc Author: David E. Wheeler Date: Tue Sep 11 09:20:22 2012 -0700 Search File::ShareDir, if available, for LocaleData. This is the most recent Perl-specific shared file location, with support built into the standard installer tools. So it makes sense to use it here, if it's available. commit 996aa392bb774ee6628f9fe8b034532420f5ceee Author: Guido Flohr Date: Mon Jul 16 12:06:50 2012 +0300 Corrections for language to country mapping - added Estonian - fixed entry for Spanish - added Greek - fixed entry for Slovenian Thanks to Ian McEwan (http://ianmcorvidae.net/) for the bug report. This commit fixes https://rt.cpan.org/Public/Bug/Display.html?id=78341 commit 227729165fe63201c4144898784cbecec0dd6e2a Author: Guido Flohr Date: Wed Jan 11 19:40:12 2012 +0200 Made plural regex more robust This fixes the long-standing bug https://rt.cpan.org/Ticket/Display.html?id=49744 commit 9abd7bd5bbb7896b12058712eec25f51249a3b56 Author: Guido Flohr Date: Fri Dec 16 19:07:20 2011 +0200 Implementation for LC_GLOBAL_LOCALE commit e1a2f99eb36b15a8e7bbaceda5fe971abb185df6 Author: Guido Flohr Date: Fri Dec 16 19:01:37 2011 +0200 Test for LC_GLOBAL_LOCALE commit 51dbbd27824df2cbf50b90c125c676ca8cf35def Author: Guido Flohr Date: Fri Dec 16 18:55:49 2011 +0200 Updated documentation We will not implement freelocale() and hide that function from the Perl user. Instead, the use counting is done internally and objects will be freed as needed. commit f5240ae83c62d6751785be9e5e092aa1352a5fdb Author: Guido Flohr Date: Tue Dec 13 18:58:10 2011 +0200 Work in progress Documentation for xlocale. commit dd7ca88384bd30db7951e5b5e85f37d1cf98463b Author: Guido Flohr Date: Tue Dec 13 17:38:17 2011 +0200 Check for xlocale API commit 3b76d4298c6c287c86eb4c37b05064c69168f12a Author: Guido Flohr Date: Tue Jun 28 12:32:11 2011 +0300 Only search existing directories. commit 8fb2dce6109ed180907cad413cea29d6a361e769 Author: Perlover Date: Wed Mar 9 18:16:55 2011 +0200 Assume Spain as default country for Spanish. commit f6c906219ba4eeb26e0d9ba7dcc6185dee1248ec Author: Иван Бессарабов via RT Date: Mon Jan 3 18:11:29 2011 +0100 Fixed format for printf positional parameters in POD example. commit 1970eef8439cf3da8159c1604ef5c183a5c184c2 Author: Guido Flohr Date: Mon Feb 1 14:03:40 2010 +0100 Do not use a NULL pointer for the domain parameter of bindtextdomain(). commit 4442578dd08291076a67e3fe634acfed8fe600ef Author: Guido Flohr Date: Fri Sep 18 14:59:35 2009 +0300 Removed $Id$ expansion. commit d34297d4fdfc3f3e49150b89ea32f9537d88204b Author: Guido Flohr Date: Mon Jun 29 15:51:28 2009 +0300 Updated. commit 202467a610f945fde1c920f58e108cfc56485a3b Author: Guido Flohr Date: Mon Jun 29 15:18:14 2009 +0300 News for 1.20. commit 40ad47329f923e552baa8304e256d8ed4c7bbbd0 Author: Guido Flohr Date: Mon Jun 29 15:17:55 2009 +0300 Copied from THANKS and NEWS. commit e976259bf0c356e7a73c880845ea9209adf69555 Author: Guido Flohr Date: Mon Jun 29 15:17:10 2009 +0300 David Cantrell was very helpful finding the reason for a nasty test failure. commit 8a99207fa9cc26a0cec607d80cde273ac29ca306 Author: Guido Flohr Date: Mon Jun 29 14:56:33 2009 +0300 Do not run XS tests for systems without a German locale. That should be more flexible, but in fact, most bugs in the XS version can only be worked around, not fixed. Therefore it is not that important. commit 0c10d64bf490bbf1bfc51238f7efdb336f271a70 Author: Guido Flohr Date: Mon Jun 29 14:54:39 2009 +0300 Ignore more files. commit f5648fb0ff0f3d816a8bce66b6d305acf9d62092 Author: Guido Flohr Date: Mon Jun 29 14:53:45 2009 +0300 ChangeLog generation no longer done with cvs2cl. Until something decent pops up, I will use the gitlog2changelog script from http://github.com/cryos/avogadro/blob/master/scripts/gitlog2changelog.py. commit 8f22c12d1e4c63bed120bcfd9ee7272ca5e1007c Author: Guido Flohr Date: Wed Jun 24 20:12:55 2009 +0300 Try to get a little bit mroe information about the strange failure of the new context functions. commit 77b84e909154a1ed19282b853af14420204608a8 Author: Guido Flohr Date: Wed Jun 24 19:43:54 2009 +0300 - do not skip that many tests - use two-argument version of Test::ok() and Test::skip() - correct order of expected and actual value commit 32b1cba9ac20d2598d2979ca76f35d63ced322c7 Author: Guido Flohr Date: Wed Jun 24 17:49:16 2009 +0300 - Do not skip that many tests. - Use two argument form of Test::ok(). commit 370fd8e2e47dedc42fbd8501a91f0b9a6b15ad4d Author: Guido Flohr Date: Wed Jun 24 17:44:22 2009 +0300 Fixed number of tests. commit ad4d7b0cfb2215a5dbcd8ab3e037cb165b52f6bf Author: Guido Flohr Date: Wed Jun 24 17:43:36 2009 +0300 Better structure for test results. commit 5df3672dd5b7440db2ad6e44e04a639f2b22004c Author: Guido Flohr Date: Wed Jun 24 17:39:37 2009 +0300 Use two argument form of Test::ok(). commit 457c933dca5b13a551c566ebe72a81f92157b8fe Author: Guido Flohr Date: Wed Jun 24 17:36:50 2009 +0300 - do not skip that many tests - use two argument form of Test::ok() commit 09fabdd5c1b86bbf497bfa1c4073196e4a96c1ab Author: Guido Flohr Date: Wed Jun 24 17:36:19 2009 +0300 Copied from pure Perl version. commit 6ce629c1b6579ebfab6ffb9301ec02d1d2d27bd9 Author: root Date: Wed Jun 24 12:52:56 2009 +0200 Fixed warning about undefined values in subroutine entry if locale de_AT is not installed on the system that runs the test. commit 28e388d7662541b36389d964faebd2bc1f854153 Author: root Date: Wed Jun 24 12:29:19 2009 +0200 $Config{libs} may include too many libraries (fixes compile problems on broken Debian systems). commit 4bab1f383f3b7450807172540c5ce2f10d528c38 Author: Guido Flohr Date: Tue Jun 23 09:49:18 2009 +0300 Version number increased to 1.20. commit ecff79f368d5e50925044a2448123fc9a2a4190d Author: Guido Flohr Date: Tue Jun 23 09:48:14 2009 +0300 Undone premature commit. commit 3ad1c085e4008e6328f8489b580128474d7ca820 Author: Guido Flohr Date: Fri Jun 19 11:38:14 2009 +0300 Re-generated. commit 153fb0c9d9b07cd85ad0c1fdf3da6419f563620b Author: Guido Flohr Date: Fri Jun 19 11:37:30 2009 +0300 Version number 1.19. commit 768a15d745cb16f9f02c105aa6c4a9dff7ebf06f Author: Guido Flohr Date: Fri Jun 19 11:36:31 2009 +0300 Re-generated. commit ed55289f026c0121eecbd31abab600fb33f46c64 Author: Guido Flohr Date: Fri Jun 19 11:34:39 2009 +0300 Id expansion. commit fca054f00ecd2112b91f858f5499a05b05b9350a Author: Guido Flohr Date: Fri Jun 19 11:33:20 2009 +0300 Id expansion. commit 75c63fbf4ab5325ff7201ae71dfd4104699e5465 Author: Guido Flohr Date: Fri Jun 19 11:32:33 2009 +0300 Git files. commit faaaaf858eae044e74e4ea211c65c9397704a741 Author: Guido Flohr Date: Fri Jun 19 11:31:30 2009 +0300 Id expansion. commit 5b87bfa024a5ec75f8baa75e620154ca7bf2b2c1 Author: Guido Flohr Date: Fri Jun 19 11:30:42 2009 +0300 Id expansion. commit fce083a2c718817f74699327b121a902d5998007 Author: Guido Flohr Date: Fri Jun 19 11:29:41 2009 +0300 Updated. commit 4c94e9591502b9493193133178e65d632f2138dd Author: Guido Flohr Date: Fri Jun 19 11:09:48 2009 +0300 LC_MESSAGES is not defined by POSIX.pm. commit 0ccefe179b97acfe24fba3ebaadb1c24afcfaabb Author: Guido Flohr Date: Mon Jun 15 10:44:53 2009 +0300 Fixed RT bug #46471, noop functions in scalar context. commit 6e1c47cbb74c2f906f0321aa5cfec469f495d223 Author: Guido Flohr Date: Sun Jun 14 22:25:00 2009 +0300 Id expansion. commit badeadfb090fc425997de533147a02aeb37bb21a Author: Guido Flohr Date: Sat Jun 13 10:55:11 2009 +0300 Id expanded. commit 38548adca2ffbea4921ea4a1181ffb548d05f538 Author: Guido Flohr Date: Sat Jun 13 10:52:54 2009 +0300 Expand Id tags. commit d450757330dabd3a8754a92adcec1b6b2e203cb9 Author: Guido Flohr Date: Fri Jun 12 20:58:02 2009 +0300 Point to libintl-perl homepage. commit 5d6bbb6c5783ba0c72a56b55072a9aa370210b8e Author: Guido Flohr Date: Fri Jun 12 20:38:38 2009 +0300 Ignore files commit 7cbaf397fe95d982bc7dcae3ae3ee7587e7d45d0 Author: Guido Flohr Date: Fri May 29 08:44:08 2009 +0000 Explanation for the __'Hello' problem. commit f0aa3c4ef3482a2906fbbbc2a03fdeaa57cf2c17 Author: Guido Flohr Date: Wed May 27 05:13:28 2009 +0000 Bumped version number to 1.19. commit 2187501c12b3ab2cbbd6ce15884e8535a26f976c Author: Guido Flohr Date: Wed May 27 05:13:15 2009 +0000 Fixed extraction of context (thanks to Kevin Ryde). commit ba3b2440f19bcfaefaf40768c34258e2486ce0d2 Author: Guido Flohr Date: Tue May 26 11:23:05 2009 +0000 Added IWL. commit edf87c6177494d7d565c2c1fd24828a3bf764b8f Author: Guido Flohr Date: Tue May 26 09:38:17 2009 +0000 Re-generated. commit 6d8c74e7c354bbe6f93547b659934ecb05cfc535 Author: Guido Flohr Date: Tue May 26 09:37:55 2009 +0000 Updated. commit 948d32ef8183d419ee69edf95429d764a3a84073 Author: Guido Flohr Date: Tue May 26 09:37:43 2009 +0000 Bumped version number to 1.18. commit 9a575f8df218666afcf44e53a358d5c88094a6dd Author: Guido Flohr Date: Tue May 26 09:20:26 2009 +0000 Re-generated. commit a8eef67eace6c815c1ab51d2d58762b7a6351b75 Author: Guido Flohr Date: Tue May 26 09:20:02 2009 +0000 Updated. commit fee27518431d803776ce3ed4632b58da0358f7a2 Author: Guido Flohr Date: Tue May 26 09:16:02 2009 +0000 Make PAUSE happy and leave the version number here. commit 6bfaba08b106819988ed6b26022399ecaf68b577 Author: Guido Flohr Date: Mon May 25 15:03:27 2009 +0000 Re-generated. commit ac391c36e481b107745e7889c91383749d222259 Author: Guido Flohr Date: Mon May 25 15:03:02 2009 +0000 Added search.cpan.org aliases for well-known GNU standards files. commit 4100318a1c8d82b9a709bee2de0cc3088f7438da Author: Guido Flohr Date: Mon May 25 15:02:23 2009 +0000 Create search.cpan.org aliases for well-known GNU standards files. commit 86d66ca65c37a1ba16e7f42fbb6249d8f76b19b3 Author: Guido Flohr Date: Mon May 25 14:59:50 2009 +0000 Aliases for GNU standards files. commit 41bc5f6e7a8516b533d7b7ec2079c3359bb1beb2 Author: Guido Flohr Date: Mon May 25 14:55:58 2009 +0000 Updated. commit a6bd9bd6c2ccd6003af3f178dd29d484baf6eb32 Author: Guido Flohr Date: Mon May 25 14:54:37 2009 +0000 Report version of Encode.pm (culprit in most failures). commit 1726a3afc554a3559d8c9646b2e3fc039b585a40 Author: Guido Flohr Date: Mon May 25 14:51:32 2009 +0000 Macintosh encoding in Encode.pm is seemingly unstable. commit e10e0aeed4939e445cb417cce12fb0dc9a39a753 Author: Guido Flohr Date: Mon May 25 14:33:29 2009 +0000 LGPL 3? commit bf1b13056cb96bf65903ada6cc4ac991ae77e69f Author: Guido Flohr Date: Mon May 25 14:29:08 2009 +0000 Changed copyright date. commit 466dc354d2061cf9ce8e1c2cc4c923624f6bd0f2 Author: Guido Flohr Date: Mon May 25 14:28:19 2009 +0000 - Added N__p(). - Added N__np(). - Removed N__xpn(). commit 1ace1ec34ef24e2d66127d8238ba946f17a6086b Author: Guido Flohr Date: Mon May 25 14:22:27 2009 +0000 Added alpha notice to Locale::Util. commit 269779d48fce1551fe73b2f49b605b16d65976c1 Author: Guido Flohr Date: Mon May 25 14:21:51 2009 +0000 Also include contextual strings. commit c23f57b47e0fad076c73f05c1ff5fd16f803813d Author: Guido Flohr Date: Mon May 25 14:12:09 2009 +0000 First release for new functions. commit 6a6733cf51261a885f573f0a69c32ba66658a358 Author: Guido Flohr Date: Mon May 25 14:09:17 2009 +0000 Added first release for new functions. commit 1511b8ca2fefc8cb0d5ff77987d044e53fd1ad83 Author: Guido Flohr Date: Mon May 25 14:08:20 2009 +0000 Added alpha notice. commit 1f3e7d99f61a01e5c1a2ea767e4614171f648eca Author: Guido Flohr Date: Mon May 25 14:07:41 2009 +0000 Added alpha notice. commit 704058c5e7b6dbe6d3f614f30a2b4e7c2591d808 Author: Guido Flohr Date: Mon May 25 14:07:16 2009 +0000 Added cover_db. commit 7d15c54561da67283721dfcd281eacd6e0c7daec Author: Guido Flohr Date: Mon May 25 13:51:53 2009 +0000 Spelling. commit f007d7a7587567bacda4bed8b0c5054d2c17bcc5 Author: Guido Flohr Date: Mon May 25 13:50:37 2009 +0000 Kudos to Joshua for the context functions. commit 80c3820c24ee28282815d53063ca4d2e5a9108fb Author: Guido Flohr Date: Mon May 25 13:48:41 2009 +0000 Context example. commit 817636a84f60080f8352a9b52cc2689291fc85e7 Author: Guido Flohr Date: Mon May 25 13:46:04 2009 +0000 More context examples. commit cf0054e50cd65687455755dd722fd8facb0455d8 Author: Guido Flohr Date: Mon May 25 13:36:30 2009 +0000 Avoid n't. commit 1a799324077e0c4ef08f5d60b187cd22b9b06c55 Author: Guido Flohr Date: Mon May 25 13:22:31 2009 +0000 Switch language for server applications. commit 1433b538a8509adeb7a73bd11b9416816501dcbd Author: Guido Flohr Date: Mon May 25 13:21:27 2009 +0000 Made code parsing the plural formula more robust. commit 7c773a522f7e831eab4e21edc2883245f01d9dc8 Author: Guido Flohr Date: Wed Nov 19 19:25:15 2008 +0000 Fixed German translations. commit e4416eb0c79427d0a399b67dfda9632059cee202 Author: Joshua Miller Date: Wed Nov 19 18:55:51 2008 +0000 Completed support for contextual gettext calls. commit 4c0334cf7514693c07df3463737e93386e6ea87a Author: Joshua Miller Date: Wed Nov 19 18:55:21 2008 +0000 pgettext, dpgettext, dcpgettext, npgettext, dnpgettext, dcnpgettext, commit d88bd08e8fbd4a4879a832ae0e220ad64e279c28 Author: Joshua Miller Date: Wed Nov 19 18:15:37 2008 +0000 Updated with info for unrtst/Joshua Miller commit 81523d440cc7e04277c0886b101d27adeaccdd04 Author: Guido Flohr Date: Fri Jul 18 13:03:37 2008 +0000 select_package() is not a class method (reported by Sergei Vishenski). commit 9943078cf431beacbd6c7008db3bd69de8aa1474 Author: Guido Flohr Date: Wed May 28 12:41:17 2008 +0000 We need both libraries, not just one of them. commit e8e3707f60ce7d2df4680eb0644fd94b4dcc2cdd Author: Guido Flohr Date: Tue Jul 3 08:15:45 2007 +0000 Corrected POD. commit 126a849722d743709c393badde6df28129d24348 Author: Guido Flohr Date: Mon Mar 26 17:18:29 2007 +0000 Don't forget to actually set the cached locale. commit f4f78e8c83f6b8e7995916700659c93e6267f1f5 Author: Guido Flohr Date: Sun Feb 11 16:49:45 2007 +0000 Filter out un-available languages. commit 939e059af2fc8547dbfd808356a0cc68b7ccaab0 Author: Guido Flohr Date: Sun Feb 11 16:05:25 2007 +0000 Fixed POD error. commit d23f50e3d767df21a94989cb60d3c899b5b59f0e Author: Guido Flohr Date: Sun Feb 11 11:53:59 2007 +0000 Restrict set of acceptable languages. commit 20b18aa9cdf756fbc360e0335c55c26a6c7c2920 Author: Guido Flohr Date: Sun Feb 11 11:18:24 2007 +0000 Removed erroneous source. commit ce3f99c7f5148a65b6c2543c3ff45ede3129a972 Author: Guido Flohr Date: Sun Feb 11 11:17:43 2007 +0000 Updated default countries for languages. commit b925b093b27d94bca0b0f540264dd40633af016c Author: Guido Flohr Date: Thu Feb 8 09:07:00 2007 +0000 Fixed warnings about undefined values. commit 831f0176dc7ee03d19a995b65e004b8e70afd4cd Author: Guido Flohr Date: Wed Feb 7 15:40:41 2007 +0000 Aliased loop variable was constant and read-online. commit f3b5053efdc9b9e96da223e827cd2660dce5a3c0 Author: Guido Flohr Date: Wed Feb 7 15:26:28 2007 +0000 Extended search for correct locale required by FreeBSD. commit f0274d300da5b6d65fdc7a2a1a19fa8b8f3c3d1c Author: Guido Flohr Date: Wed Feb 7 09:48:41 2007 +0000 Return information about actually selected locale in set_web_locale(). commit 3d6cc08a80c73d9bff09cbd0908f07f18d6fc2eb Author: Guido Flohr Date: Tue Feb 6 21:56:02 2007 +0000 Strip leading and trailing whitespace on TEXTDOMAIN variable. commit 6fa39e7bb249b6504d2309dee4fddfd27c27caa0 Author: Guido Flohr Date: Tue Feb 6 21:36:10 2007 +0000 New file. commit ccb33a20e1636ab23c5eae3ab1701fcd875342b6 Author: Guido Flohr Date: Tue Feb 6 21:35:29 2007 +0000 Remove build_xs in target "clean". commit 67849b5b7ee817b3718c3e71a2c83a8451055580 Author: Guido Flohr Date: Tue Feb 6 21:34:25 2007 +0000 updated commit 2c4297d77e8cb0611a41411407bc44530dfcbf21 Author: Guido Flohr Date: Tue Feb 6 21:33:27 2007 +0000 New function set_web_locale(). commit 03bef854c000faa7c3c3d2436b1d12b16272028e Author: Guido Flohr Date: Tue Feb 6 20:06:46 2007 +0000 Use Locale::Util::set_locale() for more portable locale setting. commit 78ce31af69f058979b0deb82564e367041f58b24 Author: Guido Flohr Date: Tue Feb 6 18:43:39 2007 +0000 - avoid warnings - turned off debugging - clean-up commit 5a1726cfc4b8317576f019d740f1d307e4c8b142 Author: Guido Flohr Date: Tue Feb 6 16:46:17 2007 +0000 docs commit 5e446a3d0cefcb9e2a6a702e731c0269a844c313 Author: Guido Flohr Date: Tue Feb 6 16:44:43 2007 +0000 - access to the locale cache - updated docs commit 5e6093544cecad3d02aca69200bdfbbc43904b04 Author: Guido Flohr Date: Tue Feb 6 16:14:45 2007 +0000 Support for MS-DOS commit a98324ae994e478d4a41062791f6f5d6639aaf19 Author: Guido Flohr Date: Tue Feb 6 13:41:26 2007 +0000 half-implemented Windows version commit b1673b78f51cc54cb0268109dac982260fba4a98 Author: Guido Flohr Date: Tue Feb 6 13:21:44 2007 +0000 safe locale setting for Unix commit 3856ec2d9753c5b1211c991e1b625c0e00ec69b2 Author: Guido Flohr Date: Tue Feb 6 10:55:44 2007 +0000 new commit 51f390f192f0771bd2a45cfd7bdf8e586b4374e1 Author: Guido Flohr Date: Tue Feb 6 10:45:49 2007 +0000 work in progress commit d9b3d08b35c901d76ccd84bba959463b7c740256 Author: Guido Flohr Date: Tue Feb 6 10:45:06 2007 +0000 new commit 7616726fe427dd273c2611b0230d1feb788ece28 Author: Guido Flohr Date: Mon Feb 5 10:38:41 2007 +0000 Hint to avoid trailing space commit dc21877a731e2d278534db19555e01df7b1ade6b Author: Guido Flohr Date: Mon Feb 5 09:45:51 2007 +0000 interpolate filename and linenumber commit 4d80c14b9d1fecdfd4a91cd4636195411102c9fb Author: Guido Flohr Date: Fri Feb 2 15:13:07 2007 +0000 avoid warning if textdomain is undef commit f393d961f9fca199285ad72ff16e7b12e32712d9 Author: Guido Flohr Date: Fri Feb 2 15:12:28 2007 +0000 Try to detect incorrect usage of the tied gettext hash. commit 4a9f1abd593efe70c923ef698b83e12ff57f32fd Author: Guido Flohr Date: Wed Jan 24 13:45:44 2007 +0000 always make a copy of the list of search directories commit 9c34ef40c4dc81a3360505a3905615933d953f63 Author: Guido Flohr Date: Wed Jan 24 11:51:41 2007 +0000 podified FAQ commit e5a3074c39a29b93ab169614aeec9227e63c9352 Author: Guido Flohr Date: Wed Jan 24 11:51:00 2007 +0000 cvs2cl now expected in $PATH. commit 92033336f9e4e845ee72e079f99e0d293c9a5d58 Author: Guido Flohr Date: Wed Jan 24 11:25:46 2007 +0000 podify FAQ commit 505f752e8e3b54a721bafb915f75eaebc3206cf0 Author: Guido Flohr Date: Wed Jan 24 11:10:24 2007 +0000 Updated copyright date commit caca17b9cfb98130bc5b94c4e184fba15202acb8 Author: Guido Flohr Date: Wed Jan 24 11:06:56 2007 +0000 changed name of license file to COPYING.LESSER commit fe298aa7d8b5647344f52f9106c17f50d10c2cf0 Author: Guido Flohr Date: Wed Jan 24 11:05:32 2007 +0000 updated commit e0705b495f261ba02c5bc663da869118e6ff882e Author: Guido Flohr Date: Wed Jan 24 11:03:55 2007 +0000 Skip test if require Austrian locale is not available (thanks to Pascal Terjan for the hint). commit 50485e2fe6c7d84caf9a7160c3e372ef468ddd19 Author: Guido Flohr Date: Wed Jan 24 11:02:07 2007 +0000 added simple hash commit 54f782e885e7baec2f2a51af92d82207df24c02b Author: Guido Flohr Date: Fri Nov 18 10:34:26 2005 +0000 unlink "xs_disabled" with "make clean" (thanks to Peter Eisentraut) commit 1e82f1773f1f1976a6bfc38ff20a833f292ba3c9 Author: Guido Flohr Date: Tue Sep 27 23:41:26 2005 +0000 updated commit 1155e2f0e2aa584bc1eae3166a1dcf2e1a90109e Author: Guido Flohr Date: Tue Sep 27 23:33:28 2005 +0000 updated commit 0822a0a942d15ff1bb534618ff09551a3173ba65 Author: Guido Flohr Date: Tue Sep 27 23:33:10 2005 +0000 minor revision commit 94916ec93dfeed975096b753bde0b1162490b4c4 Author: Guido Flohr Date: Tue Sep 27 23:29:37 2005 +0000 bumped version number to 1.16 commit 77204847225ac24848851c490ab016ac9b4c0783 Author: Guido Flohr Date: Tue Sep 27 23:25:40 2005 +0000 allow call to textdomain without argument commit be7db9db776ec4b3b555286f2155349195c12eea Author: Guido Flohr Date: Tue Sep 27 23:16:23 2005 +0000 fixed typo that prevented xs tests from being run commit 7734da97cbda7d15fe58ac4fd85960288dc7e41f Author: Guido Flohr Date: Tue Sep 27 23:11:23 2005 +0000 refactoring: change argument order for callback commit c4505ed7d2847332ed540a68a9e6bb502c9f0bfa Author: Guido Flohr Date: Tue Sep 27 21:40:37 2005 +0000 implemented turn_utf_8_on() commit bbfc9736b0b4e002ac96f6a149a79c7008983326 Author: Guido Flohr Date: Tue Sep 27 18:53:34 2005 +0000 added function bind_textdomain_filter commit dc09a1dc4c6fab5f45843fc119ee0bf9d206021e Author: Guido Flohr Date: Tue Sep 27 17:13:45 2005 +0000 minor changes commit 865ab6074a79dbc03762c934d84127a8d50ed344 Author: Guido Flohr Date: Tue Sep 27 17:13:34 2005 +0000 grammar commit 67cfd4dbbafbfd77208541ec534d4502f47f574a Author: Guido Flohr Date: Tue Sep 27 17:12:42 2005 +0000 updated commit e6f084d85529b10017c87178f412dc49069c349c Author: Guido Flohr Date: Tue Sep 27 15:36:23 2005 +0000 added FAQ commit a42ee62abc20508b7db083a468dffd977c4a6a8e Author: Guido Flohr Date: Wed Aug 31 23:23:24 2005 +0000 avoid running tests for obsolete XS versions commit be318b5657805fd595085a4d4fc5e9d231da44ef Author: Guido Flohr Date: Wed Aug 31 23:22:39 2005 +0000 updated commit 98fb924198a4b257e8c6776d2692f86be3c81b01 Author: Guido Flohr Date: Wed Aug 31 22:50:37 2005 +0000 updated commit d9449b19dc36a6967708646538652057f2cf9896 Author: Guido Flohr Date: Wed Aug 31 22:48:39 2005 +0000 bumped version number to 1.15 commit 322feedf5b7448cc970df0b00934a36d60e4e139 Author: Guido Flohr Date: Wed Aug 31 22:47:57 2005 +0000 - bug fix: Prevent users (for example the test suite) from loading an obsolete XS version, although a version mismatch was detected earlier - warnings about non-ascii message ids commit 5e29992c8b208c345a37cc34471532ad4130c1c6 Author: Guido Flohr Date: Wed Aug 31 22:45:16 2005 +0000 hint for the courageous Solaris user commit 9ae0d0184ae9bf75329035cc175a33664defcf72 Author: Guido Flohr Date: Wed Aug 31 22:44:03 2005 +0000 Solaris ... commit 4c4993a7217b83428642557f7796a7243a166689 Author: Guido Flohr Date: Wed Aug 31 22:41:31 2005 +0000 Life is complicated under the sun, ain't it? commit db256ddc07ea2153e21dad0a012d00ab9aeff89d Author: Guido Flohr Date: Wed Aug 31 21:21:30 2005 +0000 workaround for misconfigured (Solaris) systems commit f577142a27741af81adf13eb7873d3a56c0ced6d Author: Guido Flohr Date: Wed Aug 31 21:20:13 2005 +0000 updated commit bcc9454cd1a7f8cb54a2ac9dbdc9f4ba3cffe073 Author: Guido Flohr Date: Sun Aug 21 15:39:18 2005 +0000 removed all.pot from sample directory commit d6cd7f7348d867a1eb60cd0a780966426b71e4b1 Author: Guido Flohr Date: Sun Aug 21 15:38:30 2005 +0000 bumped version number to 1.15 commit ecf0117aa4456bea51f8e9e300ed46a4b46eb848 Author: Guido Flohr Date: Sun Aug 21 15:35:38 2005 +0000 updated commit 498cca7e60c1f89f471a6238999cefc6262116fd Author: Guido Flohr Date: Sun Aug 21 14:57:13 2005 +0000 re-generated commit 3e2e7bef39d6108c0e07f21d85f4eba9ee5d4cc2 Author: Guido Flohr Date: Sun Aug 21 14:55:49 2005 +0000 - updated, Perl support for gettext should now be standard commit 59dfcddb864df8e7ecdb90b140f0488538fe9d68 Author: Guido Flohr Date: Sun Aug 21 14:55:02 2005 +0000 added comment abouut 8 bit message ids commit 992740a078f92d91d35e0e7b41c1cee7de57c362 Author: Guido Flohr Date: Tue Aug 16 15:44:34 2005 +0000 not needed commit 5aa56bfcee9ab542f840132a7389724dc48ef2c9 Author: Guido Flohr Date: Tue Aug 16 15:44:04 2005 +0000 msgid strings now come from libintl-perl, not from Crypt::Twofish_PP commit 3c7b16132ec5dff6dd69827943510fe846d1ae2c Author: Guido Flohr Date: Tue Aug 16 15:38:00 2005 +0000 should not be included in CVS commit f570932a33933a1baddb97333526adf5f898e2c2 Author: Guido Flohr Date: Tue Aug 16 15:35:00 2005 +0000 Reference the files from the correct package. commit 50f751e64f37461b3e4c9a80a0f9018aa5ee4335 Author: Guido Flohr Date: Tue Aug 16 15:34:15 2005 +0000 new command line parameters for xgettext commit 405bd46deaef0e0ccd249f7cba1388bcb998fa44 Author: Guido Flohr Date: Thu Aug 11 15:27:46 2005 +0000 re-generated commit 4d55c023f1ba0ba1823766c34c39ce4e84ffc455 Author: Guido Flohr Date: Thu Aug 11 12:27:22 2005 +0000 regenerated commit f36208df3536056b31af04054c3d06cf5b25e897 Author: Guido Flohr Date: Thu Aug 11 12:25:57 2005 +0000 bumped version number to 1.14 commit 1fde19cf4c8c493983f904b5a2188ae9b6ae2b1a Author: Guido Flohr Date: Thu Aug 11 08:57:05 2005 +0000 use correct linker flags commit fa9d31d14d2bd1a4f88a6d7688aadd6a35b20626 Author: Guido Flohr Date: Thu Aug 11 08:43:33 2005 +0000 updated commit 7f9cdcd5318bf68099dd543dea46207a7fb41a88 Author: Guido Flohr Date: Wed Aug 10 21:08:17 2005 +0000 bumped version number to 1.12 commit b2815ee57f017ed22c3440b5ec8f1815f0357442 Author: Guido Flohr Date: Wed Aug 10 21:01:46 2005 +0000 added feedback section commit 5d393a03a91d54c50d237e25e7b717e6a767eaca Author: Guido Flohr Date: Wed Aug 10 21:01:30 2005 +0000 updated commit 3a4f51d516db453deb54ead6c10baea987074679 Author: Guido Flohr Date: Wed Aug 10 21:00:48 2005 +0000 updated commit af37fcb6f22046231f4fe92aa16cac738c470c86 Author: Guido Flohr Date: Wed Aug 10 20:20:04 2005 +0000 avoid failures because of missing locale definitions commit 20ef1b10a67afd1f46722cf36ac7e5f5b4851f5c Author: Guido Flohr Date: Wed Aug 10 17:50:41 2005 +0000 allow to switch languages (thanks to Jan Kratochvil for the hint) commit f1b49b1885ed3f3f17f36b5baea7c4171eb4fda4 Author: Guido Flohr Date: Wed Aug 10 17:48:37 2005 +0000 regenerated commit 181f07046f0a676b465a510f83e71938a6be65f0 Author: Guido Flohr Date: Wed Aug 10 17:48:13 2005 +0000 Austrians have their own version of February. commit 2a51cc2648b320b5ebcc802c774f71489b3522df Author: Guido Flohr Date: Wed Aug 10 17:47:39 2005 +0000 added plural header commit 88e965fbf1dd28a2820647fb2a82487159b0a041 Author: Guido Flohr Date: Wed Aug 10 17:47:00 2005 +0000 updated commit 81e380315b45e43e94cec45fffb1ae3516052be3 Author: Guido Flohr Date: Wed Aug 10 13:59:38 2005 +0000 clarifications for changing the language via environment (solves issue https://rt.cpan.org/Ticket/Display.html?id=13957) commit 344f02ecb88f8129eccfd07826014a3c80b46d6f Author: Guido Flohr Date: Tue Jul 20 14:31:07 2004 +0000 default textdomain is now determined by Locale::Messages::textdomain(). commit a5ab66861a7b05d485684f9066ba94666946db2e Author: Guido Flohr Date: Fri Jun 11 11:13:37 2004 +0000 bumped version number to 1.11 commit a3d794088c2bbc11c7498f970987f1e087a05bca Author: Guido Flohr Date: Fri Jun 11 11:06:09 2004 +0000 added proper headlines for manual pages commit 98f5963e8b9830722565f3cfb3a741f95a9187a9 Author: Guido Flohr Date: Fri Jun 11 10:54:31 2004 +0000 - add default directories /usr/share/locale resp. /usr/local/share/locale to search path if they exist (reported by Cao Hongija) - changed default textdomain to 'messages' - fixed warning that occured when the import() method is not properly called commit 26eb04839a60d953aaded5412dbc227b408042de Author: Guido Flohr Date: Tue Apr 20 16:38:32 2004 +0000 fixed vim line commit 9faf482ad734c46a360fee8b9d4677d58199b9dd Author: Guido Flohr Date: Thu Jan 15 13:50:47 2004 +0000 Oops... commit 68c44448609db9e52edff44f99f9eb868c4abb9a Author: Guido Flohr Date: Mon Jan 12 12:27:53 2004 +0000 removed dynamic_config (not recognized?) commit a3487c002a66e51eba9358635ab75683a65ea11d Author: Guido Flohr Date: Mon Jan 12 12:26:48 2004 +0000 added dynamic_config commit cc7de769f72df67886e7bbbf1706bc0a663fe5cf Author: Guido Flohr Date: Mon Jan 12 12:09:50 2004 +0000 added statement by Bruno Haible regarding MSVC 7.0 commit 00dfb762c987acfdca6977bf968ea789ace3a12c Author: Guido Flohr Date: Mon Jan 12 12:08:14 2004 +0000 added README.win32 commit a693a0b1bf41bd2f0c93ffd6bc7a04ba250f123c Author: Guido Flohr Date: Mon Jan 12 12:07:41 2004 +0000 new commit de5efc61842f973d2c525417aba4ab3a30487ca4 Author: Guido Flohr Date: Mon Jan 12 12:04:29 2004 +0000 fixed typo commit 6c1bfb46ffa20f167a23d5cb48b46f2f874f7d33 Author: Guido Flohr Date: Mon Jan 12 12:03:42 2004 +0000 bumped version number to 1.10 commit c50ccdb3092b31a9963b62c288e18a2f718b88e9 Author: Guido Flohr Date: Mon Jan 12 11:17:12 2004 +0000 $LANG must be set in environment with $LANGUAGE commit 1255ff1b1366b776b5dbf75ae57409986df79e51 Author: Guido Flohr Date: Mon Jan 12 11:16:28 2004 +0000 use nl_putenv(), not %ENV commit 8722d9ca0cb0d4890259de4e8eeeb4a539b56b84 Author: Guido Flohr Date: Mon Jan 12 11:15:43 2004 +0000 - fixed prototype for _nl_putenv - use _putenv() instead of putenv() (educated guess) commit 8e45c0258324514d6824f84f3d1f6ec56eabf054 Author: Guido Flohr Date: Mon Jan 12 11:14:13 2004 +0000 updated commit 08e57e925e718f8c59bc3d0016743f9ad8ba25df Author: Guido Flohr Date: Mon Jan 12 11:13:56 2004 +0000 renamed COPYING.LIB to COPYING.LESSER to prevent deletion for make clean commit 00950623fa70045def4bd37552fde65ed398c357 Author: Guido Flohr Date: Thu Jan 8 19:50:36 2004 +0000 compatibility tweaks for MS-DOS, use nl_putenv instead of %ENV commit d01abac71b2835fdce00e6fb2acd8f9d5c96c2a3 Author: Guido Flohr Date: Thu Jan 8 19:49:23 2004 +0000 fixed another typo commit d64ce9d2fa5f8230ed64b9a75ee1bdfb134b44e7 Author: Guido Flohr Date: Thu Jan 8 19:12:10 2004 +0000 fixed typo commit 9710388858700f5911159d1422735c9a42af68e9 Author: Guido Flohr Date: Thu Jan 8 19:11:44 2004 +0000 File::Spec required again commit e950f5f52537c42fcfd7f6cd35dd76e6f29e8498 Author: Guido Flohr Date: Thu Jan 8 18:38:20 2004 +0000 - let bindtextdomain() take care of normalized paths - compare normalized paths commit 005d90374d2e7cb524d319d801fb9ce93d839269 Author: Guido Flohr Date: Thu Jan 8 18:09:17 2004 +0000 do not use hard-coded locale identifiers in calls to setlocale() commit 9904ca2a4056d036b2bfdffba8a81e4da24baff4 Author: Guido Flohr Date: Thu Jan 8 17:48:58 2004 +0000 set OUTPUT_CHARSET for compatibility commit 3952cce2b0598958409f667ed2b3f4f7e9f0e9c2 Author: Guido Flohr Date: Thu Jan 8 17:48:24 2004 +0000 added META.yml commit eca09230388485d45e111ae942518222cc367574 Author: Guido Flohr Date: Thu Jan 8 17:39:07 2004 +0000 new commit fb0b27bb167da74b7bc50698b3c252a8e11cc361 Author: Guido Flohr Date: Thu Jan 8 17:25:57 2004 +0000 Happy New Year! commit 96aff21b8d489c3a5360f899b974539f456bf997 Author: Guido Flohr Date: Thu Jan 8 17:24:22 2004 +0000 File::Spec is required for the XS version commit bef83e700741297244631b4a65647dd93b155231 Author: Guido Flohr Date: Thu Jan 8 17:20:11 2004 +0000 new function nl_putenv() for MS-DOS ideosyncrasies commit e49c26083e1ee949162158b3052970c64b900744 Author: Guido Flohr Date: Thu Jan 8 17:14:15 2004 +0000 do not require the variable _nl_domain_bindings for building the XS version commit d9c26134930b48cd3009ae0b2f1ab9f28af57ac0 Author: Guido Flohr Date: Thu Jan 8 13:32:48 2004 +0000 convert directory to local convention for Locale::gettext_xs::bindtextdomain commit fe782c9a491dafa748cf7e571ca32ac657d11bf3 Author: Guido Flohr Date: Fri Jan 2 18:18:08 2004 +0000 moved tests/locale to tests/LocaleData commit 529168ee39ffefde2e57804826b3320fbc0977f5 Author: Guido Flohr Date: Fri Jan 2 18:10:03 2004 +0000 compatibility tweaks commit 6cc50aa0c92e1cf2b9bfc854ad476da583f8a75a Author: Guido Flohr Date: Fri Jan 2 17:55:15 2004 +0000 moved tests/locale to tests/LocaleData commit 8d210b1a89ba1ab0e0912dfbf77c95c1f4d241f1 Author: Guido Flohr Date: Mon Dec 29 19:04:11 2003 +0000 updated commit e8c1de1158b55251fcc586e4ab65ad848d51fddb Author: Guido Flohr Date: Mon Dec 29 19:03:32 2003 +0000 #re-generated commit 96f3d464850482785064c410bdcc0554e9a2c59a Author: Guido Flohr Date: Mon Dec 29 19:02:57 2003 +0000 updated commit e8bf6a3bd0807fa37a4bc014d8e9ad193c9fd063 Author: Guido Flohr Date: Mon Dec 29 19:01:00 2003 +0000 - fixed pod typo - bumped version number to 1.09 commit b30d448b0ac915f8dc41e2897f6a20a271b57f3c Author: Guido Flohr Date: Mon Dec 29 19:00:19 2003 +0000 use user supplied locale name when guessing character set commit 650c5bf9e6afc65c6bfb7bfd5596b7f683f2df74 Author: Guido Flohr Date: Mon Dec 29 18:59:33 2003 +0000 check for correct XS version commit c7dcfd1c58f4d578bed64286cffa050308492865 Author: Guido Flohr Date: Mon Dec 29 18:53:51 2003 +0000 *** empty log message *** commit 359dee052afb8b3bb996a476e12e92d2d006e205 Author: Guido Flohr Date: Tue Dec 23 15:22:58 2003 +0000 - various corrections - newer Atari versions seem to place the euro sign at 0xde (not 0xee), thanks to Jo-Even Skarstein and Gerhard Stoll for the information commit f8fcd9efc687d3652fa25777882c606da2e78542 Author: Guido Flohr Date: Tue Dec 23 15:21:58 2003 +0000 various corrections commit 893ef72fa60a5bd710ad769eeb37f048ad3bd8a5 Author: Guido Flohr Date: Tue Dec 23 15:07:50 2003 +0000 updated to new Makefile logic commit dd9ed652a7dff19f66ac3b4bcb6c8f758080f70f Author: Guido Flohr Date: Sun Nov 30 18:47:39 2003 +0000 #re-generated commit 41aadaa48717ee8b1705514d49d732f00ef721db Author: Guido Flohr Date: Sun Nov 30 18:47:20 2003 +0000 deleted reference to unwritten docs on let.imperia.org commit 671424282b2f7e4d6ca662765ca42c2988225af0 Author: Guido Flohr Date: Sun Nov 30 18:45:47 2003 +0000 #re-generated commit f1a607ba85734f66dbe101117cc4112877f695e4 Author: Guido Flohr Date: Sun Nov 30 18:45:15 2003 +0000 bumped version number to 1.08 commit 8eb2d41c5dba3a1cd879e7ba69b6ce2257a40b3b Author: Guido Flohr Date: Sun Nov 30 18:44:16 2003 +0000 updated commit 15a5e90cce1596d6c65f5ddd3d184956e28833e5 Author: Guido Flohr Date: Sun Nov 30 18:35:45 2003 +0000 fixed bug #4512 on https://rt.cpan.org/ commit d3efb4df5baf9be1b3ef9042dbcc5ab54033c1e6 Author: Guido Flohr Date: Fri Nov 28 16:47:53 2003 +0000 # re-generated commit d053ec4d5b7636f1dff68ee5807331afdd82e6da Author: Guido Flohr Date: Fri Nov 28 16:47:32 2003 +0000 bumped version number to 1.07 commit 3c638d6f18a90de809c93218bb175f04e323cf40 Author: Guido Flohr Date: Fri Nov 28 16:47:09 2003 +0000 removed BUGS (only known bug should be fixed now) commit 7ef5325f54f609d2eedc3dc4eb9f5b377c84bc66 Author: Guido Flohr Date: Fri Nov 28 16:13:59 2003 +0000 updated commit 9dffdc0e8ed7f0f94f05f5ae2bab01267c36a061 Author: Guido Flohr Date: Fri Nov 28 16:09:35 2003 +0000 - only call I18N::Langinfo methods for validated locales - allow 'utf8' as an alias for charsets derived from locale ids commit 6b678aed4ae34a7ac1a3fe88f7ed9e0f473edb53 Author: Guido Flohr Date: Fri Nov 28 16:06:23 2003 +0000 redirect configure output to config.log commit ebad0a4a42b3b9d8a2658c2e1f81bea009213aea Author: Guido Flohr Date: Fri Nov 28 16:05:56 2003 +0000 export turn_utf_8_off() commit 5713cb3f8e80ecfe1a63b69c719c4a8e272e9df8 Author: Guido Flohr Date: Fri Nov 28 16:05:17 2003 +0000 removed debugging noise commit 6cd2fd4d840fdc190897862ed911595ff9ad0e19 Author: Guido Flohr Date: Mon Nov 24 18:14:43 2003 +0000 updated commit 6e295d894f295f21fb593b493e35ce39a340e739 Author: Guido Flohr Date: Mon Nov 24 15:32:57 2003 +0000 # re-generated commit 82b1dcd960cdd6e44707e1a67ca44a799f16c513 Author: Guido Flohr Date: Mon Nov 24 15:32:22 2003 +0000 bumped version number to 1.06 commit b6304eddd6a8de78c15f7d8e578ffc2ab0648ed2 Author: Guido Flohr Date: Mon Nov 24 15:32:01 2003 +0000 added pod commit 3d453667e0ce5fb73db6cffb01e15037e2ce391e Author: Guido Flohr Date: Mon Nov 24 15:31:45 2003 +0000 updated commit cb5f542294ed9e0b06884ed15a48723e4916de0e Author: Guido Flohr Date: Mon Nov 24 13:57:31 2003 +0000 avoid warning without I18N::Langinfo commit 768e462e68cf0ac11ded8fbbde2973e381f7c67b Author: Guido Flohr Date: Mon Nov 24 13:57:06 2003 +0000 updated commit e364d5cea8988411d722fba8e4a19ef5c4a9011f Author: Guido Flohr Date: Mon Nov 24 13:32:08 2003 +0000 all package-dependent information now goes into one single file PACKAGE commit 1b1ae257272061574a876cf237b9e41ab61b94bb Author: Guido Flohr Date: Mon Nov 24 13:31:35 2003 +0000 do not include -liconv twice commit 83afc89979ad580bd72397fef54e49e0e5471f15 Author: Guido Flohr Date: Mon Nov 24 13:25:07 2003 +0000 put all package-dependent information into single file PACKAGE commit 9f7ce161d046cf3575a4ffb1871a79974e118cce Author: Guido Flohr Date: Fri Oct 10 15:38:09 2003 +0000 check for version match (do not load stale XS versions at run-time) commit 57d4868e6df338581cd5acf52255dc9af5efbe13 Author: Guido Flohr Date: Fri Oct 10 15:15:07 2003 +0000 # re-generated commit c0a190824e3c2f6b0f35ac42995adfd0bb0ff8dd Author: Guido Flohr Date: Fri Oct 10 15:14:46 2003 +0000 added commit cec4989599c6fbc6a1ee7d3c50e9c31545563baf Author: Guido Flohr Date: Fri Oct 10 15:13:54 2003 +0000 # re-generated commit 7b532d29745f225f1c43db2b33ccd0b59aaed912 Author: Guido Flohr Date: Fri Oct 10 15:13:04 2003 +0000 bumped version number to 1.05 commit ef0fac1eaea213c7431528283021d7fc359eb7d6 Author: Guido Flohr Date: Fri Oct 10 15:12:43 2003 +0000 removed junk file commit 40c92cd26258b01bbfb61003d6e4d505375d7312 Author: Guido Flohr Date: Fri Oct 10 15:12:14 2003 +0000 fixed compatibility problems with Solaris 8 and above commit 518dcf13f47275c1765770cd8cb9e118e2e8865b Author: Guido Flohr Date: Fri Oct 10 13:03:51 2003 +0000 removed Artistic commit 7e74fc8464b6d1321ece5b66b67cac8b45e88c2e Author: Guido Flohr Date: Fri Oct 10 10:11:55 2003 +0000 fixed typo commit 7ce76b243624a7c0c771ebe3ac26c34cf0ddb6df Author: Guido Flohr Date: Fri Oct 10 10:10:47 2003 +0000 obsolete commit cebc8fd0efbd150844c443508b17a90829483e5c Author: Guido Flohr Date: Thu Oct 9 15:06:36 2003 +0000 # regenerated commit 3e054d33c8e198aeff1c323b3d47ce0eb5a9c6e6 Author: Guido Flohr Date: Thu Oct 9 15:05:53 2003 +0000 bumped version number to 1.04 commit a767a6eea5bc809fe757c1167ce46a670597a3cc Author: Guido Flohr Date: Thu Oct 9 15:05:24 2003 +0000 updated commit e08f698af8ee7997e808e531677a8d41bb488826 Author: Guido Flohr Date: Thu Oct 9 11:35:02 2003 +0000 updated commit 0283847dbf6a57eb226f188b73210464f117a0d7 Author: Guido Flohr Date: Thu Oct 9 11:34:48 2003 +0000 - support for language chain syntax in $LANGUAGE - performance tweaks commit a0e20cf2ab383e01bc8d65d09f366adb9c6e83e3 Author: Guido Flohr Date: Thu Oct 9 11:34:20 2003 +0000 clarification commit 764256e92fc24d775a853b2e4c4bdce7c9eac864 Author: Guido Flohr Date: Thu Oct 9 11:33:46 2003 +0000 support for language chains in $LANGUAGE commit 1ad559f4f6b178e6969e5a28b0b130080dc82d2e Author: Guido Flohr Date: Wed Oct 8 11:13:00 2003 +0000 updated commit 3fc5262f0ead23db4c94d7ff23f745d0f53fe31b Author: Guido Flohr Date: Wed Oct 8 11:12:52 2003 +0000 do not use Encode's iso-8859-11 (broken in some Encode versions) commit 6d8e3b013808aaa686b615c7cf7e8c0f2dbf9185 Author: Ingrid Graefen Date: Wed Sep 24 10:50:18 2003 +0000 localize $@ with checks for availability of I18N::Langinfo and POSIX::LC_MESSAGES commit f0fa2372159719b8c2745a4ccbd81ce1cb32d06c Author: Guido Flohr Date: Mon Sep 15 12:14:23 2003 +0000 re-generated commit fc93d014341a25aa0faacb69ffc664b0fe1e157a Author: Guido Flohr Date: Mon Sep 15 12:13:53 2003 +0000 bumped version number to 1.03 commit 216fef571dbd8b2c3e4fdf07cfcf72dc4ee8a0b2 Author: Guido Flohr Date: Mon Sep 15 08:21:45 2003 +0000 alternative XS version commit ff00ea58ab14732727847a83e8a066ea1cfe5439 Author: Guido Flohr Date: Wed Sep 10 18:29:13 2003 +0000 test file for gettext support commit 8d3d9f71ea1fa6df176455863874ff83074768a3 Author: Guido Flohr Date: Wed Sep 10 17:03:33 2003 +0000 - switched from double license to single license (LGPL) in order to avoid licensing problems - fixed POD commit 4345e730105c274c19192ecf0640b43e09d2dc9a Author: Guido Flohr Date: Wed Sep 10 16:27:22 2003 +0000 workaround for broken Encode versions commit f3e4106c7675e0ee072ad0d4493eb10d8d77448d Author: Guido Flohr Date: Wed Sep 10 16:26:40 2003 +0000 changed from double license to single license (LGPL) commit 9d767c894cf06d2700baeb1d33fa31c1db939f47 Author: Guido Flohr Date: Sun Sep 7 19:45:32 2003 +0000 removed second block of emacs vars commit d1871c2fe04f9f9c5d7ed4b3962c52e50df58199 Author: Guido Flohr Date: Sun Sep 7 19:44:56 2003 +0000 pod errors commit 53e58ef5f57303f3efeb5b84c31e00fd2fb7e593 Author: Guido Flohr Date: Sun Sep 7 19:44:27 2003 +0000 updated commit 56c15164c5b2176a430da6221374fefe833fdc1a Author: Guido Flohr Date: Sun Sep 7 19:44:10 2003 +0000 new section on informational files commit 184dab7477de28b8313bac52582aee519047e313 Author: Guido Flohr Date: Sun Sep 7 19:43:44 2003 +0000 new commit ef6aed6b7842f46f5174de5cdee4ce3a6fed1a5d Author: Guido Flohr Date: Sun Sep 7 19:43:21 2003 +0000 fixed invocation of xgettext commit e7b9dc6618a2e0809458de593e5abb41133f8fab Author: Guido Flohr Date: Sun Sep 7 19:42:18 2003 +0000 get rid of dependency on ExtUtils::Command::MM commit 7c4e46716ca5e34372f1051fdecad36553634d6d Author: Guido Flohr Date: Thu Sep 4 16:13:55 2003 +0000 removed double emacs var block commit 6d6c4af13370483d18c2de4476dd937a67e9c37f Author: Guido Flohr Date: Thu Sep 4 16:09:13 2003 +0000 # re-generated commit ec5d609715e823a61c5df3380aef72e5a0c11995 Author: Ingrid Graefen Date: Thu Sep 4 16:05:20 2003 +0000 - removed obsolete line commit 361a5236a7c24aac888683944a1bee1d18dfdb21 Author: Guido Flohr Date: Thu Sep 4 16:00:57 2003 +0000 # re-generated commit 008d2b8c333c5cbfa76790626d6cedbb4b92de55 Author: Ingrid Graefen Date: Thu Sep 4 15:58:26 2003 +0000 - untaint of plural header - Perl 5.005 compatibility commit c4492a553eec9830f3a8379360fae4cf2b1a6c55 Author: Guido Flohr Date: Thu Sep 4 15:24:31 2003 +0000 # re-generated commit 7eebc12ce0fb1e96d9a6e46112ed40ffd7b8b295 Author: Guido Flohr Date: Thu Sep 4 15:23:56 2003 +0000 bumped version number to 1.02 commit 6090fd0d21f530751dfe91233c4cc361457779cb Author: Guido Flohr Date: Thu Sep 4 15:23:32 2003 +0000 updated commit 0b03a01030c4ca1d53769e44433a6e35a08383fd Author: Guido Flohr Date: Thu Sep 4 13:31:25 2003 +0000 added plural rules for de_AT to test catalog commit df4d16b647c0e3825863896daa45eaa790505b59 Author: Guido Flohr Date: Thu Sep 4 10:48:25 2003 +0000 compatibility with GNU gettext for systems w/o /usr/share/locale commit 12ef91fca08423bffe54cee30fbeacdeb216b990 Author: Guido Flohr Date: Tue Aug 19 18:49:46 2003 +0000 # updated commit 5cb0bdee4184a19375e2584dd0dc981514e26ad0 Author: Guido Flohr Date: Tue Aug 19 18:49:10 2003 +0000 bumped version number to 1.01 commit 20d9c39bd2901d78b0a747fdab50bf9d59198990 Author: Guido Flohr Date: Tue Aug 19 18:48:49 2003 +0000 deleted reference to README-MSDOS commit 95179cc5c5873c422a71ed8946bfb77382a43061 Author: Guido Flohr Date: Tue Aug 19 18:44:23 2003 +0000 bug report from cpan-testers commit 3c20614f7df0cf60c138f4b367e98f44003448c0 Author: Guido Flohr Date: Tue Aug 19 18:38:29 2003 +0000 requires ExtUtils::Command::MM for test wrapper commit ea211a277262df634e6f32e3c1dac7224132f434 Author: Guido Flohr Date: Tue Aug 19 18:37:46 2003 +0000 fixed ISO-8859-11 recoding commit 3b8457d6a514d8db6afffa6282ffaa08e03401d5 Author: Guido Flohr Date: Tue Aug 19 17:25:24 2003 +0000 fixed Thai character sets commit a68d820a33900db3aa48d95b539bc6255cfb1fd2 Author: Guido Flohr Date: Tue Aug 19 16:52:21 2003 +0000 updated/added commit 1c9283cf3f6797dd7a5bca3e01f3803ed93dfc9b Author: Guido Flohr Date: Tue Aug 19 16:49:45 2003 +0000 obsolete commit 58f83769f7edf49e68b61bda42ff5d4eb9197e63 Author: Guido Flohr Date: Tue Aug 19 16:48:52 2003 +0000 workaround for broken or limited shells to allow testing (thanks to DH for the hint) commit e60503765995355518e16a3def7cda5c22bb8611 Author: Guido Flohr Date: Tue Aug 19 16:47:09 2003 +0000 - directory t/ moved to tests/ commit ee5414695bbebf2d91050a83d9dd5fb0551b3173 Author: Guido Flohr Date: Tue Aug 19 16:45:01 2003 +0000 moved to directory tests commit 0c8c59e00b0102215a37a4e82df62a02bdf90c43 Author: Guido Flohr Date: Tue Aug 19 16:43:15 2003 +0000 merged from norma branch commit adf4ba4f5b6c4004f89d49778314b1bfffd4a6c4 Author: Guido Flohr Date: Mon Aug 11 09:52:55 2003 +0000 fixed pod typo (reported by Mike Castle ) commit 96f420fafa5f4d088e4fff432a35a97afe60aab2 Author: Ingrid Graefen Date: Thu Aug 7 15:53:33 2003 +0000 _recode must return a true value if Encode::from_to returns 0 commit c8f0f3c0074cb71d25229eb4fdf74014201ad224 Author: Guido Flohr Date: Thu Aug 7 10:57:06 2003 +0000 # re-generated commit a4dba9e4e5f86a1e8fa57c63762fcc170ff223a3 Author: Guido Flohr Date: Thu Aug 7 10:56:21 2003 +0000 renamed variables commit 68df5cbf6b55fe471658ea27f93db438e99e0f73 Author: Guido Flohr Date: Thu Aug 7 10:54:53 2003 +0000 bumped version number to 1.00 commit b93c5b371a86837d0fbfd9c8eed6491ac316a012 Author: Guido Flohr Date: Thu Aug 7 10:38:59 2003 +0000 documentation tweaks commit 3665491a99ca81562a52b862c2c703374835a7ef Author: Guido Flohr Date: Mon Jul 28 12:57:02 2003 +0000 # regenerated commit 57c4fee411ab325f1ed73b737d3fbcea4ef1d116 Author: Guido Flohr Date: Mon Jul 28 12:54:03 2003 +0000 bumped version number to 0.14 commit 4d3bdf34bc5ec6559860df1c904cc2053bd37401 Author: Guido Flohr Date: Mon Jul 28 12:51:55 2003 +0000 fixed web addresses commit d3e20ac01ced844edbe639ea4e2236b6831ced23 Author: Guido Flohr Date: Mon Jul 28 12:21:32 2003 +0000 # re-generated commit 04a15f1f974fca8fc1a370fac108b2e36c266d99 Author: Guido Flohr Date: Mon Jul 28 12:20:52 2003 +0000 added directory sample with a self-containing example commit a82f2fcf6af8be61125d20bad2f49d5fd8a6b1c5 Author: Guido Flohr Date: Mon Jul 28 12:16:27 2003 +0000 updated commit a1d24d00b9510a3cedee528572077fb262d5c776 Author: Guido Flohr Date: Mon Jul 28 12:15:36 2003 +0000 # fixed Emacs variables commit 40a5865da495a90f1d496c1ac4dc3d64861cd62c Author: Guido Flohr Date: Tue Jul 15 12:09:21 2003 +0000 # re-generated commit d7808e3b6f27b18b8a63737fc9c0794ff08686c2 Author: Guido Flohr Date: Tue Jul 15 12:07:43 2003 +0000 updated commit 9b731aa0c6e1fa61c0e9b61ec5504725bc594d1d Author: Guido Flohr Date: Tue Jul 15 12:02:02 2003 +0000 - changed placeholder format to {curlies} - bumped version number to 0.13 commit 268e42cb12c8d04fdccdc7ade4a99aebcbcc10fa Author: Guido Flohr Date: Mon Jul 14 15:46:57 2003 +0000 # updated commit b4dcb8940f3fe3d02a14edc41b580a0a62354f7b Author: Guido Flohr Date: Mon Jul 14 15:36:02 2003 +0000 early exit if no directories for catalogs exist commit 8d3a99f9f1d910a18886908ce53323295da723f3 Author: Guido Flohr Date: Mon Jul 14 15:11:51 2003 +0000 updated commit 3997b1b574d53fda6dc05f04339fd5fc20a75747 Author: Guido Flohr Date: Mon Jul 14 15:11:28 2003 +0000 return converted string in utf8_off commit 39bada7aa9706e7e4fb48230bf4fcbf241871daf Author: Ingrid Graefen Date: Mon Jul 14 14:20:51 2003 +0000 syntax errors commit 88acda2edbfe93d5702249d72b66bcae36aee0fa Author: Ingrid Graefen Date: Mon Jul 14 12:24:57 2003 +0000 performance tweaks commit 6111f29e4703fef00ac3e7caaac55ae73803f592 Author: Guido Flohr Date: Mon Jul 14 11:02:04 2003 +0000 fixed fatal typo commit 0a05e4410c5be5e16d9d035728eef6de59a6c738 Author: Guido Flohr Date: Mon Jul 14 10:46:36 2003 +0000 - use nl_langinfo() if available to determine output charset - variable names commit 2f699ffc87fef6a540cc83b8303c1c033b1cb8e9 Author: Guido Flohr Date: Mon Jun 30 19:12:56 2003 +0000 compatibility tweak, (SuSE rpm perl-5.8.0-104!) commit 306ac291f3083066df40cdbe58631c5ddb6bc8d6 Author: Ingrid Graefen Date: Fri Jun 27 10:25:03 2003 +0000 fixed pod error commit 0a0417c69516c745e649fd5925813794c0250a23 Author: Ingrid Graefen Date: Fri Jun 27 10:24:46 2003 +0000 fixed pod errors commit 4e1c5ae5d94a830fae074826dac215ca14442d78 Author: Guido Flohr Date: Fri Jun 27 10:19:46 2003 +0000 fixed for new conversion interface commit 6b69d5e2064d5d6f3d87d88e3cd4c0a7ee7a63b0 Author: Guido Flohr Date: Mon Jun 23 15:24:36 2003 +0000 ChangeLog commit 01ed8feeacb54bf603f2717586639d8a599c8c17 Author: Guido Flohr Date: Mon Jun 23 15:20:12 2003 +0000 *** empty log message *** commit 96d87f2dcb97922b9645bb804b3b69c4ec9a23f0 Author: Guido Flohr Date: Mon Jun 23 14:48:32 2003 +0000 # updated commit 31a8f9c4fa5d8b2f812e24f116e54c571042285d Author: Guido Flohr Date: Mon Jun 23 14:32:55 2003 +0000 - avoid intermediate function calls - renamed internal functions to initial values in order to avoid unintended similarities to GNU implementation commit 69ed45f5f73e54268a8dc4f39bc1cf820d1d587e Author: Guido Flohr Date: Mon Jun 23 11:34:54 2003 +0000 updated commit a5c6b2712dd0e9a57c703abb45d3925040cfde95 Author: Ingrid Graefen Date: Mon Jun 23 11:30:35 2003 +0000 - use strict; moved up - no bare words after 'use base' commit cec2e6e87467e151176312fd539dee98ce3b0f9d Author: Ingrid Graefen Date: Mon Jun 23 11:11:02 2003 +0000 fixed typo in pod commit 8743705b71f87e68f936fbc76f45a40883c57802 Author: Guido Flohr Date: Mon Jun 23 10:14:43 2003 +0000 leave undefined placeholders untouched commit c203e5e23887106038cadfec4fd951752f19c331 Author: Guido Flohr Date: Fri Jun 20 15:06:16 2003 +0000 updated commit 1adc5925e99f305be7407d4c84f4944d36cc095d Author: Guido Flohr Date: Fri Jun 20 15:05:46 2003 +0000 bumped version number to 0.11 commit 044853a39a0332d2904114247a23e82350a5bdda Author: Guido Flohr Date: Fri Jun 20 15:04:35 2003 +0000 new commit 80939fe361be4859d75339f11975c38ddde4b106 Author: Guido Flohr Date: Fri Jun 20 15:03:46 2003 +0000 - added ChangeLog - added KOI8-RU files commit c731fee3bcf2f0eae541be0d46fabbdfe239b119 Author: Guido Flohr Date: Fri Jun 20 15:03:11 2003 +0000 also exclude x-shell scripts from distcheck commit ffeb0650bf5d552d92b01f2e3431f4d814c2dfa2 Author: Guido Flohr Date: Fri Jun 20 14:58:30 2003 +0000 always turn utf-8 flag off for messages commit 7191673caec356ab88b36b450fcdc8f15d63e03c Author: Guido Flohr Date: Fri Jun 20 12:06:14 2003 +0000 untaint the plural header code commit a5b54fe29ab126f600ada8edb7d730e988d718fd Author: Guido Flohr Date: Fri Jun 20 10:29:09 2003 +0000 avoid re-loading of message catalogs commit e7b92e62a7e289c27fdaea20850700d5b223b93f Author: Guido Flohr Date: Mon Jun 16 12:05:25 2003 +0000 $optional_conversion may *only* contain the preferred MIME names! commit 50530bcb75b950f5aa8f5c75b9eb629fe71eeb0d Author: Guido Flohr Date: Mon Jun 16 11:53:28 2003 +0000 bugfix for Perl without Encode commit 05f9510c68742099b81456e49506a8d72e99b2cb Author: Guido Flohr Date: Mon Jun 16 11:44:48 2003 +0000 - now replaces with Unicode replacement char 0xfffd - fixed test commit e4755fc26758b71acdc222414077f0bac2f17234 Author: Guido Flohr Date: Mon Jun 16 11:16:48 2003 +0000 - general clean-up - added and fixed documentation - added MANIFEST.SKIP commit e076acaba67b7677757dec4dae7a63353340c3e1 Author: Guido Flohr Date: Mon Jun 16 11:16:10 2003 +0000 removed unmaintained benchmark test commit d7e9a9870aef519f1d5091501f1e883dd004e056 Author: Guido Flohr Date: Mon Jun 16 11:15:08 2003 +0000 general clean-up commit 00b97adc00f2bd654acace85aedc838a98abe890 Author: Guido Flohr Date: Mon Jun 16 11:14:23 2003 +0000 removed iso-ir-{197,209} commit a30913d978bb5f48e4a35c765a367f05092245cf Author: Guido Flohr Date: Mon Jun 16 11:13:48 2003 +0000 utf-8 should now pass all tests, even with Perl 5.8 commit ae7a4fef7ceedba6ae1b3f35ac9a051ac716e512 Author: Guido Flohr Date: Mon Jun 16 11:11:42 2003 +0000 Mac is now Macintosh commit b7c6bdb78bd4f5f221d5561083473fc47f03115e Author: Guido Flohr Date: Mon Jun 16 11:10:51 2003 +0000 added KOI8-RU commit 20a30c0e0096e3178ba9f9ce38a3c1331372601b Author: Guido Flohr Date: Mon Jun 16 11:10:06 2003 +0000 NextStep encoding added commit 6da6f07d7a77f6c51ae8710d6bd2b8f593cc6f65 Author: Guido Flohr Date: Mon Jun 16 11:08:50 2003 +0000 Macintosh encodings added commit f7996def2a56c714a7786a3bf9cbfa27ede7a428 Author: Guido Flohr Date: Mon Jun 16 11:07:41 2003 +0000 renamed ASCII to US-ASCII commit f7ea5a922e569e9906535c661da72e5786be7126 Author: Guido Flohr Date: Mon Jun 16 11:05:50 2003 +0000 wrapper around converters realized with Encode(3pm) commit 41f6e53fc6a3e9cc22e831ba5647710bc47a7392 Author: Guido Flohr Date: Sun Jun 15 14:50:34 2003 +0000 renamed X-ATARI-ST and X-ATARI-ST-EURO to ATARI-ST and ATARI-ST-EURO commit ca92baabd0cd69464e6f407da322cc538819cb47 Author: Guido Flohr Date: Sun Jun 15 14:35:34 2003 +0000 - added and updated lots of documentation - use Encode if possible - added prototypes to procedural interfaces - regenerated conversion tables - removed multi-byte encodings commit 53405b2608a2fac12e890402efa8469094fcc7c0 Author: Guido Flohr Date: Fri Jun 13 11:40:10 2003 +0000 vim line commit 9bf7c2df01b2c62e8f29ff5e589d0e589780c459 Author: Guido Flohr Date: Tue Jun 10 16:31:33 2003 +0000 added README-MSDOS commit c8d77e3b994753e8a6775d8fa1243844c3569976 Author: Guido Flohr Date: Tue Jun 10 16:06:39 2003 +0000 moved version information to Locale::TextDomain commit 464afe2ed471e3c7feabf70bf6c1d8d6ad54734d Author: Guido Flohr Date: Tue Jun 10 16:06:05 2003 +0000 truth value commit 878397695a2e862c2d97a4040199cd0d77d5f699 Author: Guido Flohr Date: Tue Jun 10 16:05:30 2003 +0000 new commit ee0e87c61cac0a564f66d432db08cd649a433295 Author: Guido Flohr Date: Tue Jun 10 16:05:06 2003 +0000 get version from Locale::TextDomain commit 1968aeee33620838fb512ef93a41663e592f69c7 Author: Guido Flohr Date: Tue Jun 10 16:04:45 2003 +0000 - added Locale/TextDomain.pm - t/02ms_kanji.t was forgotten commit a2a20ccf6991ddf0d00800b2c9beba3b650a6ece Author: Guido Flohr Date: Fri Jun 6 13:16:03 2003 +0000 special notes for MS-DOS commit 67a81d3b178fde8a1b9cebf18587cd99da84aceb Author: Guido Flohr Date: Fri Jun 6 13:02:07 2003 +0000 compatibility tweaks for MS-DOS commit cade28e9ea5c68dcedfd97fd06b28c173d2b8b2b Author: Guido Flohr Date: Fri Jun 6 11:38:33 2003 +0000 - optimized CJK multi-byte encodings commit acad1f5789d355f1ccaaa8ddae972aeb1307c734 Author: Guido Flohr Date: Thu Jun 5 20:08:39 2003 +0000 fixed EUC-TW and optimized it, attention: U+5344 has three representations commit a1ead8c0135032023be2c854137a116e0101c85a Author: Guido Flohr Date: Thu Jun 5 18:28:35 2003 +0000 removed superfluous inner parentheses in conversion re commit d44bbd002f281e5c6ffe7d850ee94384e61925fc Author: Guido Flohr Date: Thu Jun 5 18:28:00 2003 +0000 optimized conversion commit 0cb31a84d820e2e14c607e9f58506acdd38e8597 Author: Guido Flohr Date: Thu Jun 5 18:14:18 2003 +0000 optimized conversion commit 5315514fc8cb21bab5255b2a3a4aef35878a45aa Author: Guido Flohr Date: Thu Jun 5 18:13:53 2003 +0000 more optimizations commit 869709710d5ad48462a36c82dbaca661920ba788 Author: Guido Flohr Date: Thu Jun 5 18:10:01 2003 +0000 compiled regular expression with modifier s commit 58e6ea25e5dfae1a71a143fa9ec3d4d26a99b0e1 Author: Guido Flohr Date: Thu Jun 5 18:02:56 2003 +0000 removed debugging code commit 5390ffe2a29736d25c82d080375b52db4827f6d0 Author: Guido Flohr Date: Thu Jun 5 18:02:32 2003 +0000 optimized conversion commit d1e3771bd167832d3349031207848f2ace4bba1c Author: Guido Flohr Date: Thu Jun 5 17:32:14 2003 +0000 - insert empty lines in contiguous areas of large PODs - support for Korean CP1361 (JOHAB) - support for Korean CP949 (UHC) - support for EUC (JP, KR, and TW) commit 36ce0e9f988952369c0c89cab03e3435f68cbc01 Author: Ingrid Graefen Date: Thu Jun 5 11:39:16 2003 +0000 Perl 5.005 issue (base.pm Bug) commit 739fce023a60fd18ca7e50d223d3a21eb5b96226 Author: Guido Flohr Date: Thu Jun 5 10:40:59 2003 +0000 - support for MS_Kanji (Shift-JIS) - support for Big-5 (traditional Chinese) commit c2662e7c37fd84233983445ba75b1bb18181e371 Author: Guido Flohr Date: Wed Jun 4 12:20:02 2003 +0000 updated origin information for ISO-8859-11 commit 1f375bc8906b90307db9d9043628bea6a592ad95 Author: Guido Flohr Date: Wed Jun 4 12:16:44 2003 +0000 support for ISO-8859-11 commit bd618160b93b653e19bc763dac45df40906a4980 Author: Guido Flohr Date: Wed Jun 4 12:16:27 2003 +0000 extract version from gettext_pp, not Recode commit d2da8e1a2c70a1e4394c383a9242cddcc3bf0554 Author: Guido Flohr Date: Mon Jun 2 11:16:54 2003 +0000 - support for Perl 5.8 - vim lines - emacs variables - changed copyright statements - general update commit 65f43781c9ebf594361bb862ea1bf4ece0d5f7fa Author: Ingrid Graefen Date: Mon Jan 20 14:10:08 2003 +0000 eval '&POSIX::LC_MESSAGES' only if $POSIX::{LC_MESSAGES} exists (avoiding calls to Carp and avoiding problems with ptkdb step over) commit 25bc1cbbfed4629006bbec81b4a309d1ab9c3a61 Author: Oliver Hoos Date: Fri Jan 10 15:55:16 2003 +0000 fixed for new directory structure commit 3fc04968a83ea4c7b74313887c1511480e6ad2b1 Author: Ingrid Graefen Date: Tue Oct 22 11:20:44 2002 +0000 no BAREWORD after use base commit 47f38f484c2eba15acb462fded7c8c081565fde5 Author: Guido Flohr Date: Fri Aug 16 10:49:20 2002 +0000 unchaos commit 8dda79a6ed1af6cea207b0afcf40a27bc217950a Author: Guido Flohr Date: Fri Aug 16 10:12:54 2002 +0000 unchaos commit cadd690554dac17f81d1f38796e4e5872fe25de7 Author: Guido Flohr Date: Fri Aug 16 10:09:39 2002 +0000 moved modules to subdirectory lib commit 46faed612486eee2a1b14f43c6f4c361b8ffc07c Author: Guido Flohr Date: Thu Aug 1 13:57:32 2002 +0000 updated commit 192f36f5efd191951d797d4912a41cefd00502ed Author: Guido Flohr Date: Thu Aug 1 13:55:59 2002 +0000 version number to 0.05 commit b00f6ffe7f829f2a2c082efab39fe117a1111946 Author: Guido Flohr Date: Thu Aug 1 13:55:13 2002 +0000 implemented decoding of UTF-8 for Perl < 5.6.0 commit 70abf795c325868653fd84c3b9a436797775f8d2 Author: Guido Flohr Date: Thu Aug 1 13:54:15 2002 +0000 forgotten to add commit 4b6668c30ede4c69b56d88cae2fd0441eae52a9b Author: Guido Flohr Date: Tue Jul 16 12:53:36 2002 +0000 do not list unsupported charsets in getCharsets(). commit 961f20161e02f583f5709c8400e89371c0e104e6 Author: Guido Flohr Date: Tue Jul 16 12:52:42 2002 +0000 renamed Iconv to Recode commit ff28291c69239a3f3648187542de1250386cf913 Author: Guido Flohr Date: Mon Jul 15 11:00:40 2002 +0000 updated commit 2b1392ba6c82a825cc98a23b4f306e9114f19759 Author: Guido Flohr Date: Mon Jul 15 10:59:47 2002 +0000 - fixed retrieving of plural forms from mo files - implemented bind_textdomain_codeset - fixed setlocale() inquiries - more Locale::gettext compatibility commit 0e81e7eb6ae407e08146ea5a8c40e937780915e9 Author: Guido Flohr Date: Mon Jul 15 10:58:03 2002 +0000 - now requires (imaginary) Locale::gettext 2.00 - also require this Locale::gettext version with select_package - fixed warning in select_package commit f16038bae90daff6ee46d4758c8f854eac897295 Author: Guido Flohr Date: Mon Jul 15 10:56:43 2002 +0000 renamed Iconv to Recode commit 2886f2c8a534f9b05cab22fd5fd8f3ae9f416921 Author: Guido Flohr Date: Mon Jul 15 10:56:13 2002 +0000 added tests for gettext library commit 9250e1d90ce2d743becf5f439f4dfdc8f334d50a Author: Guido Flohr Date: Mon Jul 15 10:54:24 2002 +0000 renamed from Iconv to Recode commit 34291ce70f605500344751b4cc6a046222149cec Author: Guido Flohr Date: Mon Jul 15 10:53:28 2002 +0000 - added tests for gettext library - put numbers in front of file names (ordered tests) commit 5065010445a7f2c5e9cfdef7ed793d72699bb0d9 Author: Guido Flohr Date: Mon Jul 15 10:52:31 2002 +0000 added text for gettext library commit f3f7503ba6bed53a43abf18809833fced5d1344e Author: Guido Flohr Date: Fri Jul 12 18:01:01 2002 +0000 removed reference to my home directory commit 5b8417b1f581acabe5591bc95c4c082a0b73f54c Author: Guido Flohr Date: Fri Jul 12 18:00:37 2002 +0000 new charsets UTF-8 (requires Perl >= 5.6.0) and ASCII. commit 259d37b4dc8d143e8a91a3382e365af71d4516a1 Author: Guido Flohr Date: Wed Jul 10 19:26:08 2002 +0000 - bumped version number to 0.03 commit a27c7517602a7d5a96a425dec020af56fb83bfa1 Author: Guido Flohr Date: Wed Jul 10 19:25:39 2002 +0000 - properly check for invalid gettext versions commit d97d1a8b7f0bb871906cdd25b8bb172b76dd71d9 Author: Guido Flohr Date: Wed Jul 10 19:25:06 2002 +0000 run also against Encode(3pm) in perl 5.8.0 commit d1dfd8200ea1eb91efed39094e9808c20ab801bb Author: Guido Flohr Date: Wed Jul 10 19:05:05 2002 +0000 - added vim modelines commit 0f68b5945ecee7b495648059979db7bdd562ecfc Author: Guido Flohr Date: Wed Jul 10 19:04:23 2002 +0000 - (hopefully) optimized _recode() - vim modelines commit fef9134f65d1e54e1182b0903b10ac0be2fe59de Author: Guido Flohr Date: Tue Jul 9 19:13:34 2002 +0000 now really removed CVS from MANIFEST commit f4ddc829da39a32d5afcca15a7c2bfa7a56cf0ef Author: Guido Flohr Date: Tue Jul 9 19:07:44 2002 +0000 new file commit 0227dcaf4f0684773e5b5b2401bde921ff0499c4 Author: Guido Flohr Date: Tue Jul 9 19:04:43 2002 +0000 new files commit 57f0373d16c0ddf8ea7b030c5a753a9a10d573aa Author: Guido Flohr Date: Tue Jul 9 19:04:10 2002 +0000 unnecessary optimizations from module generation :-( commit 273694b5d0a43402ecee5e2467d896bf5c4583be Author: Guido Flohr Date: Tue Jul 9 19:03:12 2002 +0000 bumped version number to 0.02 commit e68dfd343c5db95300ccfdd76d841695c9867cf1 Author: Guido Flohr Date: Tue Jul 9 19:02:15 2002 +0000 performance optimizations commit 86bc4834210d64d0516631b154f47224dfd3880b Author: Guido Flohr Date: Tue Jul 9 19:01:40 2002 +0000 - removed CVS from manifest - added Locale/Messages.pm and Locale/gettext_pp.pm - added test-benchmark commit 26b9ad8d073614da5fa98457d38efa0a5e92c14b Author: Guido Flohr Date: Mon Jul 8 19:19:59 2002 +0000 Initial revision libintl-perl-1.26/COPYING000644 000765 000024 00000104513 12507434022 015347 0ustar00guidostaff000000 000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . libintl-perl-1.26/Credits000644 000765 000024 00000002536 12716417544 015652 0ustar00guidostaff000000 000000 These people have helped in the development of libintl-perl: - Joshua Miller has extended libintl-perl to provide the important context-sensitive functions (pgettext() and friends). - Christian Lackas has given various hints on performance optimizations - Ingrid Gräfen has fixed a major performance penalty on systems without POSIX::LC_MESSAGES, and she has extensively tested the Perl backend for GNU xgettext under cygwin - Bruno Haible for libiconv which was the base for many conversions and for integrating my Perl backend into GNU gettext Other people have helped by sending in improvements, suggestions and bug reports (you will find out how to make the mail addresses valid): - DH - Jo-Even Skarstein - Gerhard Stoll - Marc Brockschmidt - Laurent Bonnaud - Jan Kratochvil - Светослав Агафонкин - Michael Bell - David Cantrell - Karl Berry - Patrice Dumas - Karen Etheridge - Slaven Rezić Please inform me if I have forgotten your contribution. Guido Flohr libintl-perl-1.26/FAQ000644 000765 000024 00000000460 12507434022 014642 0ustar00guidostaff000000 000000 The FAQ has been podified, see "perldoc Locale::libintlFAQ". If you haven't installed libintl-perl and read this file in the source distribution, either try "perldoc lib/Locale/libintlFAQ.pod", or point your favorite web browser to http://search.cpan.org/~guido/libintl-perl/lib/Locale/libintlFAQ.pod. libintl-perl-1.26/gettext_xs/000755 000765 000024 00000000000 12727473405 016522 5ustar00guidostaff000000 000000 libintl-perl-1.26/lib/000755 000765 000024 00000000000 12727473405 015072 5ustar00guidostaff000000 000000 libintl-perl-1.26/Makefile.PL000644 000765 000024 00000017756 12716420016 016302 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # Makefile generator for libintl-perl. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. use 5.004; use ExtUtils::MakeMaker; use strict; # Make standard channels unbuffered. select STDERR; $| = 1; select STDOUT; $| = 1; sub ac_try_link; use Config; # Now try to compile and link a simple test program that uses all # gettext facilities we need. Failure of the test is not fatal # since the pure Perl implementation will provide the same functionality. # However, any help on making this test more portable would be # highly appreciated! unlink "config.log"; my $c = <<'EOF'; /* The following code only compiles if the interface to gettext is complete. */ #include /* Handle the case that we link against GNU libintl but include a non * GNU libintl.h. */ #ifndef __USE_GNU_GETTEXT # error " is not GNU gettext. Maybe you have to adjust your include path." #endif #include int main (argc, argv) int argc; char* argv[]; { /* FIXME: The gettext runtime libraries provided by Solaris 8 and 9 are not sufficient. Those of Solaris 10 *may* work. To play safe, we currently only compile the XS version for GNU gettext and use some undocumented features, to test for that. Thanks to Bruno Haible for the hint. */ extern int _nl_msg_cat_cntr; #if 0 /* This seems to be defined in the GNU libc only, not in standalone * GNU gettext. */ extern int* _nl_domain_bindings; #endif textdomain ("dummy"); bindtextdomain ("dummy", "."); bind_textdomain_codeset ("dummy", "us-ascii"); gettext ("msgid"); dgettext ("dummy", "msgid"); dcgettext ("dummy", "msgid", LC_MESSAGES); ngettext ("msgid", "msgid_plural", #if 0 _nl_msg_cat_cntr + *_nl_domain_bindings); #else _nl_msg_cat_cntr); #endif dngettext ("dummy", "msgid", "msgid_plural", 1); dcngettext ("dummy", "msgid", "msgid_plural", 1, LC_MESSAGES); return 0; } EOF my $build_gettext_xs = ac_try_link $c, "Checking whether we can compile the XS version"; unless ($build_gettext_xs) { $build_gettext_xs = ac_try_link $c, " Trying again with -lintl", "-lintl"; } unless ($build_gettext_xs) { $build_gettext_xs = ac_try_link $c, " Trying again with -lintl -liconv", "-lintl", "-liconv"; } unless ($build_gettext_xs) { $build_gettext_xs = ac_try_link $c, " Trying again with -liconv", "-liconv"; } unless ($build_gettext_xs) { print STDERR < Cannot build the XS version of libintl-perl (see 'config.log' for => details). This is harmless! EOF } else { print STDERR < Building the XS version of libintl-perl. EOF } sub ac_try_link { my ($c_code, $msg, @options) = @_; print STDERR "$msg ... "; local *HANDLE; open HANDLE, ">gettest.c" or die "cannot create file 'gettest.c': $!\n"; print HANDLE $c_code; close HANDLE or die "cannot close file 'gettest.c': $!\n"; my @cmd = $Config{cc}; push @cmd, $Config{ccflags}; push @cmd, $Config{ldflags}; push @cmd, $Config{perllibs}; push @cmd, @options; push @cmd, "-o", "gettest.exe", "gettest.c"; # Temporarily redirect stdout and stderr. open OLDOUT, ">&STDOUT" or die "cannot dup STDOUT: $!"; open OLDERR, ">&STDERR" or die "cannot dup STDERR: $!"; open STDOUT, ">>config.log" or die "cannot redirect STDOUT: $!"; open STDERR, ">&STDOUT" or die "cannot dup STDOUT: $!"; select STDERR; $| = 1; select STDOUT; $| = 1; my $cmd = join ' ', @cmd; print <gettext.c <&OLDOUT" or die "cannot dup \$oldout: $!"; open STDERR, ">&OLDERR" or die "cannot dup OLDERR: $!"; close OLDOUT; close OLDERR; # Shut up warnings. unlink "gettest.c", "gettest.exe"; print STDERR $result ? "no.\n" : "yes.\n"; return !$result; } package MY; # FIXME: This is really a hack! Problem: Depending on the build system, # we may or may not build and install the XS version. If the XS version # is being built, the directory blib/arch will be populated, if it is # not being built, blib/arch will be empty. Unfortunately, if blib/arch # is not empty, *all* library files will be installed in the architecture # dependent locations, if it is empty, they will be installed in the # architecture independent tree. # # Unfortunately, ExtUtils::MakeMaker does not take care of uninstalling # files from previous installations. Consequently, we cannot determine # which version of the library will be loaded, since this depends on the # current value of @INC. # # The solution does not really make me happy. The Makefile will be patched, # so that instead of ExtUtils::Install a custom module MyInstall.pm will # be used. This custom module overwrites the subroutine that detects # whether a directory is empty in ExtUtils::Install, and will lie if that # directory happens to be "blib/arch". This little hack effectively disables # the annoying behavior of ExtUtils::Install (and I sincerely hope that # this is portable). sub libscan { my ($self, $file) = @_; return if 'MyInstall.pm' eq $file; $self->SUPER::libscan ($file); } sub tools_other { my $self = shift; my $fragment = $self->SUPER::tools_other (@_); $fragment =~ s/^MOD_INSTALL\s*=\s*(.*?)-MExtUtils::Install /MOD_INSTALL =$1-MMyInstall/msx; return $fragment; } package main; my $name = $0; $name =~ s,Makefile\.PL$,xs_disabled,; local *HANDLE; open HANDLE, ">$name" or die "cannot open '$name' for writing: $!"; print HANDLE !$build_gettext_xs; close HANDLE or die "cannot close '$name': $!"; WriteMakefile ( NAME => 'libintl-perl', VERSION_FROM => 'lib/Locale/Messages.pm', ($] >= 5.005 ? (ABSTRACT => 'High-Level Interface to Uniforum Message' . ' Translation', AUTHOR => 'Guido Flohr ', ) : (), ), PREREQ_PM => { 'File::Spec' => 0, version => 0.77 }, META_MERGE => { recommends => { 'File::ShareDir' => 0 }, resources => { homepage => 'http://git.guido-flohr.net/projects/libintl-perl/', bugtracker => 'http://rt.cpan.org/Public/Dist/Display.html?Name=libintl-perl', repository => 'git://git.guido-flohr.net/perl/libintl-perl.git', }, }, PL_FILES => {}, DIR => [$build_gettext_xs ? ('gettext_xs') : ()], clean => { FILES => 'xs_disabled build_xs' }, (MM->can ('signature_target') ? (SIGN => 1) : ()), # If you want to build the XS version although the automatic detection # suggests not to build it, uncomment the following line. #DIR => [ ('gettext_xs') ], ); sub MY::postamble { ' all :: Credits ReleaseNotes # Make search.cpan.org happy but still follow GNU standards: # # (Thanks to Graham Barr for the hint) Credits: THANKS cat THANKS >$@ ReleaseNotes: NEWS cat NEWS >$@ ' } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/MANIFEST000644 000765 000024 00000025537 12727473405 015471 0ustar00guidostaff000000 000000 COPYING GNU General Public License ChangeLog Detailed list of changes FAQ Frequently asked questions MANIFEST This list of files MANIFEST.SKIP Files to suppress in MANIFEST Makefile.PL Makefile generator MyInstall.pm Workaround file NEWS Latest Changes ReleaseNotes Same as NEWS README Read it README-oldversions Where are old versions of this module? README.solaris Build libintl-perl on Solaris platforms README.win32 Build libintl-perl on MS-DOS platforms REFERENCES Who uses libintl-perl? THANKS Contributors Credits Same as THANKS TODO Missing gettext_xs/Makefile.PL Makefile generator gettext_xs/gettext_xs.pm XS loader gettext_xs/gettext_xs.xs XS binding lib/Locale/Messages.pm Gettext Like Message Retrieval lib/Locale/Recode.pm Object−Oriented Portable Charset Conversion lib/Locale/Recode/_Aliases.pm lib/Locale/Recode/_Conversions.pm lib/Locale/RecodeData.pm lib/Locale/RecodeData/ASMO_449.pm lib/Locale/RecodeData/ATARI_ST.pm lib/Locale/RecodeData/ATARI_ST_EURO.pm lib/Locale/RecodeData/CP10007.pm lib/Locale/RecodeData/CP1250.pm lib/Locale/RecodeData/CP1251.pm lib/Locale/RecodeData/CP1252.pm lib/Locale/RecodeData/CP1253.pm lib/Locale/RecodeData/CP1254.pm lib/Locale/RecodeData/CP1256.pm lib/Locale/RecodeData/CP1257.pm lib/Locale/RecodeData/CSN_369103.pm lib/Locale/RecodeData/CWI.pm lib/Locale/RecodeData/DEC_MCS.pm lib/Locale/RecodeData/EBCDIC_AT_DE.pm lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm lib/Locale/RecodeData/EBCDIC_CA_FR.pm lib/Locale/RecodeData/EBCDIC_DK_NO.pm lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm lib/Locale/RecodeData/EBCDIC_ES.pm lib/Locale/RecodeData/EBCDIC_ES_A.pm lib/Locale/RecodeData/EBCDIC_ES_S.pm lib/Locale/RecodeData/EBCDIC_FI_SE.pm lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm lib/Locale/RecodeData/EBCDIC_FR.pm lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm lib/Locale/RecodeData/EBCDIC_IT.pm lib/Locale/RecodeData/EBCDIC_PT.pm lib/Locale/RecodeData/EBCDIC_UK.pm lib/Locale/RecodeData/EBCDIC_US.pm lib/Locale/RecodeData/ECMA_CYRILLIC.pm lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm lib/Locale/RecodeData/GEORGIAN_PS.pm lib/Locale/RecodeData/GOST_19768_74.pm lib/Locale/RecodeData/GREEK7.pm lib/Locale/RecodeData/GREEK7_OLD.pm lib/Locale/RecodeData/GREEK_CCITT.pm lib/Locale/RecodeData/HP_ROMAN8.pm lib/Locale/RecodeData/IBM037.pm lib/Locale/RecodeData/IBM038.pm lib/Locale/RecodeData/IBM1004.pm lib/Locale/RecodeData/IBM1026.pm lib/Locale/RecodeData/IBM1047.pm lib/Locale/RecodeData/IBM256.pm lib/Locale/RecodeData/IBM273.pm lib/Locale/RecodeData/IBM274.pm lib/Locale/RecodeData/IBM275.pm lib/Locale/RecodeData/IBM277.pm lib/Locale/RecodeData/IBM278.pm lib/Locale/RecodeData/IBM280.pm lib/Locale/RecodeData/IBM281.pm lib/Locale/RecodeData/IBM284.pm lib/Locale/RecodeData/IBM285.pm lib/Locale/RecodeData/IBM290.pm lib/Locale/RecodeData/IBM297.pm lib/Locale/RecodeData/IBM420.pm lib/Locale/RecodeData/IBM423.pm lib/Locale/RecodeData/IBM424.pm lib/Locale/RecodeData/IBM437.pm lib/Locale/RecodeData/IBM500.pm lib/Locale/RecodeData/IBM850.pm lib/Locale/RecodeData/IBM851.pm lib/Locale/RecodeData/IBM852.pm lib/Locale/RecodeData/IBM855.pm lib/Locale/RecodeData/IBM857.pm lib/Locale/RecodeData/IBM860.pm lib/Locale/RecodeData/IBM861.pm lib/Locale/RecodeData/IBM862.pm lib/Locale/RecodeData/IBM863.pm lib/Locale/RecodeData/IBM864.pm lib/Locale/RecodeData/IBM865.pm lib/Locale/RecodeData/IBM866.pm lib/Locale/RecodeData/IBM868.pm lib/Locale/RecodeData/IBM869.pm lib/Locale/RecodeData/IBM870.pm lib/Locale/RecodeData/IBM871.pm lib/Locale/RecodeData/IBM874.pm lib/Locale/RecodeData/IBM875.pm lib/Locale/RecodeData/IBM880.pm lib/Locale/RecodeData/IBM891.pm lib/Locale/RecodeData/IBM903.pm lib/Locale/RecodeData/IBM904.pm lib/Locale/RecodeData/IBM905.pm lib/Locale/RecodeData/IBM918.pm lib/Locale/RecodeData/IEC_P27_1.pm lib/Locale/RecodeData/INIS.pm lib/Locale/RecodeData/INIS_8.pm lib/Locale/RecodeData/INIS_CYRILLIC.pm lib/Locale/RecodeData/ISO_10367_BOX.pm lib/Locale/RecodeData/ISO_2033_1983.pm lib/Locale/RecodeData/ISO_5427.pm lib/Locale/RecodeData/ISO_5427_EXT.pm lib/Locale/RecodeData/ISO_5428.pm lib/Locale/RecodeData/ISO_8859_1.pm lib/Locale/RecodeData/ISO_8859_10.pm lib/Locale/RecodeData/ISO_8859_11.pm lib/Locale/RecodeData/ISO_8859_13.pm lib/Locale/RecodeData/ISO_8859_14.pm lib/Locale/RecodeData/ISO_8859_15.pm lib/Locale/RecodeData/ISO_8859_16.pm lib/Locale/RecodeData/ISO_8859_2.pm lib/Locale/RecodeData/ISO_8859_3.pm lib/Locale/RecodeData/ISO_8859_4.pm lib/Locale/RecodeData/ISO_8859_5.pm lib/Locale/RecodeData/ISO_8859_6.pm lib/Locale/RecodeData/ISO_8859_7.pm lib/Locale/RecodeData/ISO_8859_8.pm lib/Locale/RecodeData/ISO_8859_9.pm lib/Locale/RecodeData/KOI8_R.pm lib/Locale/RecodeData/KOI8_RU.pm lib/Locale/RecodeData/KOI8_T.pm lib/Locale/RecodeData/KOI8_U.pm lib/Locale/RecodeData/KOI_8.pm lib/Locale/RecodeData/LATIN_GREEK.pm lib/Locale/RecodeData/LATIN_GREEK_1.pm lib/Locale/RecodeData/MACARABIC.pm lib/Locale/RecodeData/MACCROATIAN.pm lib/Locale/RecodeData/MACCYRILLIC.pm lib/Locale/RecodeData/MACGREEK.pm lib/Locale/RecodeData/MACHEBREW.pm lib/Locale/RecodeData/MACICELAND.pm lib/Locale/RecodeData/MACINTOSH.pm lib/Locale/RecodeData/MACROMANIA.pm lib/Locale/RecodeData/MACTHAI.pm lib/Locale/RecodeData/MACTURKISH.pm lib/Locale/RecodeData/MACUKRAINE.pm lib/Locale/RecodeData/MAC_IS.pm lib/Locale/RecodeData/MAC_SAMI.pm lib/Locale/RecodeData/MAC_UK.pm lib/Locale/RecodeData/NATS_DANO.pm lib/Locale/RecodeData/NATS_SEFI.pm lib/Locale/RecodeData/NEXTSTEP.pm lib/Locale/RecodeData/SAMI_WS2.pm lib/Locale/RecodeData/TIS_620.pm lib/Locale/RecodeData/US_ASCII.pm lib/Locale/RecodeData/UTF_8.pm lib/Locale/RecodeData/VISCII.pm lib/Locale/RecodeData/_Encode.pm lib/Locale/TextDomain.pm lib/Locale/Util.pm Attention! Alpha code! lib/Locale/gettext_dumb.pm lib/Locale/gettext_pp.pm lib/Locale/gettext_xs.pod lib/Locale/libintlFAQ.pod sample/README sample/simplecal/MANIFEST sample/simplecal/Makefile.PL sample/simplecal/README-NLS sample/simplecal/TRANSLATIONS sample/simplecal/bin/simplecal.pl sample/simplecal/lib/SimpleCal.pm sample/simplecal/po/Makefile sample/simplecal/po/PACKAGE sample/simplecal/po/POTFILES sample/simplecal/po/ar.po sample/simplecal/po/ar_SA.po sample/simplecal/po/cs.po sample/simplecal/po/de.po sample/simplecal/po/de_AT.po sample/simplecal/po/fr.po sample/simplecal/po/ga.po sample/simplecal/po/it.po sample/simplecal/po/nl.po sample/simplecal/po/com.cantanea.simplecal.pot sample/simplecal/po/pt.po sample/simplecal/po/pt_BR.po sample/simplecal/po/ru.po test.pl tests/00gettext.t tests/00recode.t tests/01trivial.t tests/02asmo_449.t tests/02atari-st-euro.t tests/02atari-st.t tests/02cp10007.t tests/02cp1250.t tests/02cp1251.t tests/02cp1252.t tests/02cp1253.t tests/02cp1254.t tests/02cp1256.t tests/02cp1257.t tests/02csn_369103.t tests/02cwi.t tests/02dec-mcs.t tests/02ebcdic-at-de-a.t tests/02ebcdic-at-de.t tests/02ebcdic-ca-fr.t tests/02ebcdic-dk-no-a.t tests/02ebcdic-dk-no.t tests/02ebcdic-es-a.t tests/02ebcdic-es-s.t tests/02ebcdic-es.t tests/02ebcdic-fi-se-a.t tests/02ebcdic-fi-se.t tests/02ebcdic-fr.t tests/02ebcdic-is-friss.t tests/02ebcdic-it.t tests/02ebcdic-pt.t tests/02ebcdic-uk.t tests/02ebcdic-us.t tests/02ecma-cyrillic.t tests/02georgian-academy.t tests/02georgian-ps.t tests/02gost_19768-74.t tests/02greek-ccitt.t tests/02greek7-old.t tests/02greek7.t tests/02hp-roman8.t tests/02ibm037.t tests/02ibm038.t tests/02ibm1004.t tests/02ibm1026.t tests/02ibm1047.t tests/02ibm256.t tests/02ibm273.t tests/02ibm274.t tests/02ibm275.t tests/02ibm277.t tests/02ibm278.t tests/02ibm280.t tests/02ibm281.t tests/02ibm284.t tests/02ibm285.t tests/02ibm290.t tests/02ibm297.t tests/02ibm420.t tests/02ibm423.t tests/02ibm424.t tests/02ibm437.t tests/02ibm500.t tests/02ibm850.t tests/02ibm851.t tests/02ibm852.t tests/02ibm855.t tests/02ibm857.t tests/02ibm860.t tests/02ibm861.t tests/02ibm862.t tests/02ibm863.t tests/02ibm864.t tests/02ibm865.t tests/02ibm866.t tests/02ibm868.t tests/02ibm869.t tests/02ibm870.t tests/02ibm871.t tests/02ibm874.t tests/02ibm875.t tests/02ibm880.t tests/02ibm891.t tests/02ibm903.t tests/02ibm904.t tests/02ibm905.t tests/02ibm918.t tests/02iec_p27-1.t tests/02inis-8.t tests/02inis-cyrillic.t tests/02inis.t tests/02iso-8859-1.t tests/02iso-8859-10.t tests/02iso-8859-11.t tests/02iso-8859-13.t tests/02iso-8859-14.t tests/02iso-8859-15.t tests/02iso-8859-16.t tests/02iso-8859-2.t tests/02iso-8859-3.t tests/02iso-8859-4.t tests/02iso-8859-5.t tests/02iso-8859-6.t tests/02iso-8859-7.t tests/02iso-8859-8.t tests/02iso-8859-9.t tests/02iso_10367-box.t tests/02iso_2033-1983.t tests/02iso_5427-ext.t tests/02iso_5427.t tests/02iso_5428.t tests/02koi-8.t tests/02koi8-r.t tests/02koi8-ru.t tests/02koi8-t.t tests/02koi8-u.t tests/02latin-greek-1.t tests/02latin-greek.t tests/02mac-is.t tests/02mac-sami.t tests/02mac-uk.t tests/02macarabic.t tests/02maccroatian.t tests/02maccyrillic.t tests/02macgreek.t tests/02machebrew.t tests/02maciceland.t tests/02macintosh.t tests/02macromania.t tests/02macthai.t tests/02macturkish.t tests/02macukraine.t tests/02nats-dano.t tests/02nats-sefi.t tests/02nextstep.t tests/02sami-ws2.t tests/02tis-620.t tests/02us-ascii.t tests/02utf-8.t tests/02viscii.t tests/03_tester_david_pp.t tests/03_tester_david_xs.t tests/03bind_textdomain_codeset_pp.t tests/03bind_textdomain_codeset_xs.t tests/03bind_textdomain_filter_pp.t tests/03bind_textdomain_filter_xs.t tests/03bindtextdomain_pp.t tests/03bindtextdomain_xs.t tests/03dcgettext_pp.t tests/03dcgettext_xs.t tests/03dcngettext_pp.t tests/03dcngettext_xs.t tests/03dcnpgettext_pp.t tests/03dcnpgettext_xs.t tests/03dcpgettext_pp.t tests/03dcpgettext_xs.t tests/03dgettext_pp.t tests/03dgettext_xs.t tests/03dngettext_pp.t tests/03dngettext_xs.t tests/03dnpgettext_pp.t tests/03dnpgettext_xs.t tests/03dpgettext_pp.t tests/03dpgettext_xs.t tests/03environment_pp.t tests/03environment_xs.t tests/03gettext_dumb.t tests/03gettext_pp.t tests/03gettext_xs.t tests/03language_pp.t tests/03language_xs.t tests/03ngettext_pp.t tests/03ngettext_xs.t tests/03npgettext_pp.t tests/03npgettext_xs.t tests/03pgettext_pp.t tests/03pgettext_xs.t tests/03textdomain_pp.t tests/03textdomain_xs.t tests/04find_domain_bug.t tests/04scalar_noop.t tests/04russian_plural_function.t tests/05parse_accept.t tests/LocaleData/de/LC_MESSAGES/additional.mo tests/LocaleData/de/LC_MESSAGES/existing.mo tests/LocaleData/de_AT/LC_MESSAGES/additional.mo tests/LocaleData/xy/LC_MESSAGES/additional.mo tests/LocaleData/xy/LC_MESSAGES/existing.mo tests/LocaleData/xy_XY/LC_MESSAGES/additional.mo tests/LocaleData/xy_XY/LC_MESSAGES/existing.mo tests/LocaleData/de_AT/LC_MESSAGES/existing.mo tests/po/Makefile tests/po/additional.de.po tests/po/additional.de_AT.po tests/po/existing.de.po tests/po/existing.de_AT.po tests/po/additional.xy.po tests/po/additional.xy_XY.po tests/po/existing.xy.po tests/po/existing.xy_XY.po META.yml Module meta-data (added by MakeMaker) SIGNATURE Checksums and signature META.json Module JSON meta-data (added by MakeMaker) libintl-perl-1.26/MANIFEST.SKIP000644 000765 000024 00000000714 12716423507 016220 0ustar00guidostaff000000 000000 ^\.git ^sample/\.git ~$ x-.*$ \bCVS\b ^ChangeLog\.bak$ ^MANIFEST\. ^Makefile$ ^sample/simplecal/Makefile$ ^blib/ ^sample/simplecal/blib/ ^MakeMaker-\d \.old$ ^#.*#$ ^\.# \.tar.gz$ ^pm_to_blib$ ^sample/simplecal/pm_to_blib$ ^config.log$ ^xs_disabled$ ^gettext_xs/.git ^gettext_xs/Makefile ^gettext_xs/.*\.(bs|c|o)$ ^gettext_xs/pm_to_blib$ ^build_xs$ ^xs_disabled$ ^config\.log$ ^cover_db$ ^\.includepath$ ^\.project$ MYMETA\.json$ MYMETA\.yml$ .*\.mo$ .*\.gmo$ libintl-perl-1.26/META.json000644 000765 000024 00000002501 12727473405 015743 0ustar00guidostaff000000 000000 { "abstract" : "High-Level Interface to Uniforum Message Translation", "author" : [ "Guido Flohr " ], "dynamic_config" : 1, "generated_by" : "ExtUtils::MakeMaker version 7.18, CPAN::Meta::Converter version 2.150001", "license" : [ "unknown" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "libintl-perl", "no_index" : { "directory" : [ "t", "inc" ] }, "prereqs" : { "build" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "runtime" : { "recommends" : { "File::ShareDir" : "0" }, "requires" : { "File::Spec" : "0", "version" : "0.77" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=libintl-perl" }, "homepage" : "http://git.guido-flohr.net/projects/libintl-perl/", "repository" : { "type" : "git", "url" : "git://git.guido-flohr.net/perl/libintl-perl.git" } }, "version" : "1.26" } libintl-perl-1.26/META.yml000644 000765 000024 00000001432 12727473405 015575 0ustar00guidostaff000000 000000 --- abstract: 'High-Level Interface to Uniforum Message Translation' author: - 'Guido Flohr ' build_requires: ExtUtils::MakeMaker: '0' configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 1 generated_by: 'ExtUtils::MakeMaker version 7.18, CPAN::Meta::Converter version 2.150001' license: unknown meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: libintl-perl no_index: directory: - t - inc recommends: File::ShareDir: '0' requires: File::Spec: '0' version: '0.77' resources: bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=libintl-perl homepage: http://git.guido-flohr.net/projects/libintl-perl/ repository: git://git.guido-flohr.net/perl/libintl-perl.git version: '1.26' libintl-perl-1.26/MyInstall.pm000644 000765 000024 00000001765 12507434022 016573 0ustar00guidostaff000000 000000 package MyInstall; use ExtUtils::Install; use File::Find; use vars qw (@ISA @EXPORT @EXPORT_OK); @ISA = @ExtUtils::Install::ISA; @EXPORT = @ExtUtils::Install::EXPORT; @EXPORT_OK = @ExtUtils::Install::EXPORT_OK; sub ExtUtils::Install::directory_not_empty ($) { my($dir) = @_; return 0 if $dir eq 'blib/arch'; my $files = 0; find(sub { return if $_ eq ".exists"; if (-f) { $File::Find::prune++; $files = 1; } }, $dir); return $files; } sub AUTOLOAD { print STDERR "AUTOLOAD: $AUTOLOAD\n"; my $name = 'func'; my $code; my $string = "\$code = \\&ExtUtils::Install::$name"; eval $string; *$AUTOLOAD = $code; goto &$AUTOLOAD; } 1; libintl-perl-1.26/NEWS000644 000765 000024 00000012234 12727473213 015022 0ustar00guidostaff000000 000000 Version 1.26 - 13 May 2016 * Fixed more false negatives in tests, no need to upgrade. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=115052 Version 1.25 - 09 May 2016 * Fixed false negatives in test suite, no need to upgrade the module! * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=83980 https://rt.cpan.org/Ticket/Display.html?id=47968 Version 1.24 - 08 Apr 2016 * Better portability for tests. * Updated documentation. * License changed to GPLv3. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=98109 https://rt.cpan.org/Ticket/Display.html?id=47968 https://rt.cpan.org/Ticket/Display.html?id=83980 https://rt.cpan.org/Ticket/Display.html?id=102288 Version 1.23 - 24 Jan 2013 * New message retrieval backend Locale::gettext_dumb(3pm) which produces translations even, when the corresponding locale is not present in the system. * Fixed a bug where the Perl backend under certain circumstances clobbered the environment variable LC_ALL. * Avoid test failures by skipping all tests that depend on the de_AT locale, when that locale is not installed. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=82856 Version 1.22 - 24 Jan 2013 * Version 1.22 outsmarted PAUSE (the CPAN upload facility) and had to be removed. Version 1.21 - 15 Jan 2013 * Environment variables LANGUAGE and LANG are interpreted in the same way in the XS and the pure Perl version. * Package design closer to GNU standards. * If present, File::ShareDir is used for searching message catalogs. * Cleaned up distribution. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=78341 https://rt.cpan.org/Ticket/Display.html?id=81315 https://rt.cpan.org/Ticket/Display.html?id=79461 https://rt.cpan.org/Ticket/Display.html?id=71509 https://rt.cpan.org/Ticket/Display.html?id=49744 https://rt.cpan.org/Ticket/Display.html?id=49744 https://rt.cpan.org/Ticket/Display.html?id=64284 Version 1.20 - 29 Jue 2009 * Test suite revamped. Failures are now explained better, and it should be easier to debug them remotely. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=49744 Version 1.19 - 19 Jun 2009 * New context functions now work with Perl 5.6.2. * N__() now mirrors its argument in scalar context for convenience. Version 1.18 - 26 May 2009 * Cosmetic change: The version number is now both in Locale::Messages and in Locale::TextDomain to work around a shortcoming of the PAUSE indexer. Version 1.17 - 25 May 2009 * New context support, supporting .po files with msgctxt, and appropriate supporting calls (*pgettext calls) under both gettext_pp and gettext_xs. TextDomain.pm received corresponding calls: __p __px __np __npx __xnp. * New module Locale::Util with some utility functions, especially for web development. Attention, this is still alpha code! * Try to warn about wrong usage of the tied hashes in Locale::TextDomain. * Minor bugfixes Version 1.16 - 28 Sep 2005 * New function Locale::Messages::bind_textdomain_filter() allows you to register an output filter as a callback. You can use this feature for example to set the utf-8 flag on translated string when you are sure that the output is actually utf-8. * New function Locale::Messages::turn_utf_8_on(). * various minor bug fixes. Version 1.15 - 1 Sep 2005 * Workarounds and bugfixes for misconfigured Solaris systems * Fixed the completely broken simplecal example * Added section about non-ascii msgids to the POD of Locale::Messages Version 1.14 - 11 Aug 2005 * Oops: forgot to update the version check in Locale::Messages * The XS version builds easier on *BSD systems now Version 1.12 - 11 Aug 2005 * Minor bugfixes * The test scripts now check whether the needed locales are installed Version 1.11 - 11 Jun 2004 * Version 1.11 is a minor bugfix release Version 1.10 - 12 Jan 2004 * XS version now compiles under Windows (GNU gettext and libiconv required, build with "perl Makefile.PL DIR=gettext_xs", see README.win32 for details) Version 1.09 - 29 Dec 2003 * check version match with XS module * in pure Perl version, use user supplied locale name when guessing the output character set * corrections for Atari character maps Version 1.08 - 30 Nov 2003 * fixed bug #4512 on https://rt.cpan.org/ (reported by unknown guest) Version 1.07 - 28 Nov 2003 * bug with charset detection via I18N::Langinfo fixed * new function Locale::Messages::turn_utf_8_off() Version 1.06 - 24 Nov 2003 * fixed warning/error under Solaris 8 when I18N::Langinfo is not available * simplified sample packaging Version 1.05 - 10 Oct 2003 * fixed compatibility problems with gettext libraries under Solaris 8 and higher Version 1.04 - 09 Oct 2003 * support for language chains in $LANGUAGE (e. g. "fr_BE:fr:de") * performance tweaks for Locale::gettext_pp * do not clobber $@ in Locale::gettext_pp Version 1.03 - 15 Sep 2003 * alternative XS implemenation of gettext() and friends (outperforms pure Perl version by factor 10-15) Version 1.02 - 04 Sep 2003 * bugfixes for systems that lack both /usr/share/locale and /usr/local/share/locale * compatibility tweaks for Perl 5.005 Version 1.01 - 19 Aug 2003 * bugfixes * compatibility tweaks for MS-DOS libintl-perl-1.26/README000644 000765 000024 00000023607 12507434122 015201 0ustar00guidostaff000000 000000 README for libintl-perl ======================= The package libintl-perl is an internationalization library for Perl that aims to be compatible with the Uniforum message translations system as implemented for example in GNU gettext. [NOTE for distributors: This file and the complete subdirectory "sample" of this release should be installed along with the library itself in the according documentation section!] See the file COPYING.LESSER and the source code for licensing. More extensive information may be available at the libintl-perl homepage on the internet http://guido-flohr.net/projects/libintl-perl. Requirements ------------ The library is entirely written in Perl. It should run on every system with a Perl5 interpreter. The minimum required Perl version should be 5.004. The behavior of the package varies a little depending on the Perl version: - Perl 5.8 or better Recommended. Perl 5.8 offers maximum performance and support for various multi-byte encodings (even more if Encode::Han is installed). Additionally the output charset is chosen automatically according to the information provided by I18N::Langinfo. In fact, I18N::Langinfo is already available for Perl 5.7 but this developer version is probably not much in use any more. - Perl 5.6 or better Still offers high-performance UTF-8 handling but no support for other multi-byte encodings unless the package Encode is installed. - Earlier Perl versions Full UTF-8 support but quiet slow since all conversion routines are written in Perl. More exactly: Encoding from 8 bit charsets into UTF-8 is reasonably fast and usable. Decoding UTF-8 is slow, however. Note that these are actually the requirements for the *users* of your software internationalized with libintl-perl. As a maintainer of a Perl package that uses libintl-perl, you will also need a recent version of GNU gettext (see the file README in the subdirectory "sample/" of the source distribution of libintl-perl). Translators of your software can basically do their job with any text editor, but it usually makes sense for them, too, to have GNU gettext installed. End users of your software, or people that install an internationalized Perl package do *not* need it, unless they want to add a new language to your software. Installation ------------ If libintl-perl is not installed on your system, you have to build it from the sources, which is a lot easier than you may think. You need the program "make" for that and a command line shell. No C compiler is required. Unpack the package in a directory of your choice, cd into that directory and then type perl Makefile.PL make This will build the package. You can then run the tests with make test To install the package, type make install You will probably need root permissions to do that. Of course, you can also use the CPAN module to install the package. Feedback -------- Send negative (and positive!) feedback to me. Bug reports can be send directly to me or you can use the bugtracking system at http://rt.cpan.org/. If you use libintl-perl for your project, private or public, free or commercial, please let me know. I am interested in such information. If you really like (or dislike?) libintl-perl, tell the world about. You can rate it and even write a review at http://cpanratings.perl.org/ (search for "libintl-perl"). You can also increase the popularity index of libintl-perl at freshmeat.net by visiting its project page at http://freshmeat.net/projects/libintl-perl, by subscribing to new releases from the project page, or by rating it. Design Goals ------------ The primary design goal of libintl-perl is maximum compatibility with the gettext functions available for other programming languages. It is intended that programmers, translators, and end users can fully benefit from all existing i18n tools like xgettext for message extraction, msgfmt, msgmerge, etc. for catalog manipulation, Emacs PO mode (or KBabel, PO-Edit, ...) for catalog editing and so on. Another design goal is maximum portability. The library should be functional without any additional software but with a wide range of Perl versions. Wherever possible, hooks have been inserted to benefit from advanced features in the runtime environment, but the basic functionality should be present everywhere. Overview -------- The core of the library is the module Locale::gettext_pp. It is a pure Perl re-implementation of the module Locale::gettext available on CPAN. However, the XS version Locale::gettext lacks some functions (notably plural handling and output conversion) that are already present in Locale::gettext_pp. Locale::gettext_pp provides the internationalization functions that are available in your system library (libc) or additional C libraries (for example libintl in the case of GNU gettext). The class Locale::Messages is an additional abstraction layer that is prepared for dynamic switching between different gettext implementations (for example Locale::gettext_pp and Locale::gettext). It provides basically the same interface as Locale::gettext_pp but in an implementation-independent manner. The module Locale::TextDomain is the only module that you should actually use in your software. It represents the message translation system for a particular text domain (a text domain is a unique identifier for your software package), makes use of Locale::Messages for message translation and catalog location, and it provides additional utility functions, for example common shortcut names for i18n routines, tied hashes for hash-like lookups into the translation database, and finally an interpolation mechanism suitable for internationalized messages. The package also contains a charset conversion library Locale::Recode. This library is used internally by Locale::gettext_pp to allow on-the-fly charset conversion between the charset in a message catalog and the preferred (end) user charset. Its main advantage about the Encode package available for recent Perl versions is its portability, since it does not require the Unicode capabilities of Perl that were introduced with Perl 5.6. It fully supports UTF-8 with every Perl version and a wealth of common 8 bit encodings. If you have to do charset conversion with older Perl versions, then Locale::Recode may be worth a try although it is really only a helper library, not intended as a competitor to Encode. Documentation ------------- For a basic understanding of message translation in Perl with libintl-perl you should read the perldoc of Locale::TextDomain. Don't bother about the documentation of the other modules in the library, you will not need it unless you want to hack the library yourself. In order to make use of the software, you will also need various tools from GNU gettext (http://savannah.gnu.org/projects/gettext/). The documentation is located at http://www.gnu.org/manual/gettext/. You will find there a language-independent overview of internationalization with GNU gettext, and in the Perl-specific sections you will find details about the parser that extracts translatable messages from your Perl sources. Quick-Start ----------- The subdirectory "sample" of the source distribution of libintl-perl contains a full-fledged example for an internationalized Perl package, including a working Makefile. The README of that subdirectory explains all necessary steps. However, if you are on a recent GNU/Linux system or similar (cygwin should also do), chances are that you can get the following example to run: #! /usr/local/bin/perl -w use strict; # This assumes that the textdomain 'libc' is available on your # system. Try "locate libc.mo" or "locate libc.gmo" (or # "find / -type f -name libc.mo" if locate is not available on # your system). # # By the way, the "use Locale::TextDomain (TEXTDOMAIN) is the # equivalent of # # textdomain ("TEXTDOMAIN"); # # in C or similar languages. use Locale::TextDomain ('libc'); # The locale category LC_MESSAGES is not exported by the POSIX # module on older Perl versions. use Locale::Messages qw (LC_MESSAGES); use POSIX ('setlocale'); # Set the locale according to our environment. setlocale (LC_MESSAGES, ''); # This makes the assumption that your system libc defines a # message "No such file or directory". Check the exact # spelling on your system with something like # "ls NON-EXISTANT". # Note the double underscore in front of the string. This is # really a function call to the function __() that is # automagically imported by Locale::TextDomain into your # namespace. This function takes its argument, looks up a # translation for it, and returns that, or the unmodified # string in case of failure. print __"No such file or directory", ".\n"; __END__ Now run the command "locale -a" or "nlsinfo" to get a list of available locales on your system. Try the section "Finding locales" in "perldoc perllocale" if you have problems. If, for example, the locale "fr_FR" is available on your system, set the environment variable LANG to that value, for a POSIX shell LANG=fr_FR export LANG for the C shell setenv LANG fr_FR and run your little Perl script. It should tell you what the error message for "No such file or directory" is in French, or whatever language you chose. Not a real example, because we have "stolen" a message from a system catalog. But it should give you the general idea, especially if you are already familiar with gettext in C. If you still see the English message, this does not necessarily mean a failure, since the string is maybe not translated on your system (try "locate libc.mo" to get a list of available translations). Even for the translations listed there, that particular message might be missing. Try a common locale like "de_DE" or "fr_FR" that are usually fully translated then. Your next steps should be "perldoc Locale::TextDomain", and then study the example in the subdirectory "sample" of this distribution. Have fun with libintl-perl! Guido Flohr libintl-perl-1.26/README-oldversions000644 000765 000024 00000000263 12507434022 017536 0ustar00guidostaff000000 000000 Hi, old versions of my modules can be found here: http://history.perl.org/backpan/authors/id/G/GU/GUIDO/ This is an effort to keep CPAN and its mirrors clean. Regards, Guido libintl-perl-1.26/README.solaris000644 000765 000024 00000014545 12507434022 016654 0ustar00guidostaff000000 000000 Special Notes for Sun Solaris ============================= Recent versions of Solaris ship with a libintl that is mostly compatible with GNU gettext. Even the plural handling functions (ngettext, dngettext, dcngettext, ...) and output character conversion functions (bind_textdomain_codeset) are included. On my test system, the behavior of the Solaris version differs in one important point from the pure Perl version or the GNU gettext version: In a locale environment that is a regional variant of another locale (for example "fr_CA" is a regional variant of "fr"), both the pure Perl version from libintl-perl and the C version from GNU gettext will fall back to translations for the superordinate message catalog ("fr") if no special translation for the selected locale ("fr_CA") can be found. This fallback mechanism is missing in the Solaris implementation. This could be considered harmless, because Solaris users are probably used to this behavior. On the other hand, the pure Perl version of gettext in libintl-perl aims to be as compatible as possible to the GNU gettext implementation. Furthermore, if the pure Perl and the C/XS version behave differently, users may be unnecessarily confused. If you think you can live with that little inconsistence, you are not completely lost: Edit the toplevel Makefile.PL, in the function WriteMakefile(), change the value for the hash slot "DIR" from the value depending on "$result" to simply "['gettext_xs']". If you have a look at the source code of Makefile.PL, you will see that this has already been prepared. If you do this, the test suite will fail, because the above described behavior ("fr_CA" vs. "fr" ...) is checked by the tests. In this case, expect the following failures: Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- ./tests/03bind_textdomain_codeset_xs.t 9 2 22.22% 5 9 ./tests/03dcgettext_xs.t 9 2 22.22% 3 7 ./tests/03dcngettext_xs.t 83 51 61.45% 22-31 43-83 ./tests/03dgettext_xs.t 9 2 22.22% 3 7 ./tests/03dngettext_xs.t 83 51 61.45% 22-31 43-83 ./tests/03gettext_xs.t 6 1 16.67% 3 ./tests/03ngettext_xs.t 85 51 60.00% 23-32 45-85 But even if you have installed GNU gettext, you may run into this error when trying to compile the XS version: "gettext_xs.xs", line 32: #error: " is not GNU gettext. Maybe you have to adjust your include path." cc: acomp failed for gettext_xs.c make[1]: *** [gettext_xs.o] Error 2 make[1]: Leaving directory `/root/libintl-perl-1.15/gettext_xs' make: *** [subdirs] Error 2 What has happened here? Have a look at the source code of that ships with GNU gettext: /* We define an additional symbol to signal that we use the GNU implementation of gettext. */ #define __USE_GNU_GETTEXT 1 ... /* We redirect the functions to those prefixed with "libintl_". This is necessary, because some systems define gettext/textdomain/... in the C library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). If we used the unprefixed names, there would be cases where the definition in the C library would override the one in the libintl.so shared library. Recall that on ELF systems, the symbols are looked up in the following order: 1. in the executable, 2. in the shared libraries specified on the link command line, in order, 3. in the dependencies of the shared libraries specified on the link command line, 4. in the dlopen()ed shared libraries, in the order in which they were dlopen()ed. The definition in the C library would override the one in libintl.so if either * -lc is given on the link command line and -lintl isn't, or * -lc is given on the link command line before -lintl, or * libintl.so is a dependency of a dlopen()ed shared library but not linked to the executable at link time. Since Solaris gettext() behaves differently than GNU gettext(), this would be unacceptable. The redirection happens by default through macros in C, so that &gettext is independent of the compilation unit, but through inline functions in C++, in order not to interfere with the name mangling of class fields or class methods called 'gettext'. */ In brief: The GNU libraries libintl.so and libintl.a prefix all functions with "libintl_" in order to avoid symbol name conflicts with the vanilla Solaris verssion. These precautions still give room to a popular misconfiguration: If you install GNU gettext with the default prefix "/usr/local", libraries will get installed in "/usr/local/lib", the header files - notably - will get installed in "/usr/local/include", so far so good. Now set the environment variable LD_LIBRARY_PATH to "/usr/local/lib", so that the GNU version of libintl.so will be found by the dynamic loader at runtime. Yet, if "/usr/local/include" comes after "/usr/include" in your C compiler's include path, the above described trick does not work, the functions like "gettext", "dgettext" etc. will not get re-defined to "libintl_gettext", "libintl_dgettext" and so on. Remember, the preprocessor trick used by GNU gettext will change every reference to the function gettext() into a reference to libintl_gettext() for gettext() into a definition for libintl_gettext(). If your C compiler includes the "wrong" include file (/usr/include/libintl.h) instead of the "correct" one (/usr/local/include/libintl.h), your C sources will still reference gettext() instead of libintl_gettext(). At run-time, even if the dynamic loader considers the GNU version of libintl.so (in "/usr/local/lib"), it will not use it, because it looks for the "wrong" symbol gettext() instead of libintl_gettext(). Too complicated? Okay: The order for C header files for the C compiler (actually the preprocessor) differs from the inclusion order for libraries and this must lead to trouble. If you understand WHY, you will find a way to fix it. If not, ignore the problem: Do not build the problem, and be assured, that the pure Perl version is fast enough. It is very, very unlikely that using the pure Perl instead of the XS version of will be the bottleneck of any application you use. Life is complicated under the sun, ain't it? ;-) Guido libintl-perl-1.26/README.win32000755 000765 000024 00000010110 12507434022 016125 0ustar00guidostaff000000 000000 When building libintl-perl under 32 bit versions of MS-DOS, you have several options, depending on the facilities available on your system, and on the Perl version you use. Cygwin Perl =========== When using the Perl interpreter that ships with cygwin, you are in a pretty Unix-like environment, and you should be able to build and use libintl-perl like on ordinary operating system. ActiveState Perl ================ By default, the XS version of libintl-perl is not built. You will not win a lot, by trying to build the XS version, but if you can't help, here are the instructions that worked on my system. Your mileage may vary, however. C Compiler ---------- Windows does not ship with a C compiler. Since ActiveState Perl is built with Microsoft Visual C, you probably will not have a choice, and have to purchase MSVC. Building libiconv and GNU gettext --------------------------------- The XS version of libintl-perl requires the runtime facilities provided by GNU gettext, which in turn rely on libiconv. You can both in source form from ftp://ftp.gnu.org/pub/gnu. First, unpack both the libiconv and gettext sources in a directory of your choice, open the MS-DOS cripple shell ("cmd.exe"), and cd into the directory where you have unpacked the libiconv sources. There read the file "README.woe32" or just type nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 check nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 install The second command line will run the test suite (you may omit this step). Now cd to the directory where you have unpacked the gettext sources, and read "README.woe32", or just type nmake -f Makefile.msvc MFLAGS=-MD DLL=1 nmake -f Makefile.msvc MFLAGS=-MD DLL=1 check nmake -f Makefile.msvc MFLAGS=-MD DLL=1 install You should now go back into the libiconv build directory, and re-build the package again with native language support: nmake -f Makefile.msvc MFLAGS=-MD DLL=1 NO_NLS=1 distclean nmake -f Makefile.msvc MFLAGS=-MD DLL=1 nmake -f Makefile.msvc MFLAGS=-MD DLL=1 check nmake -f Makefile.msvc MFLAGS=-MD DLL=1 install You should now have the gettext and libiconv DLLs installed in "\usr\bin", and libraries in "\usr\lib". It should be theoretically possible to build static versions (instead of DLLs) of both gettext and libiconv, but I did not manage to do so here. Build libintl-perl ------------------ The Makefile.PL provided with libintl-perl normally autodetects the presence of the required gettext shared libraries, but this test (intentionally) fails under Windows. You have to bypass the mechanism by saying perl Makefile.PL DIR=gettext_xs This should produce an output like this: Checking whether we can compile the XS version ... no => Cannot build the XS version of libintl-perl (see 'config.log' for => details). This is harmless! Writing Makefile Locale::gettext_xs Writing Makefile for libintl-perl Ignore the warning, that the XS version cannot be built. It will be built anyhow. Now do the usual: nmake nmake test nmake install Please run the testsuite! If it fails, and you cannot sort out the reason, re-build the module without the XS version. Distribution ------------ If you want a binary version of libintl-perl, you either have to bundle it with the DLLs and libraries for GNU gettext and libiconv, or you have to build and link against static versions of the two libraries (which I didn't manage to do). In any case, please take care that your distribution does not violate the licenses under which GNU gettext, libiconv, and libintl-perl are provided! Please read the following statement by Bruno Haible, maintainer of GNU gettext and libiconv: Note that DLLs created with MSVC 7.0 cannot be distributed: They depend on a closed-source library 'msvcr70.dll' which is not normally part of a Woe32 installation, therefore the distribution of such DLLs - with or without msvcr70.dll - would be a violation of the LGPL. This problem does not occur with MSVC 6.0 and earlier. Guido Flohr libintl-perl-1.26/REFERENCES000644 000765 000024 00000002614 12507434022 015657 0ustar00guidostaff000000 000000 - the dvd::rip project http://www.exit1.org/dvdrip/ - the Sympa mailing list manager http://www.sympa.org/ - the public key infrastructure (PKI) OpenCA http://www.openca.org/ - the Lire log file analysis tool http://www.logreport.org/ - the GPG key-signing utility gpgsigs http://www.palfrader.org/gpgsigs - (the build script for) the TortoiseCVS CVS frontend http://www.tortoisecvs.org/ - the pure Perl implementation of the Twofish algorithm http://search.cpan.org/~guido/Crypt-Twofish_PP/ - the Imperia enterprise content management system http://www.imperia.net/ - the Imperia mailing list archive http://ml.imperia.org/ - the pimp Photo Importer http://www.grawert.net/software/pimp/ - midcat, concatenate MIDI files to stdout http://ptaff.ca/midcat/?lang=en_CA - Luci is the University of New Brunswick, Canada's enterprise website accessibility solution and requires libintl-perl via Crypt::Twofish_PP http://luci.sourceforge.net/ - gwine, the Gnome wine cellar management tool http://home.gna.org/gwine/ - gtestrunner (Test-Unit-GTestRunner), a unit test GUI http://search.cpan.org/~guido/Test-Unit-GTestRunner/ - hdico, search a definition in the Hachette dictionary http://svn.naquadah.org/listing.php?repname=hdico&path=%2F&rev=0&sc=0 - IWL, a GUI toolkit for html http://search.cpan.org/~viktork/IWL/ - Git, the stupid content tracker http://git-scm.com/ libintl-perl-1.26/ReleaseNotes000644 000765 000024 00000012130 12727471656 016643 0ustar00guidostaff000000 000000 Version 1.26 - 13 May 2016 * Fixed more false negatives in tests, no need to upgrade. Version 1.25 - 09 May 2016 * Fixed false negatives in test suite, no need to upgrade the module! * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=83980 https://rt.cpan.org/Ticket/Display.html?id=47968 Version 1.24 - 08 Apr 2016 * Better portability for tests. * Updated documentation. * License changed to GPLv3. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=98109 https://rt.cpan.org/Ticket/Display.html?id=47968 https://rt.cpan.org/Ticket/Display.html?id=83980 https://rt.cpan.org/Ticket/Display.html?id=102288 Version 1.23 - 24 Jan 2013 * New message retrieval backend Locale::gettext_dumb(3pm) which produces translations even, when the corresponding locale is not present in the system. * Fixed a bug where the Perl backend under certain circumstances clobbered the environment variable LC_ALL. * Avoid test failures by skipping all tests that depend on the de_AT locale, when that locale is not installed. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=82856 Version 1.22 - 24 Jan 2013 * Version 1.22 outsmarted PAUSE (the CPAN upload facility) and had to be removed. Version 1.21 - 15 Jan 2013 * Environment variables LANGUAGE and LANG are interpreted in the same way in the XS and the pure Perl version. * Package design closer to GNU standards. * If present, File::ShareDir is used for searching message catalogs. * Cleaned up distribution. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=78341 https://rt.cpan.org/Ticket/Display.html?id=81315 https://rt.cpan.org/Ticket/Display.html?id=79461 https://rt.cpan.org/Ticket/Display.html?id=71509 https://rt.cpan.org/Ticket/Display.html?id=49744 https://rt.cpan.org/Ticket/Display.html?id=49744 https://rt.cpan.org/Ticket/Display.html?id=64284 Version 1.20 - 29 Jue 2009 * Test suite revamped. Failures are now explained better, and it should be easier to debug them remotely. * Bugs fixed: https://rt.cpan.org/Ticket/Display.html?id=49744 Version 1.19 - 19 Jun 2009 * New context functions now work with Perl 5.6.2. * N__() now mirrors its argument in scalar context for convenience. Version 1.18 - 26 May 2009 * Cosmetic change: The version number is now both in Locale::Messages and in Locale::TextDomain to work around a shortcoming of the PAUSE indexer. Version 1.17 - 25 May 2009 * New context support, supporting .po files with msgctxt, and appropriate supporting calls (*pgettext calls) under both gettext_pp and gettext_xs. TextDomain.pm received corresponding calls: __p __px __np __npx __xnp. * New module Locale::Util with some utility functions, especially for web development. Attention, this is still alpha code! * Try to warn about wrong usage of the tied hashes in Locale::TextDomain. * Minor bugfixes Version 1.16 - 28 Sep 2005 * New function Locale::Messages::bind_textdomain_filter() allows you to register an output filter as a callback. You can use this feature for example to set the utf-8 flag on translated string when you are sure that the output is actually utf-8. * New function Locale::Messages::turn_utf_8_on(). * various minor bug fixes. Version 1.15 - 1 Sep 2005 * Workarounds and bugfixes for misconfigured Solaris systems * Fixed the completely broken simplecal example * Added section about non-ascii msgids to the POD of Locale::Messages Version 1.14 - 11 Aug 2005 * Oops: forgot to update the version check in Locale::Messages * The XS version builds easier on *BSD systems now Version 1.12 - 11 Aug 2005 * Minor bugfixes * The test scripts now check whether the needed locales are installed Version 1.11 - 11 Jun 2004 * Version 1.11 is a minor bugfix release Version 1.10 - 12 Jan 2004 * XS version now compiles under Windows (GNU gettext and libiconv required, build with "perl Makefile.PL DIR=gettext_xs", see README.win32 for details) Version 1.09 - 29 Dec 2003 * check version match with XS module * in pure Perl version, use user supplied locale name when guessing the output character set * corrections for Atari character maps Version 1.08 - 30 Nov 2003 * fixed bug #4512 on https://rt.cpan.org/ (reported by unknown guest) Version 1.07 - 28 Nov 2003 * bug with charset detection via I18N::Langinfo fixed * new function Locale::Messages::turn_utf_8_off() Version 1.06 - 24 Nov 2003 * fixed warning/error under Solaris 8 when I18N::Langinfo is not available * simplified sample packaging Version 1.05 - 10 Oct 2003 * fixed compatibility problems with gettext libraries under Solaris 8 and higher Version 1.04 - 09 Oct 2003 * support for language chains in $LANGUAGE (e. g. "fr_BE:fr:de") * performance tweaks for Locale::gettext_pp * do not clobber $@ in Locale::gettext_pp Version 1.03 - 15 Sep 2003 * alternative XS implemenation of gettext() and friends (outperforms pure Perl version by factor 10-15) Version 1.02 - 04 Sep 2003 * bugfixes for systems that lack both /usr/share/locale and /usr/local/share/locale * compatibility tweaks for Perl 5.005 Version 1.01 - 19 Aug 2003 * bugfixes * compatibility tweaks for MS-DOS libintl-perl-1.26/sample/000755 000765 000024 00000000000 12727473405 015605 5ustar00guidostaff000000 000000 libintl-perl-1.26/SIGNATURE000644 000765 000024 00000070771 12727473413 015623 0ustar00guidostaff000000 000000 This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.79. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 SHA1 8624bcdae55baeef00cd11d5dfcfa60f68710a02 COPYING SHA1 885e8516aad4e845f9854e396b8ab9818836ff12 ChangeLog SHA1 05e0ac56fee3246fb8a0a2ad0cabe26458306f9d Credits SHA1 ad3c45d276ebd3148c6b598ae9233f3c86cb9782 FAQ SHA1 aa08e47386124d0f16180d0f63d639e609124a32 MANIFEST SHA1 7f5626bb4787d10e8e3a500ecd8ecc1f7ebe705a MANIFEST.SKIP SHA1 962941c2078222f5555d8b553ed2bbbd9c606069 META.json SHA1 2c2a6780426ae9d7a6503e01b681f099261e705c META.yml SHA1 df4efdbc06d06c871365c5834186f45623225c25 Makefile.PL SHA1 c975c012aa03b8c6d1f9de52abbf965907cc12ad MyInstall.pm SHA1 342f7f69ed962356fbfc2864ac0a61d6587b2e32 NEWS SHA1 7071930cb73068f19476582c4de083624ee6da52 README SHA1 a87fd1ee2fc58ade00fdb34ea74d105197f8cb18 README-oldversions SHA1 1d7a1690360ac140ea197a5a7cdf55aefc6f40b5 README.solaris SHA1 5e425ffe22f0f6f30c4e74359eada8b546286dc9 README.win32 SHA1 fb302b7ad9a3ea06d5e332e16d43b126f54f31d9 REFERENCES SHA1 562edf6eb9a67ec69bca24de279fe54643eb7b38 ReleaseNotes SHA1 05e0ac56fee3246fb8a0a2ad0cabe26458306f9d THANKS SHA1 d7fe585333ed8730983a11e89ee255247cb16101 TODO SHA1 e91fafcc8c06228b258ff52ad3b43440e232f5ea gettext_xs/Makefile.PL SHA1 7214c7331142e6970270833eb6152718ed4953b0 gettext_xs/gettext_xs.pm SHA1 136c844ccdd04fd6e6f7eec4c93aa3ca26ae7662 gettext_xs/gettext_xs.xs SHA1 0d5918e4a140e678d49fa83de706d8c4e2903277 lib/Locale/Messages.pm SHA1 0481ad8c9ec54306311cf225661466b4140646b1 lib/Locale/Recode.pm SHA1 eb0b5983a3eeb2ade389442db3ddeab3c9d0d6a5 lib/Locale/Recode/_Aliases.pm SHA1 e741cbf6daf247a1917aa45d2cf6803b49bd33c5 lib/Locale/Recode/_Conversions.pm SHA1 ea4538de83a12e0219c9e77ac127b9a81904161f lib/Locale/RecodeData.pm SHA1 3a358dc3730746f620fb5a3f1a3ecb951902389e lib/Locale/RecodeData/ASMO_449.pm SHA1 7cfe07f5beb0bf5b38a4b7796d86194d675cafa9 lib/Locale/RecodeData/ATARI_ST.pm SHA1 2c1422c1270e645d5e6f8e5cd740523472b6f8e0 lib/Locale/RecodeData/ATARI_ST_EURO.pm SHA1 d745dd583ab874ac46944f75a18107703a9fb42c lib/Locale/RecodeData/CP10007.pm SHA1 86806a24ec671034c2477f3ef633104702c4dbd2 lib/Locale/RecodeData/CP1250.pm SHA1 a55c9c6ee4af36cc11a24e68f1d2218b67e1d60c lib/Locale/RecodeData/CP1251.pm SHA1 c0b800d919c1e396fe41dd41bec15610ef97a365 lib/Locale/RecodeData/CP1252.pm SHA1 20e6a20da2f9818f3fc434d1228c85f1f3745cae lib/Locale/RecodeData/CP1253.pm SHA1 b8349277fb3bc6492a5c53eb0e33b3b6c02e5d31 lib/Locale/RecodeData/CP1254.pm SHA1 348606a7d3bfa34fe54effbcd4d0170e95056b9d lib/Locale/RecodeData/CP1256.pm SHA1 5d9afd332f50f8491c0f31c05a648a75153a58c9 lib/Locale/RecodeData/CP1257.pm SHA1 dfa9a20a21ef52c235f33d697d165f62c124cc43 lib/Locale/RecodeData/CSN_369103.pm SHA1 f0c4564c4e1ecd3d08d8d53d29915d3f25b15e6c lib/Locale/RecodeData/CWI.pm SHA1 364c5e6afda760e64b46a3c2b7e8b74a852d079d lib/Locale/RecodeData/DEC_MCS.pm SHA1 27cb37fcc45c50f0e1af911cbbb7f50ddeb06a26 lib/Locale/RecodeData/EBCDIC_AT_DE.pm SHA1 8f9d06b10fda0168d74c153c7a2492692c603c0a lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm SHA1 410298f7d27701344302345c71ecde63d6377b8f lib/Locale/RecodeData/EBCDIC_CA_FR.pm SHA1 8654cf0b4c9f2fb596de2a4b891df5af6dc4a51f lib/Locale/RecodeData/EBCDIC_DK_NO.pm SHA1 0116bd39cc9c104761bf485b008bc0c1f1901d25 lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm SHA1 dc7beedd63c73ddc98a58fea4222d16096400d60 lib/Locale/RecodeData/EBCDIC_ES.pm SHA1 4bd6b55bcfcf5b8acdcfdbcbe55787ca7e01e5e0 lib/Locale/RecodeData/EBCDIC_ES_A.pm SHA1 e1b979139cf55f61d77a4aa9d1f86e39f14931d7 lib/Locale/RecodeData/EBCDIC_ES_S.pm SHA1 483bf58b0ecf070efd4e391df7d9cb99b0354402 lib/Locale/RecodeData/EBCDIC_FI_SE.pm SHA1 81d6fdccb8a1aa0c0ad664bda1c8cb7ff64168f5 lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm SHA1 01e90dd6ef865545cc45d17c7e19e316cd4b44e6 lib/Locale/RecodeData/EBCDIC_FR.pm SHA1 16330659f0810d4f3869368258ae697b0b7cac1a lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm SHA1 a8d3afb207a953ca30dc78ad12f3e319eb1b9c4b lib/Locale/RecodeData/EBCDIC_IT.pm SHA1 77644b42f2f20073b05a38df3ee4b25bcf23b6c7 lib/Locale/RecodeData/EBCDIC_PT.pm SHA1 6977f57095aa7e57c5ec67c0e4d860e84fda7de4 lib/Locale/RecodeData/EBCDIC_UK.pm SHA1 a4c2c9e3eecfcdbf6fee54f7ae2a3c096c4aad09 lib/Locale/RecodeData/EBCDIC_US.pm SHA1 e5d53239756dd06455176ccae23da70b5ee27933 lib/Locale/RecodeData/ECMA_CYRILLIC.pm SHA1 1d958c7342a67e746978e5a9244efb0701593432 lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm SHA1 7dd12f394b5fb3e8470163b2942eb9aecf8d0f0a lib/Locale/RecodeData/GEORGIAN_PS.pm SHA1 98ae6dcd9d2331df9617267a9bb2b2adccfc0317 lib/Locale/RecodeData/GOST_19768_74.pm SHA1 3b3575d81e095b892950be363a6475359635a1bb lib/Locale/RecodeData/GREEK7.pm SHA1 b23757c0d5a3b35838ed0914cd9ea3497bed993e lib/Locale/RecodeData/GREEK7_OLD.pm SHA1 00dfb0e55cc25ec68f130ee05121fd2fc25be442 lib/Locale/RecodeData/GREEK_CCITT.pm SHA1 39f25583485140230a1f4180dd216203bd91d1e0 lib/Locale/RecodeData/HP_ROMAN8.pm SHA1 b706fdfb1e5f8f4bbb69ddea5181adb8b9834fa8 lib/Locale/RecodeData/IBM037.pm SHA1 1a6ad4cbc2bc61bef75e012d074f73973af59780 lib/Locale/RecodeData/IBM038.pm SHA1 623b287057288ef1582eaf1ffa3ec602371ff1fa lib/Locale/RecodeData/IBM1004.pm SHA1 3bdb98cb5f7f84215cb79191bb3713d19bb89795 lib/Locale/RecodeData/IBM1026.pm SHA1 7fd3f9956ba6de24e91fb1b0971ca72683c481a5 lib/Locale/RecodeData/IBM1047.pm SHA1 90642a946ea23bf62cef139be2325ec59a254124 lib/Locale/RecodeData/IBM256.pm SHA1 739a632d8a6535ebd5ebf742dae74930430c910f lib/Locale/RecodeData/IBM273.pm SHA1 4883437d53c8a93892ce4d949d05779d8301e184 lib/Locale/RecodeData/IBM274.pm SHA1 ba1802a47d823329c78343937d18cc9f5ca68e93 lib/Locale/RecodeData/IBM275.pm SHA1 c43f2b424d3f0b3e129ed2dea8de9f7b0d4f7156 lib/Locale/RecodeData/IBM277.pm SHA1 e0fa18be0c480274090b946e2c549b87422053e0 lib/Locale/RecodeData/IBM278.pm SHA1 7c507a35e7641d50965f8c357db53d2a70d3c654 lib/Locale/RecodeData/IBM280.pm SHA1 5bb1b3dd788f2407a2a6b3bfd570abd0811ab05c lib/Locale/RecodeData/IBM281.pm SHA1 e13700e99cf98db7ec53d443bff75c7c219a7c69 lib/Locale/RecodeData/IBM284.pm SHA1 7529fd8c4763ed483e77b6e4123fe1d5b9b72cb8 lib/Locale/RecodeData/IBM285.pm SHA1 faa8ca0a1e6d47fcf9841241c3e29d12534a1e20 lib/Locale/RecodeData/IBM290.pm SHA1 27da2012f90af97f8e3346580b56cebe674a90e0 lib/Locale/RecodeData/IBM297.pm SHA1 28eda202eb4e6d7b1eca50504ee3d9c639ff203d lib/Locale/RecodeData/IBM420.pm SHA1 a7598d1707331a86020a209f98fb1ec6c29f3470 lib/Locale/RecodeData/IBM423.pm SHA1 2356187d035ff760e746bca55085f3698a3ffd39 lib/Locale/RecodeData/IBM424.pm SHA1 f1d3d20ca283a87f0d7b08f711703c8e28dfe459 lib/Locale/RecodeData/IBM437.pm SHA1 8cdced953f812a351a2cd28c67ff651a3026b810 lib/Locale/RecodeData/IBM500.pm SHA1 de28aceb78f2f6666e01ad361feabb4a43d1cfec lib/Locale/RecodeData/IBM850.pm SHA1 116d0bd6681aff76e66d9b5883fe0e5ba750eafc lib/Locale/RecodeData/IBM851.pm SHA1 1a8c01697a1fa9b96c721c8f3bc3798d3b48b366 lib/Locale/RecodeData/IBM852.pm SHA1 3d28b1a88fbd9b2174228d98bd4e71d869b1dd2d lib/Locale/RecodeData/IBM855.pm SHA1 aea329781ed773cc2ed17562ea5bc9e37a858dc4 lib/Locale/RecodeData/IBM857.pm SHA1 f14978dcfcb2e1691490d57a6cecf4a746b72443 lib/Locale/RecodeData/IBM860.pm SHA1 31fd137450b760414e1a9e1750b54ea22d6546c7 lib/Locale/RecodeData/IBM861.pm SHA1 24299c43987319d23a8723f3bc07da827b789849 lib/Locale/RecodeData/IBM862.pm SHA1 94e987543fb705f5b9eed4c97d49921f46803fd7 lib/Locale/RecodeData/IBM863.pm SHA1 3e13cbb78e3b1631c6b9e239c03d36e149a04262 lib/Locale/RecodeData/IBM864.pm SHA1 aa1c02a34b6127c4309fc27235de960e79b571ad lib/Locale/RecodeData/IBM865.pm SHA1 3eb38f2146f2a01165442331526e26b05202b0bc lib/Locale/RecodeData/IBM866.pm SHA1 328d1b890a50d28783d8e44d5b837ed811e7e961 lib/Locale/RecodeData/IBM868.pm SHA1 cfc88df35fbc93c5e1810b52fa546f4e0c5983ad lib/Locale/RecodeData/IBM869.pm SHA1 66e9071d54b9d31d28e61510b2bb5594c0ae77ae lib/Locale/RecodeData/IBM870.pm SHA1 05756d2603b78e1b197b55c9e66bd4cf4b879c3b lib/Locale/RecodeData/IBM871.pm SHA1 98f83dd848d6fa32354be304ea154e07f322e29a lib/Locale/RecodeData/IBM874.pm SHA1 745a0a16bbb8026facfc17af2317a8a4c5e3c760 lib/Locale/RecodeData/IBM875.pm SHA1 72295389690e40124f146684755899c368e8002e lib/Locale/RecodeData/IBM880.pm SHA1 a3114427fe59e5a1afc7957cb0e19f8bf1f91084 lib/Locale/RecodeData/IBM891.pm SHA1 138d722ddbfdd34441a293608573cfb55cf1e33f lib/Locale/RecodeData/IBM903.pm SHA1 bad85444d2a2cc43663000d3f6e2c243660ad8e5 lib/Locale/RecodeData/IBM904.pm SHA1 64222e1ec56a81da1bd4af1e338222cf20e030a4 lib/Locale/RecodeData/IBM905.pm SHA1 53a302db7b8645ef5d9320673e11625edf69eea4 lib/Locale/RecodeData/IBM918.pm SHA1 0cd21f521e08f61acd637cde05f3682d250658ff lib/Locale/RecodeData/IEC_P27_1.pm SHA1 a47e6428281d18919740275f3da3a3b8cf185c94 lib/Locale/RecodeData/INIS.pm SHA1 9c7a54f3106455b5f72462cf5efdd34c5078721d lib/Locale/RecodeData/INIS_8.pm SHA1 e023c8b667585d08084a5a777a23d9fd450b7389 lib/Locale/RecodeData/INIS_CYRILLIC.pm SHA1 c4281381b2c91578c99ff859e0d32021a2f2a0d5 lib/Locale/RecodeData/ISO_10367_BOX.pm SHA1 4b600443a9fe7de1aa374a38a07fb7c6cbe138b2 lib/Locale/RecodeData/ISO_2033_1983.pm SHA1 4968d4c0148341fcac5f76e1d461c00c0d28ee5b lib/Locale/RecodeData/ISO_5427.pm SHA1 11556657b4b2b592249a1c3feafbbd7df3b4f858 lib/Locale/RecodeData/ISO_5427_EXT.pm SHA1 fdde5dfed435592d3266b240a65394963da631d5 lib/Locale/RecodeData/ISO_5428.pm SHA1 8181225420ea8f12446b8e49cccc4f76061e82b6 lib/Locale/RecodeData/ISO_8859_1.pm SHA1 a3ba1615a3e24162f5be49339b46a92b79e913fe lib/Locale/RecodeData/ISO_8859_10.pm SHA1 6dd36ac11d661b48a25ae84426a91f5da5404fa3 lib/Locale/RecodeData/ISO_8859_11.pm SHA1 dcb04d81326c7580b7be63b2529c031d9f1c63f4 lib/Locale/RecodeData/ISO_8859_13.pm SHA1 68dc20d45bf35df8b1791a45e271856fb2684c91 lib/Locale/RecodeData/ISO_8859_14.pm SHA1 af6b634780ec74b564c7eccad0830a58794168b6 lib/Locale/RecodeData/ISO_8859_15.pm SHA1 ab361d41b729c787d57ff51e1745edb2ddc98a26 lib/Locale/RecodeData/ISO_8859_16.pm SHA1 dfb30cac53800eb68f7d38089688754ee08a5f0b lib/Locale/RecodeData/ISO_8859_2.pm SHA1 dd6de91465e40a7552cb3fac0405f23d4ff43334 lib/Locale/RecodeData/ISO_8859_3.pm SHA1 d329a5f54def4844d5afd9b88dc16c30a19b5a78 lib/Locale/RecodeData/ISO_8859_4.pm SHA1 59e5951b691907476c04264167dcc4c407011c69 lib/Locale/RecodeData/ISO_8859_5.pm SHA1 36790337118ed8c5e64cfab644b409a36720dd25 lib/Locale/RecodeData/ISO_8859_6.pm SHA1 29e473d5258a34e8c1a9fac95822459ab7ff2fbc lib/Locale/RecodeData/ISO_8859_7.pm SHA1 0e805e9c8545f1d6417b69f9c51728db223fb2e1 lib/Locale/RecodeData/ISO_8859_8.pm SHA1 50cd5e5f597f24dd4dc95491f1e769607144bf74 lib/Locale/RecodeData/ISO_8859_9.pm SHA1 32331753e27532713cc58d75f1f1616f1e9ae0ab lib/Locale/RecodeData/KOI8_R.pm SHA1 e6f0156debd169112d9f9a34cb497864e01905a6 lib/Locale/RecodeData/KOI8_RU.pm SHA1 6f7d17a9f624b3f9eb3f71370d7c8cf6653b238f lib/Locale/RecodeData/KOI8_T.pm SHA1 b5100905827736a85dc42e779832360c95932d01 lib/Locale/RecodeData/KOI8_U.pm SHA1 c9fa5c4a51768ed410394972d38687a912a9e3c3 lib/Locale/RecodeData/KOI_8.pm SHA1 fa32657133de370e49d0c3e8ddc11761afe560cd lib/Locale/RecodeData/LATIN_GREEK.pm SHA1 fd88d50b94ffc3a450a22dd2a10b21501fba03e3 lib/Locale/RecodeData/LATIN_GREEK_1.pm SHA1 b50896d438087a7559db98bda56dcd09345ce586 lib/Locale/RecodeData/MACARABIC.pm SHA1 ea67207cfe1ffaabd300c8c525ee9c74bbbae9c2 lib/Locale/RecodeData/MACCROATIAN.pm SHA1 31ced4f572deb86db68fbd3c07148fdbf7ba3830 lib/Locale/RecodeData/MACCYRILLIC.pm SHA1 320404cefb0eb64d5b12f1673e15c1d58125febf lib/Locale/RecodeData/MACGREEK.pm SHA1 718aa527efcf8211c2439e9316cffcf36293114d lib/Locale/RecodeData/MACHEBREW.pm SHA1 c2696bf91a3a85a50b2e3586e093cc8388968ab8 lib/Locale/RecodeData/MACICELAND.pm SHA1 80e76f663c144cbbff21567d9924624bee076bb7 lib/Locale/RecodeData/MACINTOSH.pm SHA1 6dd99bff9056857f6c1ea0bc01d12caa210f0c9d lib/Locale/RecodeData/MACROMANIA.pm SHA1 748b2d3d6fb6d537b399b5179c16b5b8627ee96d lib/Locale/RecodeData/MACTHAI.pm SHA1 38ebb5ea2b57f0f252c6abd8c48f1b6f17e2d8ae lib/Locale/RecodeData/MACTURKISH.pm SHA1 320556098e58c404dd08a9a453d76f743e1fac2f lib/Locale/RecodeData/MACUKRAINE.pm SHA1 72223755f88d1b2ccb44952a8daa6f8cede6d414 lib/Locale/RecodeData/MAC_IS.pm SHA1 02ea799a7034c9112fcaf090959bf2e899edea5a lib/Locale/RecodeData/MAC_SAMI.pm SHA1 d16a70cceb571e91292188773cd83a85b830f651 lib/Locale/RecodeData/MAC_UK.pm SHA1 21f3ad150e41f3c0bda33ec9cd60657e37437ba3 lib/Locale/RecodeData/NATS_DANO.pm SHA1 17152e5f987dc53ddf60dce6b784d543d7c718cd lib/Locale/RecodeData/NATS_SEFI.pm SHA1 d220fdfacfc220f10db1e69aadfbe304f98ca0b0 lib/Locale/RecodeData/NEXTSTEP.pm SHA1 c983d807d0d59ba65ad9e557ba9133d93dc70dbf lib/Locale/RecodeData/SAMI_WS2.pm SHA1 a733c115ef43d6fcd154a4056ee4a615e355f007 lib/Locale/RecodeData/TIS_620.pm SHA1 4e1f3e87f6eb4aa1b01de02ac7a0fc742d0d14a2 lib/Locale/RecodeData/US_ASCII.pm SHA1 695e0a330dd4c61ff38728251b94fa1b914ba95a lib/Locale/RecodeData/UTF_8.pm SHA1 639650b773789e6dc0bb32883aebf79e38b9808f lib/Locale/RecodeData/VISCII.pm SHA1 cf04a5c943c15bdc6c540308bf42b29b93a40d08 lib/Locale/RecodeData/_Encode.pm SHA1 63109cadf398e488e61c70ca3c909313c54a2a13 lib/Locale/TextDomain.pm SHA1 a3753f6f967fee427f7a9bab52cecab31d04fa0b lib/Locale/Util.pm SHA1 92585ddb66dde3c68ea454604630dac7948fc88c lib/Locale/gettext_dumb.pm SHA1 659c718b83308261e919d3bcf06ecef0c7205860 lib/Locale/gettext_pp.pm SHA1 0651d5aab50a13fb6ffdee3a33c2b9b804007fb9 lib/Locale/gettext_xs.pod SHA1 647e61ce1c1129b8ef1da213a67b759538e4cc50 lib/Locale/libintlFAQ.pod SHA1 167cd8b21925447925c6aeae7f0f4a93b6dac997 sample/README SHA1 4c4d3efeb5ad2b80eeddde426cd2b0eebd9fea15 sample/simplecal/MANIFEST SHA1 06385754221bcda32deae87a6ebade602deb476b sample/simplecal/Makefile.PL SHA1 7951d635feac4fe4bc9a51f81e78610e46db7c2e sample/simplecal/README-NLS SHA1 4b3e82e4eeba33252ba3033a0dd6d565fbd8f628 sample/simplecal/TRANSLATIONS SHA1 c7d2ff4767d4834a575502d600158829adcdf69f sample/simplecal/bin/simplecal.pl SHA1 c06e8560bc416dd36c83a77ba4c70f1db86b40f7 sample/simplecal/lib/SimpleCal.pm SHA1 cdb943efbfbe7b25788c224da24f1a4138484316 sample/simplecal/po/Makefile SHA1 2e31a847f62629df488362b50875bb65cf43d014 sample/simplecal/po/PACKAGE SHA1 a01083fb1eea3e1668f8ab0a71489adaa67ca659 sample/simplecal/po/POTFILES SHA1 b069cf9ca20deee0e0b0bf649f4c18628eae71cd sample/simplecal/po/ar.po SHA1 d999e42344cbf3c9eafd22346c5a1801d0b58e8e sample/simplecal/po/ar_SA.po SHA1 3a04432df1ffb52fc88a944a13f26654b53dc184 sample/simplecal/po/com.cantanea.simplecal.pot SHA1 2718ecfa83dbf1d58d116a536e0dc85ef1571efe sample/simplecal/po/cs.po SHA1 daf901d2b8cbf3876130a6b6222130843398eb0b sample/simplecal/po/de.po SHA1 26d92e475d2127ba74b0594cc13c6e317d58a879 sample/simplecal/po/de_AT.po SHA1 9d27384fd29a30b0da1aaa6125cd1dfefd17b977 sample/simplecal/po/fr.po SHA1 1ffff66f95ca6bb2abc1c18016c8af5ec7f60a02 sample/simplecal/po/ga.po SHA1 9b6573b66948573e2715ea236d0be336d36863f5 sample/simplecal/po/it.po SHA1 da895bb4654f5c9990c4c58db7cf43be4d3302c6 sample/simplecal/po/nl.po SHA1 89ce824ea1a71c80d3d94890dc12189ec624586c sample/simplecal/po/pt.po SHA1 6f9e9d879d4bde895f7be913fbc78131ce200b19 sample/simplecal/po/pt_BR.po SHA1 48bf3e6ea2c1eb3ea049a94bce8385761fbc076b sample/simplecal/po/ru.po SHA1 f496476b9abb1be0a3d7cc17c962b65c4b154071 test.pl SHA1 76df713be4fc9628d643d996919217efdbbfeedb tests/00gettext.t SHA1 1aaf55cc0d546d1aaefa746e072b9f4bbd049881 tests/00recode.t SHA1 75de6e83e94c1ec377b9d65cb7583dc3a8023019 tests/01trivial.t SHA1 6b8cea78474f0ee98a5b130573f44781c79ed90f tests/02asmo_449.t SHA1 15f7418ae16663e334b74be65d81a713ade81bda tests/02atari-st-euro.t SHA1 5f4cc9a999d0dfc854e5013877bb218db3de3364 tests/02atari-st.t SHA1 3746f4c62f10508988a207b0a67c74a9a41c2fed tests/02cp10007.t SHA1 412908e3e1ed0c0292169c4dc6c791180817bf2c tests/02cp1250.t SHA1 2a848aacdab09db4df059333d423d3785e9d5cfa tests/02cp1251.t SHA1 6638a51dc57bcff90d9fc3cbb14dd0017f494dd6 tests/02cp1252.t SHA1 e324bf802dd3ba57a0c6b7d44303b8dfd3fe4b1f tests/02cp1253.t SHA1 1859ce37b811d1b8c3caa48a08b1fc54c2a5a0c8 tests/02cp1254.t SHA1 3dbc1d0f6874c383ba63495b5c01762c33f75958 tests/02cp1256.t SHA1 628457b78469d51aaaba87421b2048c36f71f3e6 tests/02cp1257.t SHA1 ab654bc7685a7ce0e23f7bd6d0e6b2df1b30398b tests/02csn_369103.t SHA1 ece756377ea2c8ac46f9aced2a7d2b07af71320d tests/02cwi.t SHA1 a801269633d6cfe952f8f765e89b42f6571dadcb tests/02dec-mcs.t SHA1 048b2a5652b8590a161145254f44b9e9c0aa1f88 tests/02ebcdic-at-de-a.t SHA1 6032437a3115e93714ee10fb1aabcdc0995c3a44 tests/02ebcdic-at-de.t SHA1 1bd8f3423208361fd0ad0b8b462b2ec7c0ad78c0 tests/02ebcdic-ca-fr.t SHA1 b47fd497dd754d25a50c168745f728f20b16d815 tests/02ebcdic-dk-no-a.t SHA1 9acda8b3adfab99f8bf77f9bcf0cf351148291c6 tests/02ebcdic-dk-no.t SHA1 49989ed120c3248f67d1451f9413f13489fb5742 tests/02ebcdic-es-a.t SHA1 0bbbc67f4d6c52aa804f93b2379704bfd95b39ca tests/02ebcdic-es-s.t SHA1 3a9f24cb4597f8084eb1609c11ff3f059c139bc4 tests/02ebcdic-es.t SHA1 79ccd2bfd4882fc31b703977ef7577233dd84a52 tests/02ebcdic-fi-se-a.t SHA1 9461e9dc41440beb538e20fc1b34fde487249dce tests/02ebcdic-fi-se.t SHA1 34f632f52e7a097ce8d1de05c71e1ba13d3c54f9 tests/02ebcdic-fr.t SHA1 f0c88053cb05dd07e61659652467a858dbdb4c2d tests/02ebcdic-is-friss.t SHA1 4c29ef39563a68d99684a3d5683c9083b012081e tests/02ebcdic-it.t SHA1 16bfb15c88754fddd80b42fdaa7b6aae8a9a716f tests/02ebcdic-pt.t SHA1 2b15b5a60b4e529043cb7415f3b4f6d8d8ab7851 tests/02ebcdic-uk.t SHA1 c4211df7ef58e9f5cf0727670db3da1fbfaf5af1 tests/02ebcdic-us.t SHA1 299236f6df680301fc4602c0f2e213197ceb0d50 tests/02ecma-cyrillic.t SHA1 7fca538131e506e356e71d6d63524bac15c6344b tests/02georgian-academy.t SHA1 c049cc226e317b01b2cd4641c7322703a96b96f0 tests/02georgian-ps.t SHA1 bf00499abd30fc186e289f39430c2b0b0670f75a tests/02gost_19768-74.t SHA1 8aaa384d9276225ac16a40c4d2762e84a1da1ed8 tests/02greek-ccitt.t SHA1 0148309f5daf8d13a12687fc7970848d928609d8 tests/02greek7-old.t SHA1 3ee6d0f48da72e0114b5910452f7e7b94f23928f tests/02greek7.t SHA1 d9a6a6513356f2fb1ce92910498fdbc113ded391 tests/02hp-roman8.t SHA1 068841252da4c31dbb9ab0d9c20d15532881d582 tests/02ibm037.t SHA1 bedb54ffbe20f262f03b0164f15c2baa0fa84485 tests/02ibm038.t SHA1 fa2dd4dbb23c141f6109ebb19c54fa0da8de3c1b tests/02ibm1004.t SHA1 8aed3c4cf045e40912d76dbccc69f05fc14cba5d tests/02ibm1026.t SHA1 6fca99d9ba849eb71e1daae5a4753826d2ddf231 tests/02ibm1047.t SHA1 c1676bd239234cc24f014bd8eeeffe816d68da4e tests/02ibm256.t SHA1 ccecb33064599a8500de9da97c1e14bf871b2f1b tests/02ibm273.t SHA1 86ba2ace54553c49dee6e3cd5a932e8b44a61bf7 tests/02ibm274.t SHA1 ed124e916b61307a52e1fcd5ca906594c16c4c6f tests/02ibm275.t SHA1 941ddb459e8005dc0b435d3b57ae9d954fa33987 tests/02ibm277.t SHA1 d8c575f48f34bf94320f40a85c218198e0db1f0a tests/02ibm278.t SHA1 b7651e3209d51c02434007a9c2013606a2d0a8e8 tests/02ibm280.t SHA1 bc10e8677b97a81c62d762c10a0a4d180de58763 tests/02ibm281.t SHA1 e625a7f09236ea3aa4ab550887c0f0cf4c054038 tests/02ibm284.t SHA1 9a3bbb2afb3a31f2ef81df473e1ae14eaff67adf tests/02ibm285.t SHA1 b08eb0be3fc7b6f1ebdc137a2d934b61bf8732a8 tests/02ibm290.t SHA1 a375935b40d9051521ac96be36aa31a185c73914 tests/02ibm297.t SHA1 8aa4c00fa87f3016e9c3211cf934c0bb6b1bceb6 tests/02ibm420.t SHA1 5a7e73a6a3a5e89f8ff70e85c837461ea57ef974 tests/02ibm423.t SHA1 5f36bf32e66ae1acd2ec9ef5c4e6b121be207a15 tests/02ibm424.t SHA1 0367b9d095291142c0ac76db3f1a79234ec2e868 tests/02ibm437.t SHA1 616a4465cc91f080206dd6cc912deef769aa7763 tests/02ibm500.t SHA1 75bb689b7ac3e4ef91f12f8c2eeb20b6bc77ef03 tests/02ibm850.t SHA1 1450c8c63699b7c0776f508c13a4033ce3066d8d tests/02ibm851.t SHA1 1f91937bf714c02ee708c305e011b3d2879a1048 tests/02ibm852.t SHA1 648395b81f945ab79d915b8edaf057d1be6e8127 tests/02ibm855.t SHA1 6cb9c456995ad924d474c9352026177a86c7e878 tests/02ibm857.t SHA1 7f0a8d999259afaff76666f71095f3cc6045b22c tests/02ibm860.t SHA1 129d281f5c4336c3700ecfa056f2e13eb9ab07c7 tests/02ibm861.t SHA1 3ec582c47191d0005e113993b5f753a19f7d7f52 tests/02ibm862.t SHA1 17f0f03c87a742d897807503cd119f710f8bba1d tests/02ibm863.t SHA1 b20c2f7b6b1f66193c433e30ecfebfcb1f9324b2 tests/02ibm864.t SHA1 04286980935a441f6f86316932dafc60ce8c7df9 tests/02ibm865.t SHA1 c72f8f3a9c3b3ce9f2174819800ad2710c8ec029 tests/02ibm866.t SHA1 6d4d6805cd582e8daba1d5911dd7c3b9921180fd tests/02ibm868.t SHA1 a3bb09767ccc35743f6f42ffa8154668f1ed2758 tests/02ibm869.t SHA1 6529dc421d6cd174532219220e6923f3a3cee4b9 tests/02ibm870.t SHA1 28e5455b019cd5804a3faaecaacfd3b1fa5be89c tests/02ibm871.t SHA1 5de56e47cbb1ccb2ae6e331e98b55d749a8dff98 tests/02ibm874.t SHA1 a481a73664678d6dc67bc92c8a808339793604fd tests/02ibm875.t SHA1 3b2bf280ec5b7d4bf609e63352120fa0033baab2 tests/02ibm880.t SHA1 700c9cb238ad245c9eb1d7e81ccb144dd8a59d08 tests/02ibm891.t SHA1 3dc27b08dc788866c66687504e0b45b8d5605e16 tests/02ibm903.t SHA1 b14b634cedf43f17ffcf5003af1de97cfb00d1d7 tests/02ibm904.t SHA1 5d7de73f91d45d96ccb22b2b3aca9a7a026301e3 tests/02ibm905.t SHA1 fed75c205d98fd2ae7510e3d1256604a4e32d8cd tests/02ibm918.t SHA1 8da200497f6a2b41be943f6b131c1c739a314886 tests/02iec_p27-1.t SHA1 1995df227b1ca0cd7c696d9e256fc83b998806e5 tests/02inis-8.t SHA1 6042f86cb47a009d332a423a998d24294cf346b8 tests/02inis-cyrillic.t SHA1 ec99344c6ae6d08195f4467f39316bc7e7986c90 tests/02inis.t SHA1 9b9b92dd573401f75a3eee2049de01d3ccbb987f tests/02iso-8859-1.t SHA1 aa7cf1d183dc51cb43e393cd78c6834499f82bb4 tests/02iso-8859-10.t SHA1 417d0b33dfc275c758911277f11ca23ac962086a tests/02iso-8859-11.t SHA1 68dd801312d61e4a1e7e10ad79d8a902a2c6a6bb tests/02iso-8859-13.t SHA1 8e6356ace0102966566cda44e96346c3afd65c96 tests/02iso-8859-14.t SHA1 826381795c89a372a11224c2052d8907f2c97dbd tests/02iso-8859-15.t SHA1 d27b3067545abbf96af912451b2830fed4a03abb tests/02iso-8859-16.t SHA1 02ec85b65e00a988f01a8ee2325f74be282756ba tests/02iso-8859-2.t SHA1 772bead8a8c9f055d3604793bd179deebb781809 tests/02iso-8859-3.t SHA1 b29be8edfa6b2059a525184ea7f19e1d1d9529c2 tests/02iso-8859-4.t SHA1 de1d34dad350557e85951b4d3a70a0158b78a0cc tests/02iso-8859-5.t SHA1 8b735c7458832c5c8226228b83400ddd448b0fd1 tests/02iso-8859-6.t SHA1 3cdf799653257e4045ce9eb964af60639023ab42 tests/02iso-8859-7.t SHA1 882cfb637b1652e9f60f5d7ad89a04a30a9339b2 tests/02iso-8859-8.t SHA1 ab7360de3e0f83a031d25b9cc6774921f678112a tests/02iso-8859-9.t SHA1 5b3c7c5e16bd82aed8e4ad42f4f002896565eac9 tests/02iso_10367-box.t SHA1 755b96ea39a22a880828b065ec391bf81c84a89e tests/02iso_2033-1983.t SHA1 e0806b3733acf2e44e636be866c63a916b2e6787 tests/02iso_5427-ext.t SHA1 b8adfea29292723fe33213c6b95826ff8ff70aff tests/02iso_5427.t SHA1 7477f7be56c7df215cc303018438fa6e64b2dd6e tests/02iso_5428.t SHA1 b5932e37fb183df7bf554f56d382d1bc203bfe1c tests/02koi-8.t SHA1 c4ad19ccce4c064e2e1e38b2c45d34ec153746ed tests/02koi8-r.t SHA1 e15ffe5f273294ab85e92bb848fb65e3927befd7 tests/02koi8-ru.t SHA1 b4ef19d2f8df72dbf89c607f6d011baaf0c3f84f tests/02koi8-t.t SHA1 3e06e0c6def450e4084e2892d972dc57585c43d1 tests/02koi8-u.t SHA1 1b3702366a43fcbc7aaaaa62412c1aebbff8a932 tests/02latin-greek-1.t SHA1 1fc8f3750459f4fd2bdc06699f220b8542ff8f2c tests/02latin-greek.t SHA1 424e3f118ecab430f5907baed454dd71b6be9b5d tests/02mac-is.t SHA1 cf6b2be1cd8a89551a6217633e1bc78e94888d03 tests/02mac-sami.t SHA1 583d166c36174bc028ac212b4b07c081f5405214 tests/02mac-uk.t SHA1 b665ecc52ecff7f8453e2d4bf1aed75dd4276a7b tests/02macarabic.t SHA1 5656b38a1aeddd88771176f68987dfb89db32e21 tests/02maccroatian.t SHA1 377cc1ff9ce7925531a358d6929c9a00675a0bef tests/02maccyrillic.t SHA1 22d0138eeebeeae784593327bb5bbd0d3a0fd6ee tests/02macgreek.t SHA1 43acc40125c13cf07e173a377cc792e04f1b4de3 tests/02machebrew.t SHA1 c70c7dec3d27bf4a9d58ed32a6a12110ce3557e7 tests/02maciceland.t SHA1 5a2ef4ea1f0315a20728ea5b4c8313c65bfcd5d4 tests/02macintosh.t SHA1 74de7ec0fb84b0a295d1d430028aeff57d226660 tests/02macromania.t SHA1 cda48214c543b1adb5624a63dd7d3a551b9dc443 tests/02macthai.t SHA1 2b840000eac62699caf24971c2b841bf209cf9b8 tests/02macturkish.t SHA1 3a40a8f12e08f8bb1ae071b68e5aec0e36664154 tests/02macukraine.t SHA1 1f1f3ec7560c100655354a9e56e8e23b12ea7091 tests/02nats-dano.t SHA1 833b45a9fe09f56e09d01b178588766bd2ceaf23 tests/02nats-sefi.t SHA1 2048985631f38c88ef51cdd7ff471a32bd52f9f0 tests/02nextstep.t SHA1 3360c8ab9d23b7ae4a1b788ba39e1b201756adf4 tests/02sami-ws2.t SHA1 eb9cac49bb5e38732a69adcc439373ddc74a2d81 tests/02tis-620.t SHA1 1d325459023e00c46a3abf5597c6588395267cde tests/02us-ascii.t SHA1 a576cb58e11cd7963144caf9c6bf8f81ca565d71 tests/02utf-8.t SHA1 f8e772505fed60dfde0809069300cf0c6ee3c66e tests/02viscii.t SHA1 3c8856c52ac0de8afa8f5f6776da7759e7594769 tests/03_tester_david_pp.t SHA1 3c8856c52ac0de8afa8f5f6776da7759e7594769 tests/03_tester_david_xs.t SHA1 df4f0ca8fc81110fbbece247cee0ca20c1e632e8 tests/03bind_textdomain_codeset_pp.t SHA1 df4f0ca8fc81110fbbece247cee0ca20c1e632e8 tests/03bind_textdomain_codeset_xs.t SHA1 449b8f6c85956c062d2981b97e959a8d2ac4bae3 tests/03bind_textdomain_filter_pp.t SHA1 449b8f6c85956c062d2981b97e959a8d2ac4bae3 tests/03bind_textdomain_filter_xs.t SHA1 913d0811ff2a946e2145ec61a4c364b882f24838 tests/03bindtextdomain_pp.t SHA1 913d0811ff2a946e2145ec61a4c364b882f24838 tests/03bindtextdomain_xs.t SHA1 8e96759a0edbd7b7ed031616b271dcc181494dc3 tests/03dcgettext_pp.t SHA1 8e96759a0edbd7b7ed031616b271dcc181494dc3 tests/03dcgettext_xs.t SHA1 b4ac62e3043755175c24e8bdb2fc9df2f2b03f7c tests/03dcngettext_pp.t SHA1 b4ac62e3043755175c24e8bdb2fc9df2f2b03f7c tests/03dcngettext_xs.t SHA1 9fddd3ce5a92d9ec34aaede921a485795a1f92b7 tests/03dcnpgettext_pp.t SHA1 9fddd3ce5a92d9ec34aaede921a485795a1f92b7 tests/03dcnpgettext_xs.t SHA1 60d0e8e7b6533c14a9ad3c034ba7c8fcac297e71 tests/03dcpgettext_pp.t SHA1 60d0e8e7b6533c14a9ad3c034ba7c8fcac297e71 tests/03dcpgettext_xs.t SHA1 9bd1f333e4c9a3554c42b17962f5ede6b6dbe684 tests/03dgettext_pp.t SHA1 9bd1f333e4c9a3554c42b17962f5ede6b6dbe684 tests/03dgettext_xs.t SHA1 e48e9c465821da372e5d79802d8bf4fdcae5a414 tests/03dngettext_pp.t SHA1 e48e9c465821da372e5d79802d8bf4fdcae5a414 tests/03dngettext_xs.t SHA1 d8944efc503fc75db4d42bfd73f5675851c775a1 tests/03dnpgettext_pp.t SHA1 d8944efc503fc75db4d42bfd73f5675851c775a1 tests/03dnpgettext_xs.t SHA1 338acf827a80fc34a99b99009e3807ba7601f527 tests/03dpgettext_pp.t SHA1 338acf827a80fc34a99b99009e3807ba7601f527 tests/03dpgettext_xs.t SHA1 82de9da38bbbfb89796ab4d95f7169439ae980cf tests/03environment_pp.t SHA1 82de9da38bbbfb89796ab4d95f7169439ae980cf tests/03environment_xs.t SHA1 47a95f4e0ed150f41ec0eeae6904c4217751f385 tests/03gettext_dumb.t SHA1 e8175d1587d83f8d670c0a0269497d00a466f016 tests/03gettext_pp.t SHA1 e8175d1587d83f8d670c0a0269497d00a466f016 tests/03gettext_xs.t SHA1 7e1819160386648e9a6a357d755cf3cc39ff6433 tests/03language_pp.t SHA1 7e1819160386648e9a6a357d755cf3cc39ff6433 tests/03language_xs.t SHA1 72f29cda976a980b942bbd3b402ca639a191b089 tests/03ngettext_pp.t SHA1 72f29cda976a980b942bbd3b402ca639a191b089 tests/03ngettext_xs.t SHA1 0dcd38f3f03ad64b1f30c5d40b082122f51c6b2b tests/03npgettext_pp.t SHA1 0dcd38f3f03ad64b1f30c5d40b082122f51c6b2b tests/03npgettext_xs.t SHA1 96a5dc1a9e199739842a09c999757b55a7bfd5f5 tests/03pgettext_pp.t SHA1 96a5dc1a9e199739842a09c999757b55a7bfd5f5 tests/03pgettext_xs.t SHA1 61d42e04fae2ae1e76c25b684b3aa2c735b81952 tests/03textdomain_pp.t SHA1 61d42e04fae2ae1e76c25b684b3aa2c735b81952 tests/03textdomain_xs.t SHA1 1778bea35b0cd8fc1ad7e3d50fdd587706426007 tests/04find_domain_bug.t SHA1 0c0aacc76a0fe1df0e2c0b489c7c398cf23cf823 tests/04russian_plural_function.t SHA1 8ce53db123150ffe7f18166aea023ee5ef64d998 tests/04scalar_noop.t SHA1 cc628e7e010ba15e345aadf8745cf2ddd2ac7a7e tests/05parse_accept.t SHA1 19ba2b54f0fce6d48fbcda660c12563231a9c56e tests/LocaleData/de/LC_MESSAGES/additional.mo SHA1 ff510c3e687efa605c7bb038d07aa139bbce02aa tests/LocaleData/de/LC_MESSAGES/existing.mo SHA1 f4212afcab01a4e7da3644eb29b6ed367d90e9e0 tests/LocaleData/de_AT/LC_MESSAGES/additional.mo SHA1 883835f4382d2fbca96dab9e1f20438a59941e69 tests/LocaleData/de_AT/LC_MESSAGES/existing.mo SHA1 227009e0e40370ee0bbc19c0086d0e52bc1bad9e tests/LocaleData/xy/LC_MESSAGES/additional.mo SHA1 d451647a90af7c69c7f35dc94a31c2bfacab290d tests/LocaleData/xy/LC_MESSAGES/existing.mo SHA1 cdd479809eed189cb4f9325fc4c93b5c417ae27d tests/LocaleData/xy_XY/LC_MESSAGES/additional.mo SHA1 f03bb29471a4791a7d90f0684ef4cb5dc5518ae0 tests/LocaleData/xy_XY/LC_MESSAGES/existing.mo SHA1 f37e1e7367d05e4ac6368040d4bfc3a698acbfa0 tests/po/Makefile SHA1 4a5feb8e042c2fba5d305c7f59ac9dea0cfac40a tests/po/additional.de.po SHA1 35af151717b920ec86a1023dbad29b6a1b9b1e3a tests/po/additional.de_AT.po SHA1 d0b4fd3796d6e1c65d5e148462bbfd25039f2b28 tests/po/additional.xy.po SHA1 d080d61b0ebdbed4367e3127fef20056dcfeb9a8 tests/po/additional.xy_XY.po SHA1 8dd756340d2c956a930dbde77594c22d332ebc83 tests/po/existing.de.po SHA1 9e5e4ed209397bbfa7539076a136bd72e3aa9148 tests/po/existing.de_AT.po SHA1 75f164ded24c6a4418c43492a51d685efca2d65c tests/po/existing.xy.po SHA1 b855afe7fdba66ec7ec241079309df31f67a1147 tests/po/existing.xy_XY.po -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAldedwUACgkQOo0HNPWNDz2TgQCdGowNvuDrC3QP5KSjmN7M6hvL 8OQAoOdlaZR+FWbADXTup3fa8zBb2yZY =5Uf8 -----END PGP SIGNATURE----- libintl-perl-1.26/test.pl000755 000765 000024 00000010752 12716420043 015634 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # Portable character conversion for Perl. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This is a safe wrapper for systems that lack a POSIX shell or have # a too low limit on the length of the command line. use strict; use File::Basename; use Test::Harness; use File::Spec; sub test_harness; my $here = dirname ($0); my $test_dir = $here . '/tests'; my @lib_dirs = ($here . '/blib/lib', $here . '/blib/arch'); local *DIR; opendir DIR, $test_dir or die "cannot open test directory '$test_dir': $!"; @ARGV = sort map $test_dir . '/' . $_, grep /\.t$/, readdir DIR; closedir DIR; eval { require Encode; }; unless ($@) { print "# Encode revision used is $Encode::VERSION.\n"; } test_harness ($ENV{TEST_HARNESS} || 0, @lib_dirs); sub test_harness { $Test::Harness::verbose = shift; local @INC = @INC; unshift @INC, map { File::Spec->rel2abs($_) } @_; my $name = $0; $name =~ s,test\.pl$,xs_disabled,; local *HANDLE; open HANDLE, "<$name" or die "cannot open '$name': $!"; my $xs_disabled = ; close HANDLE; eval { require POSIX; POSIX::setlocale(POSIX::LC_ALL()); }; my $has_locales = !$@; if (!$has_locales) { $xs_disabled = 1; print < ''); unless ($has_de_locale) { require Locale::Util; $has_de_locale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de'); undef $has_de_locale unless ($has_de_locale && $has_de_locale =~ /(?:germany|de)/i); } unless ($has_de_locale) { $xs_disabled = 1; print < has extended libintl-perl to provide the important context-sensitive functions (pgettext() and friends). - Christian Lackas has given various hints on performance optimizations - Ingrid Gräfen has fixed a major performance penalty on systems without POSIX::LC_MESSAGES, and she has extensively tested the Perl backend for GNU xgettext under cygwin - Bruno Haible for libiconv which was the base for many conversions and for integrating my Perl backend into GNU gettext Other people have helped by sending in improvements, suggestions and bug reports (you will find out how to make the mail addresses valid): - DH - Jo-Even Skarstein - Gerhard Stoll - Marc Brockschmidt - Laurent Bonnaud - Jan Kratochvil - Светослав Агафонкин - Michael Bell - David Cantrell - Karl Berry - Patrice Dumas - Karen Etheridge - Slaven Rezić Please inform me if I have forgotten your contribution. Guido Flohr libintl-perl-1.26/TODO000644 000765 000024 00000001567 12511126664 015016 0ustar00guidostaff000000 000000 - web_set_locale returns the language and the country for lang/country combinations (eg. de-AT) in the language field. Correct? - add conversion modules for other Unicode encodings than UTF-8 (UTF-16, UCS-*) - Better support for Windows, the locale detection stuff does not really work there. Any help would be appreciated. - Check whether other locale categories than LC_MESSAGES work. - Avoid call to __load_domain in Locale::gettext_pp, use a cache table first - The pure Perl version of gettext will always look for message catalogs in /usr/share/locale/{LANGUAGE}/LC_MESSAGES after the directory specified by bindtextdomain(). This can lead to undesired results. But I think the C version from libintl does the same, correct? - Allow to dynamically expand the list of supported conversions - Allow to dynamically restrict the list of suppported conversions libintl-perl-1.26/tests/00gettext.t000644 000765 000024 00000001404 12511127523 017462 0ustar00guidostaff000000 000000 # -*- perl -*- # Test if module loads ok. # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) BEGIN { $| = 1; print "1..1\n"; } END {print "not ok 1\n" unless $loaded;} use Locale::Messages; $loaded = 1; print "ok 1\n"; ######################### End of black magic. __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: libintl-perl-1.26/tests/00recode.t000644 000765 000024 00000001402 12511127523 017235 0ustar00guidostaff000000 000000 # -*- perl -*- # Test if module loads ok. # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) BEGIN { $| = 1; print "1..1\n"; } END {print "not ok 1\n" unless $loaded;} use Locale::Recode; $loaded = 1; print "ok 1\n"; ######################### End of black magic. __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: libintl-perl-1.26/tests/01trivial.t000644 000765 000024 00000002335 12511127523 017455 0ustar00guidostaff000000 000000 # -*- perl -*- # A trivial conversion. # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' use strict; use Test; BEGIN { plan tests => 4 } require Locale::Recode; sub compare_internal; my $text = 'Perl'; my $expect = [ unpack 'C*', $text ]; my $cd = Locale::Recode->new (from => 'ISO-8859-1', to => 'INTERNAL'); ok !$cd->getError; my $result = $text; ok $cd->recode ($result) && compare_internal $expect => $result; # Aliases! $cd = Locale::Recode->new (from => 'lAtIn2', to => 'l3'); ok !$cd->getError; $result = $expect = $text; ok $cd->recode ($result) && $result eq $expect; sub compare_internal { my ($bonny, $clyde) = @_; return unless defined $bonny; return unless defined $clyde; return unless 'ARRAY' eq ref $bonny; return unless 'ARRAY' eq ref $clyde; return unless @$bonny == @$clyde; for (my $i = 0; $i < @$bonny; ++$i) { return unless $bonny->[$i] == $clyde->[$i]; } return 1; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: libintl-perl-1.26/tests/02asmo_449.t000644 000765 000024 00000014406 12511127523 017345 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ASMO_449', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ASMO_449', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ASMO_449'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ASMO_449', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x00a4 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x060c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x061b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x061f 0x40 0x0040 0x41 0x0621 0x42 0x0622 0x43 0x0623 0x44 0x0624 0x45 0x0625 0x46 0x0626 0x47 0x0627 0x48 0x0628 0x49 0x0629 0x4a 0x062a 0x4b 0x062b 0x4c 0x062c 0x4d 0x062d 0x4e 0x062e 0x4f 0x062f 0x50 0x0630 0x51 0x0631 0x52 0x0632 0x53 0x0633 0x54 0x0634 0x55 0x0635 0x56 0x0636 0x57 0x0637 0x58 0x0638 0x59 0x0639 0x5a 0x063a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0640 0x61 0x0641 0x62 0x0642 0x63 0x0643 0x64 0x0644 0x65 0x0645 0x66 0x0646 0x67 0x0647 0x68 0x0648 0x69 0x0649 0x6a 0x064a 0x6b 0x064b 0x6c 0x064c 0x6d 0x064d 0x6e 0x064e 0x6f 0x064f 0x70 0x0650 0x71 0x0651 0x72 0x0652 0x7b 0xfffd 0x7b 0xfffd 0x7b 0xfffd 0x7b 0xfffd 0x7b 0xfffd 0x7b 0xfffd 0x7b 0xfffd 0x7b 0xfffd 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x203e 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02atari-st-euro.t000644 000765 000024 00000014425 12511127523 020503 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ATARI-ST-EURO', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ATARI-ST-EURO', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ATARI-ST-EURO'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ATARI-ST', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x00ec 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00f2 0x96 0x00fb 0x97 0x00f9 0x98 0x00ff 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00a5 0x9e 0x00df 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x00e3 0xb1 0x00f5 0xb2 0x00d8 0xb3 0x00f8 0xb4 0x0153 0xb5 0x0152 0xb6 0x00c0 0xb7 0x00c3 0xb8 0x00d5 0xb9 0x00a8 0xba 0x00b4 0xbb 0x2020 0xbc 0x00b6 0xbd 0x00a9 0xbe 0x00ae 0xbf 0x2122 0xc0 0x0133 0xc1 0x0132 0xc2 0x05d0 0xc3 0x05d1 0xc4 0x05d2 0xc5 0x05d3 0xc6 0x05d4 0xc7 0x05d5 0xc8 0x05d6 0xc9 0x05d7 0xca 0x05d8 0xcb 0x05d9 0xcc 0x05db 0xcd 0x05dc 0xce 0x05de 0xcf 0x05e0 0xd0 0x05e1 0xd1 0x05e2 0xd2 0x05e4 0xd3 0x05e6 0xd4 0x05e7 0xd5 0x05e8 0xd6 0x05e9 0xd7 0x05ea 0xd8 0x05df 0xd9 0x05da 0xda 0x05dd 0xdb 0x05e3 0xdc 0x05e5 0xdd 0x00a7 0xde 0x20ac 0xdf 0x221e 0xe0 0x03b1 0xe1 0x03b2 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x03b8 0xea 0x03a9 0xeb 0x03b4 0xec 0x222e 0xed 0x03c6 0xee 0x2208 0xef 0x220f 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2022 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x00b3 0xff 0x00af libintl-perl-1.26/tests/02atari-st.t000644 000765 000024 00000014406 12511127523 017532 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ATARI-ST', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ATARI-ST', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ATARI-ST'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ATARI-ST', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x00ec 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00f2 0x96 0x00fb 0x97 0x00f9 0x98 0x00ff 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00a5 0x9e 0x00df 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x00e3 0xb1 0x00f5 0xb2 0x00d8 0xb3 0x00f8 0xb4 0x0153 0xb5 0x0152 0xb6 0x00c0 0xb7 0x00c3 0xb8 0x00d5 0xb9 0x00a8 0xba 0x00b4 0xbb 0x2020 0xbc 0x00b6 0xbd 0x00a9 0xbe 0x00ae 0xbf 0x2122 0xc0 0x0133 0xc1 0x0132 0xc2 0x05d0 0xc3 0x05d1 0xc4 0x05d2 0xc5 0x05d3 0xc6 0x05d4 0xc7 0x05d5 0xc8 0x05d6 0xc9 0x05d7 0xca 0x05d8 0xcb 0x05d9 0xcc 0x05db 0xcd 0x05dc 0xce 0x05de 0xcf 0x05e0 0xd0 0x05e1 0xd1 0x05e2 0xd2 0x05e4 0xd3 0x05e6 0xd4 0x05e7 0xd5 0x05e8 0xd6 0x05e9 0xd7 0x05ea 0xd8 0x05df 0xd9 0x05da 0xda 0x05dd 0xdb 0x05e3 0xdc 0x05e5 0xdd 0x00a7 0xde 0x2038 0xdf 0x221e 0xe0 0x03b1 0xe1 0x03b2 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x03b8 0xea 0x03a9 0xeb 0x03b4 0xec 0x222e 0xed 0x03c6 0xee 0x2208 0xef 0x220f 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2022 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x00b3 0xff 0x00af libintl-perl-1.26/tests/02cp10007.t000644 000765 000024 00000014402 12511127523 016774 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP10007', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP10007', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP10007'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP10007', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0410 0x81 0x0411 0x82 0x0412 0x83 0x0413 0x84 0x0414 0x85 0x0415 0x86 0x0416 0x87 0x0417 0x88 0x0418 0x89 0x0419 0x8a 0x041a 0x8b 0x041b 0x8c 0x041c 0x8d 0x041d 0x8e 0x041e 0x8f 0x041f 0x90 0x0420 0x91 0x0421 0x92 0x0422 0x93 0x0423 0x94 0x0424 0x95 0x0425 0x96 0x0426 0x97 0x0427 0x98 0x0428 0x99 0x0429 0x9a 0x042a 0x9b 0x042b 0x9c 0x042c 0x9d 0x042d 0x9e 0x042e 0x9f 0x042f 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x0406 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x0402 0xac 0x0452 0xad 0x2260 0xae 0x0403 0xaf 0x0453 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x0456 0xb5 0x00b5 0xb6 0x0491 0xb7 0x0408 0xb8 0x0404 0xb9 0x0454 0xba 0x0407 0xbb 0x0457 0xbc 0x0409 0xbd 0x0459 0xbe 0x040a 0xbf 0x045a 0xc0 0x0458 0xc1 0x0405 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x040b 0xcc 0x045b 0xcd 0x040c 0xce 0x045c 0xcf 0x0455 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x201e 0xd8 0x040e 0xd9 0x045e 0xda 0x040f 0xdb 0x045f 0xdc 0x2116 0xdd 0x0401 0xde 0x0451 0xdf 0x044f 0xe0 0x0430 0xe1 0x0431 0xe2 0x0432 0xe3 0x0433 0xe4 0x0434 0xe5 0x0435 0xe6 0x0436 0xe7 0x0437 0xe8 0x0438 0xe9 0x0439 0xea 0x043a 0xeb 0x043b 0xec 0x043c 0xed 0x043d 0xee 0x043e 0xef 0x043f 0xf0 0x0440 0xf1 0x0441 0xf2 0x0442 0xf3 0x0443 0xf4 0x0444 0xf5 0x0445 0xf6 0x0446 0xf7 0x0447 0xf8 0x0448 0xf9 0x0449 0xfa 0x044a 0xfb 0x044b 0xfc 0x044c 0xfd 0x044d 0xfe 0x044e 0xff 0x00a4 libintl-perl-1.26/tests/02cp1250.t000644 000765 000024 00000014376 12511127523 016726 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1250', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1250', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1250'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1250', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x82 0xfffd 0x82 0x201a 0x84 0xfffd 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x89 0xfffd 0x89 0x2030 0x8a 0x0160 0x8b 0x2039 0x8c 0x015a 0x8d 0x0164 0x8e 0x017d 0x8f 0x0179 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x99 0xfffd 0x99 0x2122 0x9a 0x0161 0x9b 0x203a 0x9c 0x015b 0x9d 0x0165 0x9e 0x017e 0x9f 0x017a 0xa0 0x00a0 0xa1 0x02c7 0xa2 0x02d8 0xa3 0x0141 0xa4 0x00a4 0xa5 0x0104 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x015e 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x017b 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x02db 0xb3 0x0142 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x0105 0xba 0x015f 0xbb 0x00bb 0xbc 0x013d 0xbd 0x02dd 0xbe 0x013e 0xbf 0x017c 0xc0 0x0154 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x0102 0xc4 0x00c4 0xc5 0x0139 0xc6 0x0106 0xc7 0x00c7 0xc8 0x010c 0xc9 0x00c9 0xca 0x0118 0xcb 0x00cb 0xcc 0x011a 0xcd 0x00cd 0xce 0x00ce 0xcf 0x010e 0xd0 0x0110 0xd1 0x0143 0xd2 0x0147 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x0150 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x0158 0xd9 0x016e 0xda 0x00da 0xdb 0x0170 0xdc 0x00dc 0xdd 0x00dd 0xde 0x0162 0xdf 0x00df 0xe0 0x0155 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x0103 0xe4 0x00e4 0xe5 0x013a 0xe6 0x0107 0xe7 0x00e7 0xe8 0x010d 0xe9 0x00e9 0xea 0x0119 0xeb 0x00eb 0xec 0x011b 0xed 0x00ed 0xee 0x00ee 0xef 0x010f 0xf0 0x0111 0xf1 0x0144 0xf2 0x0148 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x0151 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x0159 0xf9 0x016f 0xfa 0x00fa 0xfb 0x0171 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x0163 0xff 0x02d9 libintl-perl-1.26/tests/02cp1251.t000644 000765 000024 00000014376 12511127523 016727 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1251', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1251', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1251'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1251', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0402 0x81 0x0403 0x82 0x201a 0x83 0x0453 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x20ac 0x89 0x2030 0x8a 0x0409 0x8b 0x2039 0x8c 0x040a 0x8d 0x040c 0x8e 0x040b 0x8f 0x040f 0x90 0x0452 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x99 0xfffd 0x99 0x2122 0x9a 0x0459 0x9b 0x203a 0x9c 0x045a 0x9d 0x045c 0x9e 0x045b 0x9f 0x045f 0xa0 0x00a0 0xa1 0x040e 0xa2 0x045e 0xa3 0x0408 0xa4 0x00a4 0xa5 0x0490 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x0401 0xa9 0x00a9 0xaa 0x0404 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x0407 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x0406 0xb3 0x0456 0xb4 0x0491 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x0451 0xb9 0x2116 0xba 0x0454 0xbb 0x00bb 0xbc 0x0458 0xbd 0x0405 0xbe 0x0455 0xbf 0x0457 0xc0 0x0410 0xc1 0x0411 0xc2 0x0412 0xc3 0x0413 0xc4 0x0414 0xc5 0x0415 0xc6 0x0416 0xc7 0x0417 0xc8 0x0418 0xc9 0x0419 0xca 0x041a 0xcb 0x041b 0xcc 0x041c 0xcd 0x041d 0xce 0x041e 0xcf 0x041f 0xd0 0x0420 0xd1 0x0421 0xd2 0x0422 0xd3 0x0423 0xd4 0x0424 0xd5 0x0425 0xd6 0x0426 0xd7 0x0427 0xd8 0x0428 0xd9 0x0429 0xda 0x042a 0xdb 0x042b 0xdc 0x042c 0xdd 0x042d 0xde 0x042e 0xdf 0x042f 0xe0 0x0430 0xe1 0x0431 0xe2 0x0432 0xe3 0x0433 0xe4 0x0434 0xe5 0x0435 0xe6 0x0436 0xe7 0x0437 0xe8 0x0438 0xe9 0x0439 0xea 0x043a 0xeb 0x043b 0xec 0x043c 0xed 0x043d 0xee 0x043e 0xef 0x043f 0xf0 0x0440 0xf1 0x0441 0xf2 0x0442 0xf3 0x0443 0xf4 0x0444 0xf5 0x0445 0xf6 0x0446 0xf7 0x0447 0xf8 0x0448 0xf9 0x0449 0xfa 0x044a 0xfb 0x044b 0xfc 0x044c 0xfd 0x044d 0xfe 0x044e 0xff 0x044f libintl-perl-1.26/tests/02cp1252.t000644 000765 000024 00000014376 12511127523 016730 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1252', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1252', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1252'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1252', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x82 0xfffd 0x82 0x201a 0x83 0x0192 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x02c6 0x89 0x2030 0x8a 0x0160 0x8b 0x2039 0x8c 0x0152 0x8e 0xfffd 0x8e 0x017d 0x91 0xfffd 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x02dc 0x99 0x2122 0x9a 0x0161 0x9b 0x203a 0x9c 0x0153 0x9e 0xfffd 0x9e 0x017e 0x9f 0x0178 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00bf 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x00d0 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x00dd 0xde 0x00de 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x00ff libintl-perl-1.26/tests/02cp1253.t000644 000765 000024 00000014376 12511127523 016731 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1253', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1253', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1253'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1253', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x82 0xfffd 0x82 0x201a 0x83 0x0192 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x89 0xfffd 0x89 0x2030 0x8b 0xfffd 0x8b 0x2039 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x99 0xfffd 0x99 0x2122 0x9b 0xfffd 0x9b 0x203a 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0x00a0 0xa1 0x0385 0xa2 0x0386 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xab 0xfffd 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x2015 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x0384 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x0388 0xb9 0x0389 0xba 0x038a 0xbb 0x00bb 0xbc 0x038c 0xbd 0x00bd 0xbe 0x038e 0xbf 0x038f 0xc0 0x0390 0xc1 0x0391 0xc2 0x0392 0xc3 0x0393 0xc4 0x0394 0xc5 0x0395 0xc6 0x0396 0xc7 0x0397 0xc8 0x0398 0xc9 0x0399 0xca 0x039a 0xcb 0x039b 0xcc 0x039c 0xcd 0x039d 0xce 0x039e 0xcf 0x039f 0xd0 0x03a0 0xd1 0x03a1 0xd3 0xfffd 0xd3 0x03a3 0xd4 0x03a4 0xd5 0x03a5 0xd6 0x03a6 0xd7 0x03a7 0xd8 0x03a8 0xd9 0x03a9 0xda 0x03aa 0xdb 0x03ab 0xdc 0x03ac 0xdd 0x03ad 0xde 0x03ae 0xdf 0x03af 0xe0 0x03b0 0xe1 0x03b1 0xe2 0x03b2 0xe3 0x03b3 0xe4 0x03b4 0xe5 0x03b5 0xe6 0x03b6 0xe7 0x03b7 0xe8 0x03b8 0xe9 0x03b9 0xea 0x03ba 0xeb 0x03bb 0xec 0x03bc 0xed 0x03bd 0xee 0x03be 0xef 0x03bf 0xf0 0x03c0 0xf1 0x03c1 0xf2 0x03c2 0xf3 0x03c3 0xf4 0x03c4 0xf5 0x03c5 0xf6 0x03c6 0xf7 0x03c7 0xf8 0x03c8 0xf9 0x03c9 0xfa 0x03ca 0xfb 0x03cb 0xfc 0x03cc 0xfd 0x03cd 0xfe 0x03ce 0xff 0xfffd libintl-perl-1.26/tests/02cp1254.t000644 000765 000024 00000014376 12511127523 016732 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1254', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1254', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1254'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1254', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x82 0xfffd 0x82 0x201a 0x83 0x0192 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x02c6 0x89 0x2030 0x8a 0x0160 0x8b 0x2039 0x8c 0x0152 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x02dc 0x99 0x2122 0x9a 0x0161 0x9b 0x203a 0x9c 0x0153 0x9f 0xfffd 0x9f 0xfffd 0x9f 0x0178 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00bf 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x011e 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x0130 0xde 0x015e 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x011f 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x0131 0xfe 0x015f 0xff 0x00ff libintl-perl-1.26/tests/02cp1256.t000644 000765 000024 00000014376 12511127523 016734 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1256', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1256', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1256'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1256', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x81 0x067e 0x82 0x201a 0x83 0x0192 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x02c6 0x89 0x2030 0x8a 0x0679 0x8b 0x2039 0x8c 0x0152 0x8d 0x0686 0x8e 0x0698 0x8f 0x0688 0x90 0x06af 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x06a9 0x99 0x2122 0x9a 0x0691 0x9b 0x203a 0x9c 0x0153 0x9d 0x200c 0x9e 0x200d 0x9f 0x06ba 0xa0 0x00a0 0xa1 0x060c 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x06be 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x061b 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x061f 0xc0 0x06c1 0xc1 0x0621 0xc2 0x0622 0xc3 0x0623 0xc4 0x0624 0xc5 0x0625 0xc6 0x0626 0xc7 0x0627 0xc8 0x0628 0xc9 0x0629 0xca 0x062a 0xcb 0x062b 0xcc 0x062c 0xcd 0x062d 0xce 0x062e 0xcf 0x062f 0xd0 0x0630 0xd1 0x0631 0xd2 0x0632 0xd3 0x0633 0xd4 0x0634 0xd5 0x0635 0xd6 0x0636 0xd7 0x00d7 0xd8 0x0637 0xd9 0x0638 0xda 0x0639 0xdb 0x063a 0xdc 0x0640 0xdd 0x0641 0xde 0x0642 0xdf 0x0643 0xe0 0x00e0 0xe1 0x0644 0xe2 0x00e2 0xe3 0x0645 0xe4 0x0646 0xe5 0x0647 0xe6 0x0648 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x0649 0xed 0x064a 0xee 0x00ee 0xef 0x00ef 0xf0 0x064b 0xf1 0x064c 0xf2 0x064d 0xf3 0x064e 0xf4 0x00f4 0xf5 0x064f 0xf6 0x0650 0xf7 0x00f7 0xf8 0x0651 0xf9 0x00f9 0xfa 0x0652 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x200e 0xfe 0x200f 0xff 0x06d2 libintl-perl-1.26/tests/02cp1257.t000644 000765 000024 00000014376 12511127523 016735 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CP1257', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CP1257', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1257'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CP1257', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x82 0xfffd 0x82 0x201a 0x84 0xfffd 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x89 0xfffd 0x89 0x2030 0x8b 0xfffd 0x8b 0x2039 0x8d 0xfffd 0x8d 0x00a8 0x8e 0x02c7 0x8f 0x00b8 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x99 0xfffd 0x99 0x2122 0x9b 0xfffd 0x9b 0x203a 0x9d 0xfffd 0x9d 0x00af 0x9e 0x02db 0xa0 0xfffd 0xa0 0x00a0 0xa2 0xfffd 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa6 0xfffd 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00d8 0xa9 0x00a9 0xaa 0x0156 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00c6 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00f8 0xb9 0x00b9 0xba 0x0157 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00e6 0xc0 0x0104 0xc1 0x012e 0xc2 0x0100 0xc3 0x0106 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x0118 0xc7 0x0112 0xc8 0x010c 0xc9 0x00c9 0xca 0x0179 0xcb 0x0116 0xcc 0x0122 0xcd 0x0136 0xce 0x012a 0xcf 0x013b 0xd0 0x0160 0xd1 0x0143 0xd2 0x0145 0xd3 0x00d3 0xd4 0x014c 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x0172 0xd9 0x0141 0xda 0x015a 0xdb 0x016a 0xdc 0x00dc 0xdd 0x017b 0xde 0x017d 0xdf 0x00df 0xe0 0x0105 0xe1 0x012f 0xe2 0x0101 0xe3 0x0107 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x0119 0xe7 0x0113 0xe8 0x010d 0xe9 0x00e9 0xea 0x017a 0xeb 0x0117 0xec 0x0123 0xed 0x0137 0xee 0x012b 0xef 0x013c 0xf0 0x0161 0xf1 0x0144 0xf2 0x0146 0xf3 0x00f3 0xf4 0x014d 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x0173 0xf9 0x0142 0xfa 0x015b 0xfb 0x016b 0xfc 0x00fc 0xfd 0x017c 0xfe 0x017e 0xff 0x02d9 libintl-perl-1.26/tests/02csn_369103.t000644 000765 000024 00000014416 12511127523 017417 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CSN_369103', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CSN_369103', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CSN_369103'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CSN_369103', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x00a4 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0104 0xa2 0x02d8 0xa3 0x0141 0xa4 0x0024 0xa5 0x013d 0xa6 0x015a 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x0160 0xaa 0x015e 0xab 0x0164 0xac 0x0179 0xad 0x00ad 0xae 0x017d 0xaf 0x017b 0xb0 0x00b0 0xb1 0x0105 0xb2 0x02db 0xb3 0x0142 0xb4 0x00b4 0xb5 0x013e 0xb6 0x015b 0xb7 0x02c7 0xb8 0x00b8 0xb9 0x0161 0xba 0x015f 0xbb 0x0165 0xbc 0x017a 0xbd 0x02dd 0xbe 0x017e 0xbf 0x017c 0xc0 0x0154 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x0102 0xc4 0x00c4 0xc5 0x0139 0xc6 0x0106 0xc7 0x00c7 0xc8 0x010c 0xc9 0x00c9 0xca 0x0118 0xcb 0x00cb 0xcc 0x011a 0xcd 0x00cd 0xce 0x00ce 0xcf 0x010e 0xd0 0x0110 0xd1 0x0143 0xd2 0x0147 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x0150 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x0158 0xd9 0x016e 0xda 0x00da 0xdb 0x0170 0xdc 0x00dc 0xdd 0x00dd 0xde 0x0162 0xdf 0x00df 0xe0 0x0155 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x0103 0xe4 0x00e4 0xe5 0x013a 0xe6 0x0107 0xe7 0x00e7 0xe8 0x010d 0xe9 0x00e9 0xea 0x0119 0xeb 0x00eb 0xec 0x011b 0xed 0x00ed 0xee 0x00ee 0xef 0x010f 0xf0 0x0111 0xf1 0x0144 0xf2 0x0148 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x0151 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x0159 0xf9 0x016f 0xfa 0x00fa 0xfb 0x0171 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x0163 0xff 0x02d9 libintl-perl-1.26/tests/02cwi.t000644 000765 000024 00000014362 12511127523 016571 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'CWI', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'CWI', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CWI'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'CWI', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x00cd 0x8e 0x00c4 0x8f 0x00c1 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x0151 0x94 0x00f6 0x95 0x00d3 0x96 0x0171 0x97 0x00da 0x98 0x0170 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00a5 0x9e 0x20a7 0x9f 0xe01f 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x0150 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x03b2 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x03bc 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x2205 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x2218 0xf9 0x00b7 0xfa 0x2022 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02dec-mcs.t000644 000765 000024 00000014402 12511127523 017315 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'DEC-MCS', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'DEC-MCS', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'DEC-MCS'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'DEC-MCS', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa1 0xfffd 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa5 0xfffd 0xa5 0x00a5 0xa7 0xfffd 0xa7 0x00a7 0xa8 0x00a4 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xb0 0xfffd 0xb0 0xfffd 0xb0 0xfffd 0xb0 0xfffd 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb5 0xfffd 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb9 0xfffd 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbf 0xfffd 0xbf 0x00bf 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd1 0xfffd 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x0152 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x0178 0xdf 0xfffd 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf1 0xfffd 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x0153 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00ff 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02ebcdic-at-de-a.t000644 000765 000024 00000014436 12511127523 020430 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-AT-DE-A', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-AT-DE-A', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-AT-DE-A'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-AT-DE-A', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00f6 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00fc 0x5b 0x00dc 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00df 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0x003a 0x7b 0x00c4 0x7c 0x00d6 0x7d 0x0027 0x7e 0x003d 0x7f 0x00e4 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-at-de.t000644 000765 000024 00000014426 12511127523 020211 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-AT-DE', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-AT-DE', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-AT-DE'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-AT-DE', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00c4 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00dc 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x00a7 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00df 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e4 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00fc 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00d6 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-ca-fr.t000644 000765 000024 00000014426 12511127523 020207 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-CA-FR', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-CA-FR', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-CA-FR'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-CA-FR', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x42 0xfffd 0x42 0x00e2 0x48 0xfffd 0x48 0xfffd 0x48 0xfffd 0x48 0xfffd 0x48 0xfffd 0x48 0x00e7 0x4a 0xfffd 0x4a 0x00e0 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x52 0xfffd 0x52 0x00ea 0x53 0x00eb 0x56 0xfffd 0x56 0xfffd 0x56 0x00ee 0x57 0x00ef 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00b4 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x64 0xfffd 0x64 0x00c0 0x68 0xfffd 0x68 0xfffd 0x68 0xfffd 0x68 0x00c7 0x6a 0xfffd 0x6a 0x00f9 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x71 0xfffd 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x75 0xfffd 0x75 0x00ce 0x76 0x00cf 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e9 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xcb 0xfffd 0xcb 0x00f4 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e8 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xdb 0xfffd 0xdb 0x00fb 0xdc 0x00fc 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00b8 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xeb 0xfffd 0xeb 0x00d4 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfb 0xfffd 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-dk-no-a.t000644 000765 000024 00000014436 12511127523 020446 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-DK-NO-A', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-DK-NO-A', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-DK-NO-A'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-DK-NO-A', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00f8 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00e5 0x5b 0x00c5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0x003a 0x7b 0x00c6 0x7c 0x00d8 0x7d 0x0027 0x7e 0x003d 0x7f 0x00e6 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-dk-no.t000644 000765 000024 00000014426 12511127523 020227 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-DK-NO', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-DK-NO', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-DK-NO'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-DK-NO', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x0023 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00a4 0x5b 0x00c5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f8 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x00c6 0x7c 0x00d8 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00fc 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e6 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e5 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-es-a.t000644 000765 000024 00000014422 12511127523 020040 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-ES-A', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-ES-A', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-ES-A'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-ES-A', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0021 0x5b 0x20a7 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0x003a 0x7b 0x00d1 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x00f1 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-es-s.t000644 000765 000024 00000014422 12511127523 020062 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-ES-S', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-ES-S', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-ES-S'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-ES-S', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0021 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f1 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x00d1 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-es.t000644 000765 000024 00000014412 12511127523 017621 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-ES', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-ES', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-ES'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-ES', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0021 0x5b 0x20a7 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f1 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x00d1 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-fi-se-a.t000644 000765 000024 00000014436 12511127523 020441 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-FI-SE-A', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-FI-SE-A', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-FI-SE-A'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-FI-SE-A', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00f6 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00e5 0x5b 0x00c5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0xfffd 0x7a 0x003a 0x7b 0x00c4 0x7c 0x00d6 0x7d 0x0027 0x7e 0x003d 0x7f 0x00e4 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0xfffd 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-fi-se.t000644 000765 000024 00000014426 12511127523 020222 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-FI-SE', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-FI-SE', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-FI-SE'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-FI-SE', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00a7 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00a4 0x5b 0x00c5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x00e9 0x7a 0x003a 0x7b 0x00c4 0x7c 0x00d6 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00fc 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e4 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e5 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00c9 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-fr.t000644 000765 000024 00000014412 12511127523 017621 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-FR', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-FR', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-FR'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-FR', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00b0 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00a7 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f9 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x00a3 0x7c 0x00e0 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e9 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e8 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00e7 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-is-friss.t000644 000765 000024 00000014442 12511127523 020754 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-IS-FRISS', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-IS-FRISS', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-IS-FRISS'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-IS-FRISS', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0x0020 0x45 0xfffd 0x45 0xfffd 0x45 0xfffd 0x45 0xfffd 0x45 0x00e1 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x003c 0x4b 0x002e 0x4c 0x00c1 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x00d0 0x51 0x00e9 0x55 0xfffd 0x55 0xfffd 0x55 0xfffd 0x55 0x00ed 0x59 0xfffd 0x59 0xfffd 0x59 0xfffd 0x59 0x0024 0x5a 0x0025 0x5b 0x00c9 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x0026 0x60 0x002d 0x61 0x002f 0x69 0xfffd 0x69 0xfffd 0x69 0xfffd 0x69 0xfffd 0x69 0xfffd 0x69 0xfffd 0x69 0xfffd 0x69 0x0023 0x6a 0x2018 0x6b 0x002c 0x6c 0x00de 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x75 0xfffd 0x75 0xfffd 0x75 0xfffd 0x75 0xfffd 0x75 0xfffd 0x75 0x00cd 0x78 0xfffd 0x78 0xfffd 0x78 0x007c 0x79 0x00f0 0x7a 0x003a 0x7b 0x00c6 0x7c 0x00d6 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8d 0xfffd 0x8d 0xfffd 0x8d 0xfffd 0x8d 0x00dd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0x00b0 0xa1 0x00f6 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xac 0xfffd 0xac 0xfffd 0xac 0x005b 0xad 0x00fd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0xfffd 0xbc 0x005d 0xbd 0x00a8 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00fe 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xce 0xfffd 0xce 0xfffd 0xce 0xfffd 0xce 0xfffd 0xce 0x00f3 0xd0 0xfffd 0xd0 0x00e6 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xde 0xfffd 0xde 0xfffd 0xde 0xfffd 0xde 0xfffd 0xde 0x00fa 0xe0 0xfffd 0xe0 0x00b4 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xee 0xfffd 0xee 0xfffd 0xee 0xfffd 0xee 0xfffd 0xee 0x00d3 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfe 0xfffd 0xfe 0xfffd 0xfe 0xfffd 0xfe 0xfffd 0xfe 0x00da 0xff 0x007f libintl-perl-1.26/tests/02ebcdic-it.t000644 000765 000024 00000014412 12511127523 017626 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-IT', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-IT', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-IT'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-IT', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00b0 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x00e9 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f2 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x00f9 0x7a 0x003a 0x7b 0x00a3 0x7c 0x00a7 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00ec 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e0 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e8 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00e7 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-pt.t000644 000765 000024 00000014412 12511127523 017635 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-PT', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-PT', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-PT'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-PT', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f5 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x00c3 0x7c 0x00d5 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00e7 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e3 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00b4 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00c7 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-uk.t000644 000765 000024 00000014412 12511127523 017631 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-UK', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-UK', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-UK'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-UK', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x0024 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0021 0x5b 0x00a3 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x203e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ebcdic-us.t000644 000765 000024 00000014412 12511127523 017641 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'EBCDIC-US', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'EBCDIC-US', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-US'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'EBCDIC-US', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0021 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ecma-cyrillic.t000644 000765 000024 00000014432 12511127523 020522 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ECMA-CYRILLIC', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ECMA-CYRILLIC', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ECMA-CYRILLIC'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ECMA-CYRILLIC', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0452 0xa2 0x0453 0xa3 0x0451 0xa4 0x0454 0xa5 0x0455 0xa6 0x0456 0xa7 0x0457 0xa8 0x0458 0xa9 0x0459 0xaa 0x045a 0xab 0x045b 0xac 0x045c 0xad 0x00ad 0xae 0x045e 0xaf 0x045f 0xb0 0x2116 0xb1 0x0402 0xb2 0x0403 0xb3 0x0401 0xb4 0x0404 0xb5 0x0405 0xb6 0x0406 0xb7 0x0407 0xb8 0x0408 0xb9 0x0409 0xba 0x040a 0xbb 0x040b 0xbc 0x040c 0xbd 0x00a4 0xbe 0x040e 0xbf 0x040f 0xc0 0x044e 0xc1 0x0430 0xc2 0x0431 0xc3 0x0446 0xc4 0x0434 0xc5 0x0435 0xc6 0x0444 0xc7 0x0433 0xc8 0x0445 0xc9 0x0438 0xca 0x0439 0xcb 0x043a 0xcc 0x043b 0xcd 0x043c 0xce 0x043d 0xcf 0x043e 0xd0 0x043f 0xd1 0x044f 0xd2 0x0440 0xd3 0x0441 0xd4 0x0442 0xd5 0x0443 0xd6 0x0436 0xd7 0x0432 0xd8 0x044c 0xd9 0x044b 0xda 0x0437 0xdb 0x0448 0xdc 0x044d 0xdd 0x0449 0xde 0x0447 0xdf 0x044a 0xe0 0x042e 0xe1 0x0410 0xe2 0x0411 0xe3 0x0426 0xe4 0x0414 0xe5 0x0415 0xe6 0x0424 0xe7 0x0413 0xe8 0x0425 0xe9 0x0418 0xea 0x0419 0xeb 0x041a 0xec 0x041b 0xed 0x041c 0xee 0x041d 0xef 0x041e 0xf0 0x041f 0xf1 0x042f 0xf2 0x0420 0xf3 0x0421 0xf4 0x0422 0xf5 0x0423 0xf6 0x0416 0xf7 0x0412 0xf8 0x042c 0xf9 0x042b 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0x042a libintl-perl-1.26/tests/02georgian-academy.t000644 000765 000024 00000014446 12511127523 021206 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'GEORGIAN-ACADEMY', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'GEORGIAN-ACADEMY', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GEORGIAN-ACADEMY'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GEORGIAN-ACADEMY', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x201a 0x83 0x0192 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x02c6 0x89 0x2030 0x8a 0x0160 0x8b 0x2039 0x8c 0x0152 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x02dc 0x99 0x2122 0x9a 0x0161 0x9b 0x203a 0x9c 0x0153 0x9d 0x009d 0x9e 0x009e 0x9f 0x0178 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00bf 0xc0 0x10d0 0xc1 0x10d1 0xc2 0x10d2 0xc3 0x10d3 0xc4 0x10d4 0xc5 0x10d5 0xc6 0x10d6 0xc7 0x10d7 0xc8 0x10d8 0xc9 0x10d9 0xca 0x10da 0xcb 0x10db 0xcc 0x10dc 0xcd 0x10dd 0xce 0x10de 0xcf 0x10df 0xd0 0x10e0 0xd1 0x10e1 0xd2 0x10e2 0xd3 0x10e3 0xd4 0x10e4 0xd5 0x10e5 0xd6 0x10e6 0xd7 0x10e7 0xd8 0x10e8 0xd9 0x10e9 0xda 0x10ea 0xdb 0x10eb 0xdc 0x10ec 0xdd 0x10ed 0xde 0x10ee 0xdf 0x10ef 0xe0 0x10f0 0xe1 0x10f1 0xe2 0x10f2 0xe3 0x10f3 0xe4 0x10f4 0xe5 0x10f5 0xe6 0x10f6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x00ff libintl-perl-1.26/tests/02georgian-ps.t000644 000765 000024 00000014422 12511127523 020217 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'GEORGIAN-PS', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'GEORGIAN-PS', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GEORGIAN-PS'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GEORGIAN-PS', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x201a 0x83 0x0192 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x02c6 0x89 0x2030 0x8a 0x0160 0x8b 0x2039 0x8c 0x0152 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x02dc 0x99 0x2122 0x9a 0x0161 0x9b 0x203a 0x9c 0x0153 0x9d 0x009d 0x9e 0x009e 0x9f 0x0178 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00bf 0xc0 0x10d0 0xc1 0x10d1 0xc2 0x10d2 0xc3 0x10d3 0xc4 0x10d4 0xc5 0x10d5 0xc6 0x10d6 0xc7 0x10f1 0xc8 0x10d7 0xc9 0x10d8 0xca 0x10d9 0xcb 0x10da 0xcc 0x10db 0xcd 0x10dc 0xce 0x10f2 0xcf 0x10dd 0xd0 0x10de 0xd1 0x10df 0xd2 0x10e0 0xd3 0x10e1 0xd4 0x10e2 0xd5 0x10f3 0xd6 0x10e3 0xd7 0x10e4 0xd8 0x10e5 0xd9 0x10e6 0xda 0x10e7 0xdb 0x10e8 0xdc 0x10e9 0xdd 0x10ea 0xde 0x10eb 0xdf 0x10ec 0xe0 0x10ed 0xe1 0x10ee 0xe2 0x10f4 0xe3 0x10ef 0xe4 0x10f0 0xe5 0x10f5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x00ff libintl-perl-1.26/tests/02gost_19768-74.t000644 000765 000024 00000014432 12511127523 017767 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'GOST_19768-74', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'GOST_19768-74', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GOST_19768-74'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GOST_19768-74', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0401 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0xfffd 0xad 0x00ad 0xb0 0xfffd 0xb0 0xfffd 0xb0 0x0410 0xb1 0x0411 0xb2 0x0412 0xb3 0x0413 0xb4 0x0414 0xb5 0x0415 0xb6 0x0416 0xb7 0x0417 0xb8 0x0418 0xb9 0x0419 0xba 0x041a 0xbb 0x041b 0xbc 0x041c 0xbd 0x041d 0xbe 0x041e 0xbf 0x041f 0xc0 0x0420 0xc1 0x0421 0xc2 0x0422 0xc3 0x0423 0xc4 0x0424 0xc5 0x0425 0xc6 0x0426 0xc7 0x0427 0xc8 0x0428 0xc9 0x0429 0xca 0x042a 0xcb 0x042b 0xcc 0x042c 0xcd 0x042d 0xce 0x042e 0xcf 0x042f 0xd0 0x0430 0xd1 0x0431 0xd2 0x0432 0xd3 0x0433 0xd4 0x0434 0xd5 0x0435 0xd6 0x0436 0xd7 0x0437 0xd8 0x0438 0xd9 0x0439 0xda 0x043a 0xdb 0x043b 0xdc 0x043c 0xdd 0x043d 0xde 0x043e 0xdf 0x043f 0xe0 0x0440 0xe1 0x0441 0xe2 0x0442 0xe3 0x0443 0xe4 0x0444 0xe5 0x0445 0xe6 0x0446 0xe7 0x0447 0xe8 0x0448 0xe9 0x0449 0xea 0x044a 0xeb 0x044b 0xec 0x044c 0xed 0x044d 0xee 0x044e 0xef 0x044f 0xf1 0xfffd 0xf1 0x0451 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02greek-ccitt.t000644 000765 000024 00000014422 12511127523 020205 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'GREEK-CCITT', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'GREEK-CCITT', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GREEK-CCITT'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GREEK-CCITT', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x00a4 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0391 0x42 0x0392 0x43 0x0393 0x44 0x0394 0x45 0x0395 0x46 0x0396 0x47 0x0397 0x48 0x0398 0x49 0x0399 0x4a 0x039a 0x4b 0x039b 0x4c 0x039c 0x4d 0x039d 0x4e 0x039e 0x4f 0x039f 0x50 0x03a0 0x51 0x03a1 0x53 0xfffd 0x53 0x03a3 0x54 0x03a4 0x55 0x03a5 0x56 0x03a6 0x57 0x03a7 0x58 0x03a8 0x59 0x03a9 0x5b 0xfffd 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x61 0xfffd 0x61 0x03b1 0x62 0x03b2 0x63 0x03b3 0x64 0x03b4 0x65 0x03b5 0x66 0x03b6 0x67 0x03b7 0x68 0x03b8 0x69 0x03b9 0x6a 0x03ba 0x6b 0x03bb 0x6c 0x03bc 0x6d 0x03bd 0x6e 0x03be 0x6f 0x03bf 0x70 0x03c0 0x71 0x03c1 0x72 0x03c2 0x73 0x03c3 0x74 0x03c4 0x75 0x03c5 0x76 0x03c6 0x77 0x03c7 0x78 0x03c8 0x79 0x03c9 0x7b 0xfffd 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x00af 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02greek7-old.t000644 000765 000024 00000014416 12511127523 017747 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'GREEK7-OLD', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'GREEK7-OLD', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GREEK7-OLD'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GREEK7-OLD', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x00a3 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x00b4 0x41 0x03b1 0x42 0x03b2 0x43 0x03c8 0x44 0x03b4 0x45 0x03b5 0x46 0x03c6 0x47 0x03b3 0x48 0x03b7 0x49 0x03b9 0x4a 0x03be 0x4b 0x03ba 0x4c 0x03bb 0x4d 0x03bc 0x4e 0x03bd 0x4f 0x03bf 0x50 0x03c0 0x51 0x037a 0x52 0x03c1 0x53 0x03c3 0x54 0x03c4 0x55 0x03b8 0x56 0x03c9 0x57 0x03c2 0x58 0x03c7 0x59 0x03c5 0x5a 0x03b6 0x5b 0x1fcf 0x5c 0x1fbf 0x5d 0x1fce 0x5e 0x007e 0x5f 0x005f 0x60 0x0060 0x61 0x0391 0x62 0x0392 0x63 0x03a8 0x64 0x0394 0x65 0x0395 0x66 0x03a6 0x67 0x0393 0x68 0x0397 0x69 0x0399 0x6a 0x039e 0x6b 0x039a 0x6c 0x039b 0x6d 0x039c 0x6e 0x039d 0x6f 0x039f 0x70 0x03a0 0x72 0xfffd 0x72 0x03a1 0x73 0x03a3 0x74 0x03a4 0x75 0x0398 0x76 0x03a9 0x77 0x00b7 0x78 0x03a7 0x79 0x03a5 0x7a 0x0396 0x7b 0x1fdf 0x7c 0x1ffe 0x7d 0x1fde 0x7e 0x00a8 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02greek7.t000644 000765 000024 00000014376 12511127523 017200 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'GREEK7', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'GREEK7', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GREEK7'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'GREEK7', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x00a4 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0391 0x42 0x0392 0x43 0x0393 0x44 0x0394 0x45 0x0395 0x46 0x0396 0x47 0x0397 0x48 0x0398 0x49 0x0399 0x4b 0xfffd 0x4b 0x039a 0x4c 0x039b 0x4d 0x039c 0x4e 0x039d 0x4f 0x039e 0x50 0x039f 0x51 0x03a0 0x52 0x03a1 0x53 0x03a3 0x54 0x03a4 0x55 0x03a5 0x56 0x03a6 0x58 0xfffd 0x58 0x03a7 0x59 0x03a8 0x5a 0x03a9 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x03b1 0x62 0x03b2 0x63 0x03b3 0x64 0x03b4 0x65 0x03b5 0x66 0x03b6 0x67 0x03b7 0x68 0x03b8 0x69 0x03b9 0x6b 0xfffd 0x6b 0x03ba 0x6c 0x03bb 0x6d 0x03bc 0x6e 0x03bd 0x6f 0x03be 0x70 0x03bf 0x71 0x03c0 0x72 0x03c1 0x73 0x03c3 0x74 0x03c4 0x75 0x03c5 0x76 0x03c6 0x77 0x03c2 0x78 0x03c7 0x79 0x03c8 0x7a 0x03c9 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x203e 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02hp-roman8.t000644 000765 000024 00000014412 12511127523 017614 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'HP-ROMAN8', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'HP-ROMAN8', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'HP-ROMAN8'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'HP-ROMAN8', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x00c0 0xa2 0x00c2 0xa3 0x00c8 0xa4 0x00ca 0xa5 0x00cb 0xa6 0x00ce 0xa7 0x00cf 0xa8 0x00b4 0xa9 0x02cb 0xaa 0x02c6 0xab 0x00a8 0xac 0x02dc 0xad 0x00d9 0xae 0x00db 0xaf 0x20a4 0xb0 0x00af 0xb1 0x00dd 0xb2 0x00fd 0xb3 0x00b0 0xb4 0x00c7 0xb5 0x00e7 0xb6 0x00d1 0xb7 0x00f1 0xb8 0x00a1 0xb9 0x00bf 0xba 0x00a4 0xbb 0x00a3 0xbc 0x00a5 0xbd 0x00a7 0xbe 0x0192 0xbf 0x00a2 0xc0 0x00e2 0xc1 0x00ea 0xc2 0x00f4 0xc3 0x00fb 0xc4 0x00e1 0xc5 0x00e9 0xc6 0x00f3 0xc7 0x00fa 0xc8 0x00e0 0xc9 0x00e8 0xca 0x00f2 0xcb 0x00f9 0xcc 0x00e4 0xcd 0x00eb 0xce 0x00f6 0xcf 0x00fc 0xd0 0x00c5 0xd1 0x00ee 0xd2 0x00d8 0xd3 0x00c6 0xd4 0x00e5 0xd5 0x00ed 0xd6 0x00f8 0xd7 0x00e6 0xd8 0x00c4 0xd9 0x00ec 0xda 0x00d6 0xdb 0x00dc 0xdc 0x00c9 0xdd 0x00ef 0xde 0x00df 0xdf 0x00d4 0xe0 0x00c1 0xe1 0x00c3 0xe2 0x00e3 0xe3 0x00d0 0xe4 0x00f0 0xe5 0x00cd 0xe6 0x00cc 0xe7 0x00d3 0xe8 0x00d2 0xe9 0x00d5 0xea 0x00f5 0xeb 0x0160 0xec 0x0161 0xed 0x00da 0xee 0x0178 0xef 0x00ff 0xf0 0x00de 0xf1 0x00fe 0xf2 0x00b7 0xf3 0x00b5 0xf4 0x00b6 0xf5 0x00be 0xf6 0x2014 0xf7 0x00bc 0xf8 0x00bd 0xf9 0x00aa 0xfa 0x00ba 0xfb 0x00ab 0xfc 0x25a0 0xfd 0x00bb 0xfe 0x00b1 0xff 0xfffd libintl-perl-1.26/tests/02ibm037.t000644 000765 000024 00000014376 12511127523 017015 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM037', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM037', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM037'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM037', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x0021 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x005e 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x005b 0xbb 0x005d 0xbc 0x00af 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm038.t000644 000765 000024 00000014376 12511127523 017016 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM038', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM038', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM038'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM038', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm1004.t000644 000765 000024 00000014402 12511127523 017056 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM1004', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM1004', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM1004'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM1004', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x82 0xfffd 0x82 0xfffd 0x82 0x201a 0x84 0xfffd 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x88 0x02c6 0x89 0x2030 0x8a 0x0160 0x8b 0x2039 0x8c 0x0152 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x02dc 0x99 0x2122 0x9a 0x0161 0x9b 0x203a 0x9c 0x0153 0x9f 0xfffd 0x9f 0xfffd 0x9f 0x0178 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00bf 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x00d0 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x00dd 0xde 0x00de 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x00ff libintl-perl-1.26/tests/02ibm1026.t000644 000765 000024 00000014402 12511127523 017062 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM1026', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM1026', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM1026'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM1026', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x007b 0x49 0x00f1 0x4a 0x00c7 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x011e 0x5b 0x0130 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x005b 0x69 0x00d1 0x6a 0x015f 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0131 0x7a 0x003a 0x7b 0x00d6 0x7c 0x015e 0x7d 0x0027 0x7e 0x003d 0x7f 0x00dc 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x007d 0x8d 0x0060 0x8e 0x00a6 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x02db 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x00f6 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x005d 0xad 0x0024 0xae 0x0040 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x2014 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e7 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x007e 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x011f 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x005c 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x00fc 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x0023 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x0022 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm1047.t000644 000765 000024 00000014402 12511127523 017065 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM1047', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM1047', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM1047'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM1047', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x0021 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x005b 0xae 0x00de 0xaf 0x00ae 0xb0 0x00ac 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00dd 0xbb 0x00a8 0xbc 0x00af 0xbd 0x005d 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm256.t000644 000765 000024 00000014376 12511127523 017020 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM256', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM256', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM256'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM256', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x20a7 0xb4 0x0192 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x203e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x2017 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x2003 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm273.t000644 000765 000024 00000014376 12511127523 017017 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM273', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM273', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM273'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM273', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x007b 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x00c4 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x007e 0x5a 0x00dc 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x005b 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00f6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x00a7 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x00df 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x0040 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x203e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e4 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00a6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x00fc 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x007d 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x00d6 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x005c 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x005d 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm274.t000644 000765 000024 00000014376 12511127523 017020 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM274', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM274', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM274'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM274', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00f9 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x00e0 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00e9 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e8 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x00e7 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm275.t000644 000765 000024 00000014376 12511127523 017021 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM275', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM275', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM275'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM275', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00c9 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0024 0x5b 0x00c7 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00e7 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x00e3 0x7a 0x003a 0x7b 0x00d5 0x7c 0x00c3 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x00f5 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x00e9 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm277.t000644 000765 000024 00000014376 12511127523 017023 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM277', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM277', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM277'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM277', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x007d 0x48 0x00e7 0x49 0x00f1 0x4a 0x0023 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x00a4 0x5b 0x00c5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x0024 0x68 0x00c7 0x69 0x00d1 0x6a 0x00f8 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00a6 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x00c6 0x7c 0x00d8 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x0040 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x007b 0x9d 0x00b8 0x9e 0x005b 0x9f 0x005d 0xa0 0x00b5 0xa1 0x00fc 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x203e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e6 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x00e5 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x007e 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm278.t000644 000765 000024 00000014376 12511127523 017024 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM278', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM278', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM278'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM278', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x007b 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x007d 0x48 0x00e7 0x49 0x00f1 0x4a 0x00a7 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x0060 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x00a4 0x5b 0x00c5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x0023 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x0024 0x68 0x00c7 0x69 0x00d1 0x6a 0x00f6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x00e9 0x7a 0x003a 0x7b 0x00c4 0x7c 0x00d6 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x005d 0xa0 0x00b5 0xa1 0x00fc 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x005b 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x203e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e4 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00a6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x00e5 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x007e 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x0040 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm280.t000644 000765 000024 00000014376 12511127523 017015 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM280', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM280', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM280'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM280', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x007b 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x005c 0x49 0x00f1 0x4a 0x00b0 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x005d 0x52 0x00ea 0x53 0x00eb 0x54 0x007d 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x007e 0x59 0x00df 0x5a 0x00e9 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00f2 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x00f9 0x7a 0x003a 0x7b 0x00a3 0x7c 0x00a7 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x005b 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x00ec 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x0023 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x0040 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x203e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e0 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00a6 0xce 0x00f3 0xcf 0x00f5 0xd0 0x00e8 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x0060 0xde 0x00fa 0xdf 0x00ff 0xe0 0x00e7 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm281.t000644 000765 000024 00000014376 12511127523 017016 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM281', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM281', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM281'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM281', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0xfffd 0x4a 0x00a3 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0xfffd 0x5a 0x0021 0x5b 0x00a5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x203e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x0024 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm284.t000644 000765 000024 00000014376 12511127523 017021 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM284', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM284', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM284'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM284', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00a6 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x0023 0x6a 0x00f1 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x00d1 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x005e 0xbb 0x0021 0xbc 0x203e 0xbd 0x007e 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm285.t000644 000765 000024 00000014376 12511127523 017022 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM285', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM285', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM285'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM285', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x0024 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x0021 0x5b 0x00a3 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x203e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x005b 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x005e 0xbb 0x005d 0xbc 0x007e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm290.t000644 000765 000024 00000014376 12511127523 017016 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM290', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM290', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM290'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM290', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x3002 0x42 0x300c 0x43 0x300d 0x44 0x3001 0x45 0x30fb 0x46 0x30f2 0x47 0x30a1 0x48 0x30a3 0x49 0x30a5 0x4a 0x00a3 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0x30a7 0x52 0x30a9 0x53 0x30e3 0x54 0x30e5 0x55 0x30e7 0x56 0x30c3 0x58 0xfffd 0x58 0x30fc 0x5a 0xfffd 0x5a 0x0021 0x5b 0x00a5 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0xfffd 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0xfffd 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x30a2 0x82 0x30a4 0x83 0x30a6 0x84 0x30a8 0x85 0x30aa 0x86 0x30ab 0x87 0x30ad 0x88 0x30af 0x89 0x30b1 0x8a 0x30b3 0x8c 0xfffd 0x8c 0x30b5 0x8d 0x30b7 0x8e 0x30b9 0x8f 0x30bb 0x90 0x30bd 0x91 0x30bf 0x92 0x30c1 0x93 0x30c4 0x94 0x30c6 0x95 0x30c8 0x96 0x30ca 0x97 0x30cb 0x98 0x30cc 0x99 0x30cd 0x9a 0x30ce 0x9d 0xfffd 0x9d 0xfffd 0x9d 0x30cf 0x9e 0x30d2 0x9f 0x30d5 0xa1 0xfffd 0xa1 0x203e 0xa2 0x30d8 0xa3 0x30db 0xa4 0x30de 0xa5 0x30df 0xa6 0x30e0 0xa7 0x30e1 0xa8 0x30e2 0xa9 0x30e4 0xaa 0x30e6 0xac 0xfffd 0xac 0x30e8 0xad 0x30e9 0xae 0x30ea 0xaf 0x30eb 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0xfffd 0xba 0x30ec 0xbb 0x30ed 0xbc 0x30ef 0xbd 0x30f3 0xbe 0x309b 0xbf 0x309c 0xc1 0xfffd 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0xfffd 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x0024 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm297.t000644 000765 000024 00000014376 12511127523 017025 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM297', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM297', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM297'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM297', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x0040 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x005c 0x49 0x00f1 0x4a 0x00b0 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x007b 0x52 0x00ea 0x53 0x00eb 0x54 0x007d 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x00a7 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00f9 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x00b5 0x7a 0x003a 0x7b 0x00a3 0x7c 0x00e0 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x005b 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x0060 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x0023 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x005d 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x203e 0xbd 0x007e 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e9 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x00e8 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00a6 0xde 0x00fa 0xdf 0x00ff 0xe0 0x00e7 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm420.t000644 000765 000024 00000014376 12511127523 017011 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM420', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM420', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM420'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\xd0"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM420', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x0651 0x43 0xfe7d 0x44 0x0640 0x46 0xfffd 0x46 0x0621 0x47 0x0622 0x48 0xfe82 0x49 0x0623 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0xfe84 0x52 0x0624 0x55 0xfffd 0x55 0xfffd 0x55 0x0626 0x56 0x0627 0x57 0xfe8e 0x58 0x0628 0x59 0xfe91 0x5a 0x0021 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x62 0x0629 0x63 0x062a 0x64 0xfe97 0x65 0x062b 0x66 0xfe9b 0x67 0x062c 0x68 0xfe9f 0x69 0x062d 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0xfea3 0x71 0x062e 0x72 0xfea7 0x73 0x062f 0x74 0x0630 0x75 0x0631 0x76 0x0632 0x77 0x0633 0x78 0xfeb3 0x79 0x060c 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x0634 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0xfeb7 0x8b 0x0635 0x8c 0xfebb 0x8d 0x0636 0x8e 0xfebf 0x8f 0x0637 0x90 0x0638 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x0639 0x9b 0xfeca 0x9c 0xfecb 0x9d 0xfecc 0x9e 0x063a 0x9f 0xfece 0xa0 0xfecf 0xa1 0x00f7 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0xfed0 0xab 0x0641 0xac 0xfed3 0xad 0x0642 0xae 0xfed7 0xaf 0x0643 0xb0 0xfedb 0xb1 0x0644 0xb2 0xfef5 0xb3 0xfef6 0xb4 0xfef7 0xb5 0xfef8 0xb8 0xfffd 0xb8 0xfffd 0xb8 0xfefb 0xb9 0xfefc 0xba 0xfedf 0xbb 0x0645 0xbc 0xfee3 0xbd 0x0646 0xbe 0xfee7 0xbf 0x0647 0xc0 0x061b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0xfeeb 0xcd 0xfffd 0xcd 0xfeec 0xcf 0xfffd 0xcf 0x0648 0xd0 0x061f 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x0649 0xdb 0xfef0 0xdc 0x064a 0xdd 0xfef2 0xde 0xfef3 0xdf 0x0660 0xe0 0x00d7 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x0661 0xeb 0x0662 0xed 0xfffd 0xed 0x0663 0xee 0x0664 0xef 0x0665 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfb 0xfffd 0xfb 0x0666 0xfc 0x0667 0xfd 0x0668 0xfe 0x0669 0xff 0x009f libintl-perl-1.26/tests/02ibm423.t000644 000765 000024 00000014376 12511127523 017014 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM423', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM423', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM423'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM423', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x0391 0x42 0x0392 0x43 0x0393 0x44 0x0394 0x45 0x0395 0x46 0x0396 0x47 0x0397 0x48 0x0398 0x49 0x0399 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x039a 0x52 0x039b 0x53 0x039c 0x54 0x039d 0x55 0x039e 0x56 0x039f 0x57 0x03a0 0x58 0x03a1 0x59 0x03a3 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x03a4 0x63 0x03a5 0x64 0x03a6 0x65 0x03a7 0x66 0x03a8 0x67 0x03a9 0x6b 0xfffd 0x6b 0xfffd 0x6b 0xfffd 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x71 0xfffd 0x71 0x0386 0x72 0x0388 0x73 0x0389 0x75 0xfffd 0x75 0x038a 0x76 0x038c 0x77 0x038e 0x78 0x038f 0x79 0x0060 0x7a 0x003a 0x7b 0x00a3 0x7c 0x00a7 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00c4 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x03b1 0x8b 0x03b2 0x8c 0x03b3 0x8d 0x03b4 0x8e 0x03b5 0x8f 0x03b6 0x90 0x00d6 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x03b7 0x9b 0x03b8 0x9c 0x03b9 0x9d 0x03ba 0x9e 0x03bb 0x9f 0x03bc 0xa0 0x00dc 0xa1 0x00a8 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x03bd 0xab 0x03be 0xac 0x03bf 0xad 0x03c0 0xae 0x03c1 0xaf 0x03c2 0xb1 0xfffd 0xb1 0x03ac 0xb2 0x03ad 0xb3 0x03ae 0xb4 0x03ca 0xb5 0x03af 0xb6 0x03cc 0xb7 0x03cd 0xb8 0x03cb 0xb9 0x03ce 0xba 0x03c3 0xbb 0x03c4 0xbc 0x03c5 0xbd 0x03c6 0xbe 0x03c7 0xbf 0x03c8 0xc0 0x00b8 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xcb 0xfffd 0xcb 0x03c9 0xcc 0x00c2 0xcd 0x00e0 0xce 0x00e4 0xcf 0x00ea 0xd0 0x00b4 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b1 0xdb 0x00e9 0xdc 0x00e8 0xdd 0x00eb 0xde 0x00ee 0xdf 0x00ef 0xe0 0x00b0 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00bd 0xeb 0x00f6 0xec 0x00f4 0xed 0x00fb 0xee 0x00f9 0xef 0x00fc 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00ff 0xfb 0x00e7 0xfc 0x00c7 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm424.t000644 000765 000024 00000014376 12511127523 017015 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM424', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM424', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM424'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM424', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x05d0 0x42 0x05d1 0x43 0x05d2 0x44 0x05d3 0x45 0x05d4 0x46 0x05d5 0x47 0x05d6 0x48 0x05d7 0x49 0x05d8 0x4a 0x00a2 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x007c 0x50 0x0026 0x51 0x05d9 0x52 0x05da 0x53 0x05db 0x54 0x05dc 0x55 0x05dd 0x56 0x05de 0x57 0x05df 0x58 0x05e0 0x59 0x05e1 0x5a 0x0021 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00ac 0x60 0x002d 0x61 0x002f 0x62 0x05e2 0x63 0x05e3 0x64 0x05e4 0x65 0x05e5 0x66 0x05e6 0x67 0x05e7 0x68 0x05e8 0x69 0x05e9 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x71 0xfffd 0x71 0x05ea 0x74 0xfffd 0x74 0xfffd 0x74 0x00a0 0x78 0xfffd 0x78 0xfffd 0x78 0xfffd 0x78 0x21d4 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x81 0xfffd 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x90 0xfffd 0x90 0xfffd 0x90 0xfffd 0x90 0xfffd 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9d 0xfffd 0x9d 0xfffd 0x9d 0xfffd 0x9d 0x00b8 0x9f 0xfffd 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaf 0xfffd 0xaf 0xfffd 0xaf 0xfffd 0xaf 0xfffd 0xaf 0xfffd 0xaf 0x00ae 0xb0 0x005e 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x005b 0xbb 0x005d 0xbc 0x203e 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0xfffd 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0xfffd 0xff 0x009f libintl-perl-1.26/tests/02ibm437.t000644 000765 000024 00000014376 12511127523 017021 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM437', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM437', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM437'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM437', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x00ec 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00f2 0x96 0x00fb 0x97 0x00f9 0x98 0x00ff 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00a5 0x9e 0x20a7 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x00df 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x03c6 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm500.t000644 000765 000024 00000014376 12511127523 017010 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM500', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM500', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM500'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM500', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x00f0 0x8d 0x00fd 0x8e 0x00fe 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x00e6 0x9d 0x00b8 0x9e 0x00c6 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x00d0 0xad 0x00dd 0xae 0x00de 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x00af 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x00d6 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm850.t000644 000765 000024 00000014376 12511127523 017020 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM850', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM850', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM850'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM850', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x00ec 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00f2 0x96 0x00fb 0x97 0x00f9 0x98 0x00ff 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00f8 0x9c 0x00a3 0x9d 0x00d8 0x9e 0x00d7 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x00ae 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x00c1 0xb6 0x00c2 0xb7 0x00c0 0xb8 0x00a9 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x00a2 0xbe 0x00a5 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x00e3 0xc7 0x00c3 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x00a4 0xd0 0x00f0 0xd1 0x00d0 0xd2 0x00ca 0xd3 0x00cb 0xd4 0x00c8 0xd5 0x0131 0xd6 0x00cd 0xd7 0x00ce 0xd8 0x00cf 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x00a6 0xde 0x00cc 0xdf 0x2580 0xe0 0x00d3 0xe1 0x00df 0xe2 0x00d4 0xe3 0x00d2 0xe4 0x00f5 0xe5 0x00d5 0xe6 0x00b5 0xe7 0x00fe 0xe8 0x00de 0xe9 0x00da 0xea 0x00db 0xeb 0x00d9 0xec 0x00fd 0xed 0x00dd 0xee 0x00af 0xef 0x00b4 0xf0 0x00ad 0xf1 0x00b1 0xf2 0x2017 0xf3 0x00be 0xf4 0x00b6 0xf5 0x00a7 0xf6 0x00f7 0xf7 0x00b8 0xf8 0x00b0 0xf9 0x00a8 0xfa 0x00b7 0xfb 0x00b9 0xfc 0x00b3 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm851.t000644 000765 000024 00000014376 12511127523 017021 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM851', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM851', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM851'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM851', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x0386 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x0388 0x8e 0x00c4 0x8f 0x0389 0x90 0x038a 0x92 0xfffd 0x92 0x038c 0x93 0x00f4 0x94 0x00f6 0x95 0x038e 0x96 0x00fb 0x97 0x00f9 0x98 0x038f 0x99 0x00d6 0x9a 0x00dc 0x9b 0x03ac 0x9c 0x00a3 0x9d 0x03ad 0x9e 0x03ae 0x9f 0x03af 0xa0 0x03ca 0xa1 0x0390 0xa2 0x03cc 0xa3 0x03cd 0xa4 0x0391 0xa5 0x0392 0xa6 0x0393 0xa7 0x0394 0xa8 0x0395 0xa9 0x0396 0xaa 0x0397 0xab 0x00bd 0xac 0x0398 0xad 0x0399 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x039a 0xb6 0x039b 0xb7 0x039d 0xb8 0x039c 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x039e 0xbe 0x039f 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x03a0 0xc7 0x03a1 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x03a3 0xd0 0x03a4 0xd1 0x03a5 0xd2 0x03a6 0xd3 0x03a7 0xd4 0x03a8 0xd5 0x03a9 0xd6 0x03b1 0xd7 0x03b2 0xd8 0x03b3 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x03b4 0xde 0x03b5 0xdf 0x2580 0xe0 0x03b6 0xe1 0x03b7 0xe2 0x03b8 0xe3 0x03b9 0xe4 0x03ba 0xe5 0x03bb 0xe6 0x03bc 0xe7 0x03bd 0xe8 0x03be 0xe9 0x03bf 0xea 0x03c0 0xeb 0x03c1 0xec 0x03c3 0xed 0x03c2 0xee 0x03c4 0xef 0x00b4 0xf0 0x00ad 0xf1 0x00b1 0xf2 0x03c5 0xf3 0x03c6 0xf4 0x03c7 0xf5 0x00a7 0xf6 0x03c8 0xf7 0x02db 0xf8 0x00b0 0xf9 0x00a8 0xfa 0x03c9 0xfb 0x03cb 0xfc 0x03b0 0xfd 0x03ce 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm852.t000644 000765 000024 00000014376 12511127523 017022 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM852', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM852', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM852'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM852', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x016f 0x86 0x0107 0x87 0x00e7 0x88 0x0142 0x89 0x00eb 0x8a 0x0150 0x8b 0x0151 0x8c 0x00ee 0x8d 0x0179 0x8e 0x00c4 0x8f 0x0106 0x90 0x00c9 0x91 0x0139 0x92 0x013a 0x93 0x00f4 0x94 0x00f6 0x95 0x013d 0x96 0x013e 0x97 0x015a 0x98 0x015b 0x99 0x00d6 0x9a 0x00dc 0x9b 0x0164 0x9c 0x0165 0x9d 0x0141 0x9e 0x00d7 0x9f 0x010d 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x0104 0xa5 0x0105 0xa6 0x017d 0xa7 0x017e 0xa8 0x0118 0xa9 0x0119 0xaa 0x00ac 0xab 0x017a 0xac 0x010c 0xad 0x015f 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x00c1 0xb6 0x00c2 0xb7 0x011a 0xb8 0x015e 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x017b 0xbe 0x017c 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x0102 0xc7 0x0103 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x00a4 0xd0 0x0111 0xd1 0x0110 0xd2 0x010e 0xd3 0x00cb 0xd4 0x010f 0xd5 0x0147 0xd6 0x00cd 0xd7 0x00ce 0xd8 0x011b 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x0162 0xde 0x016e 0xdf 0x2580 0xe0 0x00d3 0xe1 0x00df 0xe2 0x00d4 0xe3 0x0143 0xe4 0x0144 0xe5 0x0148 0xe6 0x0160 0xe7 0x0161 0xe8 0x0154 0xe9 0x00da 0xea 0x0155 0xeb 0x0170 0xec 0x00fd 0xed 0x00dd 0xee 0x0163 0xef 0x00b4 0xf0 0x00ad 0xf1 0x02dd 0xf2 0x02db 0xf3 0x02c7 0xf4 0x02d8 0xf5 0x00a7 0xf6 0x00f7 0xf7 0x00b8 0xf8 0x00b0 0xf9 0x00a8 0xfa 0x02d9 0xfb 0x0171 0xfc 0x0158 0xfd 0x0159 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm855.t000644 000765 000024 00000014376 12511127523 017025 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM855', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM855', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM855'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM855', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0452 0x81 0x0402 0x82 0x0453 0x83 0x0403 0x84 0x0451 0x85 0x0401 0x86 0x0454 0x87 0x0404 0x88 0x0455 0x89 0x0405 0x8a 0x0456 0x8b 0x0406 0x8c 0x0457 0x8d 0x0407 0x8e 0x0458 0x8f 0x0408 0x90 0x0459 0x91 0x0409 0x92 0x045a 0x93 0x040a 0x94 0x045b 0x95 0x040b 0x96 0x045c 0x97 0x040c 0x98 0x045e 0x99 0x040e 0x9a 0x045f 0x9b 0x040f 0x9c 0x044e 0x9d 0x042e 0x9e 0x044a 0x9f 0x042a 0xa0 0x0430 0xa1 0x0410 0xa2 0x0431 0xa3 0x0411 0xa4 0x0446 0xa5 0x0426 0xa6 0x0434 0xa7 0x0414 0xa8 0x0435 0xa9 0x0415 0xaa 0x0444 0xab 0x0424 0xac 0x0433 0xad 0x0413 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x0445 0xb6 0x0425 0xb7 0x0438 0xb8 0x0418 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x0439 0xbe 0x0419 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x043a 0xc7 0x041a 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x00a4 0xd0 0x043b 0xd1 0x041b 0xd2 0x043c 0xd3 0x041c 0xd4 0x043d 0xd5 0x041d 0xd6 0x043e 0xd7 0x041e 0xd8 0x043f 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x041f 0xde 0x044f 0xdf 0x2580 0xe0 0x042f 0xe1 0x0440 0xe2 0x0420 0xe3 0x0441 0xe4 0x0421 0xe5 0x0442 0xe6 0x0422 0xe7 0x0443 0xe8 0x0423 0xe9 0x0436 0xea 0x0416 0xeb 0x0432 0xec 0x0412 0xed 0x044c 0xee 0x042c 0xef 0x2116 0xf0 0x00ad 0xf1 0x044b 0xf2 0x042b 0xf3 0x0437 0xf4 0x0417 0xf5 0x0448 0xf6 0x0428 0xf7 0x044d 0xf8 0x042d 0xf9 0x0449 0xfa 0x0429 0xfb 0x0447 0xfc 0x0427 0xfd 0x00a7 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm857.t000644 000765 000024 00000014376 12511127523 017027 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM857', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM857', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM857'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM857', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x0131 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00f2 0x96 0x00fb 0x97 0x00f9 0x98 0x0130 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00f8 0x9c 0x00a3 0x9d 0x00d8 0x9e 0x015e 0x9f 0x015f 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x011e 0xa7 0x011f 0xa8 0x00bf 0xa9 0x00ae 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x00c1 0xb6 0x00c2 0xb7 0x00c0 0xb8 0x00a9 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x00a2 0xbe 0x00a5 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x00e3 0xc7 0x00c3 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x00a4 0xd0 0x00ba 0xd1 0x00aa 0xd2 0x00ca 0xd3 0x00cb 0xd4 0x00c8 0xd6 0xfffd 0xd6 0x00cd 0xd7 0x00ce 0xd8 0x00cf 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x00a6 0xde 0x00cc 0xdf 0x2580 0xe0 0x00d3 0xe1 0x00df 0xe2 0x00d4 0xe3 0x00d2 0xe4 0x00f5 0xe5 0x00d5 0xe6 0x00b5 0xe8 0xfffd 0xe8 0x00d7 0xe9 0x00da 0xea 0x00db 0xeb 0x00d9 0xec 0x00ec 0xed 0x00ff 0xee 0x00af 0xef 0x00b4 0xf0 0x00ad 0xf1 0x00b1 0xf3 0xfffd 0xf3 0x00be 0xf4 0x00b6 0xf5 0x00a7 0xf6 0x00f7 0xf7 0x00b8 0xf8 0x00b0 0xf9 0x00a8 0xfa 0x00b7 0xfb 0x00b9 0xfc 0x00b3 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm860.t000644 000765 000024 00000014376 12511127523 017021 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM860', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM860', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM860'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM860', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e3 0x85 0x00e0 0x86 0x00c1 0x87 0x00e7 0x88 0x00ea 0x89 0x00ca 0x8a 0x00e8 0x8b 0x00cd 0x8c 0x00d4 0x8d 0x00ec 0x8e 0x00c3 0x8f 0x00c2 0x90 0x00c9 0x91 0x00c0 0x92 0x00c8 0x93 0x00f4 0x94 0x00f5 0x95 0x00f2 0x96 0x00da 0x97 0x00f9 0x98 0x00cc 0x99 0x00d5 0x9a 0x00dc 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00d9 0x9e 0x20a7 0x9f 0x00d3 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x00d2 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x00df 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x03c6 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm861.t000644 000765 000024 00000014376 12511127523 017022 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM861', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM861', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM861'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM861', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00d0 0x8c 0x00f0 0x8d 0x00de 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00fe 0x96 0x00fb 0x97 0x00dd 0x98 0x00fd 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00f8 0x9c 0x00a3 0x9d 0x00d8 0x9e 0x20a7 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00c1 0xa5 0x00cd 0xa6 0x00d3 0xa7 0x00da 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x00df 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x03c6 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm862.t000644 000765 000024 00000014376 12511127523 017023 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM862', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM862', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM862'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM862', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x05d0 0x81 0x05d1 0x82 0x05d2 0x83 0x05d3 0x84 0x05d4 0x85 0x05d5 0x86 0x05d6 0x87 0x05d7 0x88 0x05d8 0x89 0x05d9 0x8a 0x05da 0x8b 0x05db 0x8c 0x05dc 0x8d 0x05dd 0x8e 0x05de 0x8f 0x05df 0x90 0x05e0 0x91 0x05e1 0x92 0x05e2 0x93 0x05e3 0x94 0x05e4 0x95 0x05e5 0x96 0x05e6 0x97 0x05e7 0x98 0x05e8 0x99 0x05e9 0x9a 0x05ea 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00a5 0x9e 0x20a7 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x00df 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x03c6 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm863.t000644 000765 000024 00000014376 12511127523 017024 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM863', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM863', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM863'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM863', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00c2 0x85 0x00e0 0x86 0x00b6 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x2017 0x8e 0x00c0 0x8f 0x00a7 0x90 0x00c9 0x91 0x00c8 0x92 0x00ca 0x93 0x00f4 0x94 0x00cb 0x95 0x00cf 0x96 0x00fb 0x97 0x00f9 0x98 0x00a4 0x99 0x00d4 0x9a 0x00dc 0x9b 0x00a2 0x9c 0x00a3 0x9d 0x00d9 0x9e 0x00db 0x9f 0x0192 0xa0 0x00a6 0xa1 0x00b4 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00a8 0xa5 0x00b8 0xa6 0x00b3 0xa7 0x00af 0xa8 0x00ce 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00be 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x00df 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x03c6 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm864.t000644 000765 000024 00000014376 12511127523 017025 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM864', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM864', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM864'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM864', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x066a 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00b0 0x81 0x00b7 0x82 0x2219 0x83 0x221a 0x84 0x2592 0x85 0x2500 0x86 0x2502 0x87 0x253c 0x88 0x2524 0x89 0x252c 0x8a 0x251c 0x8b 0x2534 0x8c 0x2510 0x8d 0x250c 0x8e 0x2514 0x8f 0x2518 0x90 0x03b2 0x91 0x221e 0x92 0x03c6 0x93 0x00b1 0x94 0x00bd 0x95 0x00bc 0x96 0x2248 0x97 0x00ab 0x98 0x00bb 0x99 0xfef7 0x9a 0xfef8 0x9d 0xfffd 0x9d 0xfffd 0x9d 0xfefb 0x9e 0xfefc 0xa0 0xfffd 0xa0 0x00a0 0xa1 0x00ad 0xa2 0xfe82 0xa3 0x00a3 0xa4 0x00a4 0xa5 0xfe84 0xa8 0xfffd 0xa8 0xfffd 0xa8 0xfe8e 0xa9 0xfe8f 0xaa 0xfe95 0xab 0xfe99 0xac 0x060c 0xad 0xfe9d 0xae 0xfea1 0xaf 0xfea5 0xb0 0x0660 0xb1 0x0661 0xb2 0x0662 0xb3 0x0663 0xb4 0x0664 0xb5 0x0665 0xb6 0x0666 0xb7 0x0667 0xb8 0x0668 0xb9 0x0669 0xba 0xfed1 0xbb 0x061b 0xbc 0xfeb1 0xbd 0xfeb5 0xbe 0xfeb9 0xbf 0x061f 0xc0 0x00a2 0xc1 0xfe80 0xc2 0xfe81 0xc3 0xfe83 0xc4 0xfe85 0xc5 0xfeca 0xc6 0xfe8b 0xc7 0xfe8d 0xc8 0xfe91 0xc9 0xfe93 0xca 0xfe97 0xcb 0xfe9b 0xcc 0xfe9f 0xcd 0xfea3 0xce 0xfea7 0xcf 0xfea9 0xd0 0xfeab 0xd1 0xfead 0xd2 0xfeaf 0xd3 0xfeb3 0xd4 0xfeb7 0xd5 0xfebb 0xd6 0xfebf 0xd7 0xfec1 0xd8 0xfec5 0xd9 0xfecb 0xda 0xfecf 0xdb 0x00a6 0xdc 0x00ac 0xdd 0x00f7 0xde 0x00d7 0xdf 0xfec9 0xe0 0x0640 0xe1 0xfed3 0xe2 0xfed7 0xe3 0xfedb 0xe4 0xfedf 0xe5 0xfee3 0xe6 0xfee7 0xe7 0xfeeb 0xe8 0xfeed 0xe9 0xfeef 0xea 0xfef3 0xeb 0xfebd 0xec 0xfecc 0xed 0xfece 0xee 0xfecd 0xef 0xfee1 0xf0 0xfe7d 0xf1 0x0651 0xf2 0xfee5 0xf3 0xfee9 0xf4 0xfeec 0xf5 0xfef0 0xf6 0xfef2 0xf7 0xfed0 0xf8 0xfed5 0xf9 0xfef5 0xfa 0xfef6 0xfb 0xfedd 0xfc 0xfed9 0xfd 0xfef1 0xfe 0x25a0 0xff 0xfffd libintl-perl-1.26/tests/02ibm865.t000644 000765 000024 00000014376 12511127523 017026 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM865', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM865', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM865'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM865', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c7 0x81 0x00fc 0x82 0x00e9 0x83 0x00e2 0x84 0x00e4 0x85 0x00e0 0x86 0x00e5 0x87 0x00e7 0x88 0x00ea 0x89 0x00eb 0x8a 0x00e8 0x8b 0x00ef 0x8c 0x00ee 0x8d 0x00ec 0x8e 0x00c4 0x8f 0x00c5 0x90 0x00c9 0x91 0x00e6 0x92 0x00c6 0x93 0x00f4 0x94 0x00f6 0x95 0x00f2 0x96 0x00fb 0x97 0x00f9 0x98 0x00ff 0x99 0x00d6 0x9a 0x00dc 0x9b 0x00f8 0x9c 0x00a3 0x9d 0x00d8 0x9e 0x20a7 0x9f 0x0192 0xa0 0x00e1 0xa1 0x00ed 0xa2 0x00f3 0xa3 0x00fa 0xa4 0x00f1 0xa5 0x00d1 0xa6 0x00aa 0xa7 0x00ba 0xa8 0x00bf 0xa9 0x2310 0xaa 0x00ac 0xab 0x00bd 0xac 0x00bc 0xad 0x00a1 0xae 0x00ab 0xaf 0x00a4 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x03b1 0xe1 0x00df 0xe2 0x0393 0xe3 0x03c0 0xe4 0x03a3 0xe5 0x03c3 0xe6 0x00b5 0xe7 0x03c4 0xe8 0x03a6 0xe9 0x0398 0xea 0x03a9 0xeb 0x03b4 0xec 0x221e 0xed 0x03c6 0xee 0x03b5 0xef 0x2229 0xf0 0x2261 0xf1 0x00b1 0xf2 0x2265 0xf3 0x2264 0xf4 0x2320 0xf5 0x2321 0xf6 0x00f7 0xf7 0x2248 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x207f 0xfd 0x00b2 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm866.t000644 000765 000024 00000014376 12511127523 017027 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM866', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM866', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM866'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM866', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0410 0x81 0x0411 0x82 0x0412 0x83 0x0413 0x84 0x0414 0x85 0x0415 0x86 0x0416 0x87 0x0417 0x88 0x0418 0x89 0x0419 0x8a 0x041a 0x8b 0x041b 0x8c 0x041c 0x8d 0x041d 0x8e 0x041e 0x8f 0x041f 0x90 0x0420 0x91 0x0421 0x92 0x0422 0x93 0x0423 0x94 0x0424 0x95 0x0425 0x96 0x0426 0x97 0x0427 0x98 0x0428 0x99 0x0429 0x9a 0x042a 0x9b 0x042b 0x9c 0x042c 0x9d 0x042d 0x9e 0x042e 0x9f 0x042f 0xa0 0x0430 0xa1 0x0431 0xa2 0x0432 0xa3 0x0433 0xa4 0x0434 0xa5 0x0435 0xa6 0x0436 0xa7 0x0437 0xa8 0x0438 0xa9 0x0439 0xaa 0x043a 0xab 0x043b 0xac 0x043c 0xad 0x043d 0xae 0x043e 0xaf 0x043f 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x2561 0xb6 0x2562 0xb7 0x2556 0xb8 0x2555 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x255c 0xbe 0x255b 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x255e 0xc7 0x255f 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x2567 0xd0 0x2568 0xd1 0x2564 0xd2 0x2565 0xd3 0x2559 0xd4 0x2558 0xd5 0x2552 0xd6 0x2553 0xd7 0x256b 0xd8 0x256a 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x258c 0xde 0x2590 0xdf 0x2580 0xe0 0x0440 0xe1 0x0441 0xe2 0x0442 0xe3 0x0443 0xe4 0x0444 0xe5 0x0445 0xe6 0x0446 0xe7 0x0447 0xe8 0x0448 0xe9 0x0449 0xea 0x044a 0xeb 0x044b 0xec 0x044c 0xed 0x044d 0xee 0x044e 0xef 0x044f 0xf0 0x0401 0xf1 0x0451 0xf2 0x0404 0xf3 0x0454 0xf4 0x0407 0xf5 0x0457 0xf6 0x040e 0xf7 0x045e 0xf8 0x00b0 0xf9 0x2219 0xfa 0x00b7 0xfb 0x221a 0xfc 0x2116 0xfd 0x00a4 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm868.t000644 000765 000024 00000014376 12511127523 017031 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM868', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM868', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM868'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x8c"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM868', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0660 0x81 0x0661 0x82 0x0662 0x83 0x0663 0x84 0x0664 0x85 0x0665 0x86 0x0666 0x87 0x0667 0x88 0x0668 0x89 0x0669 0x8a 0x060c 0x8b 0x061b 0x8c 0x061f 0x8d 0x0622 0x8e 0x0627 0x8f 0xfe8e 0x90 0xe016 0x91 0x0628 0x92 0xfe91 0x93 0x067e 0x95 0xfffd 0x95 0x0629 0x96 0x062a 0x97 0xfe97 0x9a 0xfffd 0x9a 0xfffd 0x9a 0x062b 0x9b 0xfe9b 0x9c 0x062c 0x9d 0xfe9f 0xa0 0xfffd 0xa0 0xfffd 0xa0 0x062d 0xa1 0xfea3 0xa2 0x062e 0xa3 0xfea7 0xa4 0x062f 0xa6 0xfffd 0xa6 0x0630 0xa7 0x0631 0xa9 0xfffd 0xa9 0x0632 0xab 0xfffd 0xab 0x0633 0xac 0xfeb3 0xad 0x0634 0xae 0x00ab 0xaf 0x00bb 0xb0 0xfeb7 0xb1 0x0635 0xb2 0x2591 0xb3 0x2592 0xb4 0x2593 0xb5 0x2502 0xb6 0x2524 0xb7 0xfebb 0xb8 0x0636 0xb9 0xfebf 0xba 0x0637 0xbb 0x2563 0xbc 0x2551 0xbd 0x2557 0xbe 0x255d 0xbf 0x0638 0xc0 0x0639 0xc1 0x2510 0xc2 0x2514 0xc3 0x2534 0xc4 0x252c 0xc5 0x251c 0xc6 0x2500 0xc7 0x253c 0xc8 0xfeca 0xc9 0xfecb 0xca 0x255a 0xcb 0x2554 0xcc 0x2569 0xcd 0x2566 0xce 0x2560 0xcf 0x2550 0xd0 0x256c 0xd1 0xfecc 0xd2 0x063a 0xd3 0xfece 0xd4 0xfecf 0xd5 0xfed0 0xd6 0x0641 0xd7 0xfed3 0xd8 0x0642 0xd9 0xfed7 0xda 0xfeda 0xdb 0x2518 0xdc 0x250c 0xdd 0x2588 0xde 0x2580 0xdf 0xfedb 0xe1 0xfffd 0xe1 0x2584 0xe3 0xfffd 0xe3 0x0644 0xe4 0xfede 0xe5 0xfee0 0xe6 0x0645 0xe7 0xfee3 0xe9 0xfffd 0xe9 0x0646 0xea 0xfee7 0xec 0xfffd 0xec 0x0648 0xf1 0xfffd 0xf1 0xfffd 0xf1 0xfffd 0xf1 0xfffd 0xf1 0x0621 0xf2 0x00ad 0xfb 0xfffd 0xfb 0xfffd 0xfb 0xfffd 0xfb 0xfffd 0xfb 0xfffd 0xfb 0xfffd 0xfb 0xfffd 0xfb 0xfffd 0xfb 0x0651 0xfc 0xfe7d 0xfe 0xfffd 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm869.t000644 000765 000024 00000014376 12511127523 017032 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM869', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM869', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM869'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM869', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x86 0xfffd 0x86 0xfffd 0x86 0xfffd 0x86 0xfffd 0x86 0xfffd 0x86 0xfffd 0x86 0x0386 0x88 0xfffd 0x88 0x00b7 0x89 0x00ac 0x8a 0x00a6 0x8b 0x2018 0x8c 0x2019 0x8d 0x0388 0x8e 0x2015 0x8f 0x0389 0x90 0x038a 0x91 0x03aa 0x92 0x038c 0x95 0xfffd 0x95 0xfffd 0x95 0x038e 0x96 0x03ab 0x97 0x00a9 0x98 0x038f 0x99 0x00b2 0x9a 0x00b3 0x9b 0x03ac 0x9c 0x00a3 0x9d 0x03ad 0x9e 0x03ae 0x9f 0x03af 0xa0 0x03ca 0xa1 0x0390 0xa2 0x03cc 0xa3 0x03cd 0xa4 0x0391 0xa5 0x0392 0xa6 0x0393 0xa7 0x0394 0xa8 0x0395 0xa9 0x0396 0xaa 0x0397 0xab 0x00bd 0xac 0x0398 0xad 0x0399 0xae 0x00ab 0xaf 0x00bb 0xb0 0x2591 0xb1 0x2592 0xb2 0x2593 0xb3 0x2502 0xb4 0x2524 0xb5 0x039a 0xb6 0x039b 0xb7 0x039c 0xb8 0x039d 0xb9 0x2563 0xba 0x2551 0xbb 0x2557 0xbc 0x255d 0xbd 0x039e 0xbe 0x039f 0xbf 0x2510 0xc0 0x2514 0xc1 0x2534 0xc2 0x252c 0xc3 0x251c 0xc4 0x2500 0xc5 0x253c 0xc6 0x03a0 0xc7 0x03a1 0xc8 0x255a 0xc9 0x2554 0xca 0x2569 0xcb 0x2566 0xcc 0x2560 0xcd 0x2550 0xce 0x256c 0xcf 0x03a3 0xd0 0x03a4 0xd1 0x03a5 0xd2 0x03a6 0xd3 0x03a7 0xd4 0x03a8 0xd5 0x03a9 0xd6 0x03b1 0xd7 0x03b2 0xd8 0x03b3 0xd9 0x2518 0xda 0x250c 0xdb 0x2588 0xdc 0x2584 0xdd 0x03b4 0xde 0x03b5 0xdf 0x2580 0xe0 0x03b6 0xe1 0x03b7 0xe2 0x03b8 0xe3 0x03b9 0xe4 0x03ba 0xe5 0x03bb 0xe6 0x03bc 0xe7 0x03bd 0xe8 0x03be 0xe9 0x03bf 0xea 0x03c0 0xeb 0x03c1 0xec 0x03c3 0xed 0x03c2 0xee 0x03c4 0xef 0x0384 0xf0 0x00ad 0xf1 0x00b1 0xf2 0x03c5 0xf3 0x03c6 0xf4 0x03c7 0xf5 0x00a7 0xf6 0x03c8 0xf7 0x0385 0xf8 0x00b0 0xf9 0x00a8 0xfa 0x03c9 0xfb 0x03cb 0xfc 0x03b0 0xfd 0x03ce 0xfe 0x25a0 0xff 0x00a0 libintl-perl-1.26/tests/02ibm870.t000644 000765 000024 00000014376 12511127523 017022 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM870', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM870', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM870'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM870', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x43 0xfffd 0x43 0x00e4 0x45 0xfffd 0x45 0x00e1 0x46 0x0103 0x47 0x010d 0x48 0x00e7 0x49 0x0107 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x53 0xfffd 0x53 0x00eb 0x54 0x016f 0x55 0x00ed 0x57 0xfffd 0x57 0x013e 0x58 0x013a 0x59 0x00df 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x63 0xfffd 0x63 0x00c4 0x64 0x02dd 0x65 0x00c1 0x67 0xfffd 0x67 0x010c 0x68 0x00c7 0x69 0x0106 0x6a 0x007c 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x02c7 0x71 0x00c9 0x73 0xfffd 0x73 0x00cb 0x74 0x016e 0x75 0x00cd 0x77 0xfffd 0x77 0x013d 0x78 0x0139 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x02d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x015b 0x8b 0x0148 0x8c 0x0111 0x8d 0x00fd 0x8e 0x0159 0x90 0xfffd 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x0142 0x9b 0x0144 0x9c 0x0161 0x9d 0x00b8 0x9e 0x02db 0x9f 0x00a4 0xa0 0x0105 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x015a 0xab 0x0147 0xac 0x0110 0xad 0x00dd 0xae 0x0158 0xb0 0xfffd 0xb0 0x00b7 0xb1 0x0104 0xb2 0x017c 0xb4 0xfffd 0xb4 0x017b 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x017e 0xb8 0x017a 0xb9 0x017d 0xba 0x0179 0xbb 0x0143 0xbc 0x0160 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x00f6 0xcd 0x0155 0xce 0x00f3 0xcf 0x0151 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x011a 0xdb 0x0171 0xdc 0x00fc 0xdd 0x0165 0xde 0x00fa 0xdf 0x011b 0xe0 0x005c 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x010f 0xeb 0x00d4 0xec 0x00d6 0xed 0x0154 0xee 0x00d3 0xef 0x0150 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x010e 0xfb 0x0170 0xfc 0x00dc 0xfd 0x0164 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm871.t000644 000765 000024 00000014376 12511127523 017023 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM871', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM871', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM871'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM871', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x46 0x00e3 0x47 0x00e5 0x48 0x00e7 0x49 0x00f1 0x4a 0x00fe 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x00c6 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x00d6 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x66 0x00c3 0x67 0x00c5 0x68 0x00c7 0x69 0x00d1 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00f8 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x00f0 0x7a 0x003a 0x7b 0x0023 0x7c 0x00d0 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x00d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x00ab 0x8b 0x00bb 0x8c 0x0060 0x8d 0x00fd 0x8e 0x007b 0x8f 0x00b1 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x00aa 0x9b 0x00ba 0x9c 0x007d 0x9d 0x00b8 0x9e 0x005d 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x00f6 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x00a1 0xab 0x00bf 0xac 0x0040 0xad 0x00dd 0xae 0x005b 0xaf 0x00ae 0xb0 0x00a2 0xb1 0x00a3 0xb2 0x00a5 0xb3 0x00b7 0xb4 0x00a9 0xb5 0x00a7 0xb6 0x00b6 0xb7 0x00bc 0xb8 0x00bd 0xb9 0x00be 0xba 0x00ac 0xbb 0x007c 0xbc 0x00af 0xbd 0x00a8 0xbe 0x005c 0xbf 0x00d7 0xc0 0x00de 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x007e 0xcd 0x00f2 0xce 0x00f3 0xcf 0x00f5 0xd0 0x00e6 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b9 0xdb 0x00fb 0xdc 0x00fc 0xdd 0x00f9 0xde 0x00fa 0xdf 0x00ff 0xe0 0x00b4 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x005e 0xed 0x00d2 0xee 0x00d3 0xef 0x00d5 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x00dc 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm874.t000644 000765 000024 00000014376 12511127523 017026 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM874', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM874', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM874'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM874', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x85 0xfffd 0x85 0xfffd 0x85 0xfffd 0x85 0xfffd 0x85 0x2026 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0xfffd 0xa0 0x00a0 0xa1 0x0e01 0xa2 0x0e02 0xa3 0x0e03 0xa4 0x0e04 0xa5 0x0e05 0xa6 0x0e06 0xa7 0x0e07 0xa8 0x0e08 0xa9 0x0e09 0xaa 0x0e0a 0xab 0x0e0b 0xac 0x0e0c 0xad 0x0e0d 0xae 0x0e0e 0xaf 0x0e0f 0xb0 0x0e10 0xb1 0x0e11 0xb2 0x0e12 0xb3 0x0e13 0xb4 0x0e14 0xb5 0x0e15 0xb6 0x0e16 0xb7 0x0e17 0xb8 0x0e18 0xb9 0x0e19 0xba 0x0e1a 0xbb 0x0e1b 0xbc 0x0e1c 0xbd 0x0e1d 0xbe 0x0e1e 0xbf 0x0e1f 0xc0 0x0e20 0xc1 0x0e21 0xc2 0x0e22 0xc3 0x0e23 0xc4 0x0e24 0xc5 0x0e25 0xc6 0x0e26 0xc7 0x0e27 0xc8 0x0e28 0xc9 0x0e29 0xca 0x0e2a 0xcb 0x0e2b 0xcc 0x0e2c 0xcd 0x0e2d 0xce 0x0e2e 0xcf 0x0e2f 0xd0 0x0e30 0xd1 0x0e31 0xd2 0x0e32 0xd3 0x0e33 0xd4 0x0e34 0xd5 0x0e35 0xd6 0x0e36 0xd7 0x0e37 0xd8 0x0e38 0xd9 0x0e39 0xda 0x0e3a 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0x0e3f 0xe0 0x0e40 0xe1 0x0e41 0xe2 0x0e42 0xe3 0x0e43 0xe4 0x0e44 0xe5 0x0e45 0xe6 0x0e46 0xe7 0x0e47 0xe8 0x0e48 0xe9 0x0e49 0xea 0x0e4a 0xeb 0x0e4b 0xec 0x0e4c 0xed 0x0e4d 0xee 0x0e4e 0xef 0x0e4f 0xf0 0x0e50 0xf1 0x0e51 0xf2 0x0e52 0xf3 0x0e53 0xf4 0x0e54 0xf5 0x0e55 0xf6 0x0e56 0xf7 0x0e57 0xf8 0x0e58 0xf9 0x0e59 0xfa 0x0e5a 0xfb 0x0e5b 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02ibm875.t000644 000765 000024 00000014376 12511127523 017027 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM875', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM875', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM875'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM875', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x0391 0x42 0x0392 0x43 0x0393 0x44 0x0394 0x45 0x0395 0x46 0x0396 0x47 0x0397 0x48 0x0398 0x49 0x0399 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x039a 0x52 0x039b 0x53 0x039c 0x54 0x039d 0x55 0x039e 0x56 0x039f 0x57 0x03a0 0x58 0x03a1 0x59 0x03a3 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x03a4 0x63 0x03a5 0x64 0x03a6 0x65 0x03a7 0x66 0x03a8 0x67 0x03a9 0x68 0x03aa 0x69 0x03ab 0x6b 0xfffd 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x00a8 0x71 0x0386 0x72 0x0388 0x73 0x0389 0x74 0x2207 0x75 0x038a 0x76 0x038c 0x77 0x038e 0x78 0x038f 0x79 0x0060 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x0385 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x03b1 0x8b 0x03b2 0x8c 0x03b3 0x8d 0x03b4 0x8e 0x03b5 0x8f 0x03b6 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x03b7 0x9b 0x03b8 0x9c 0x03b9 0x9d 0x03ba 0x9e 0x03bb 0x9f 0x03bc 0xa0 0x00b4 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x03bd 0xab 0x03be 0xac 0x03bf 0xad 0x03c0 0xae 0x03c1 0xaf 0x03c3 0xb0 0x00a3 0xb1 0x03ac 0xb2 0x03ad 0xb3 0x03ae 0xb4 0x0390 0xb5 0x03af 0xb6 0x03cc 0xb7 0x03cd 0xb8 0x03b0 0xb9 0x03ce 0xba 0x03c2 0xbb 0x03c4 0xbc 0x03c5 0xbd 0x03c6 0xbe 0x03c7 0xbf 0x03c8 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x03c9 0xcc 0x03ca 0xcd 0x03cb 0xce 0x2018 0xcf 0x2015 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x00b1 0xdb 0x00bd 0xdd 0xfffd 0xdd 0x00b7 0xde 0x2019 0xdf 0x00a6 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00a7 0xee 0xfffd 0xee 0xfffd 0xee 0x00ab 0xef 0x00ac 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00a9 0xfe 0xfffd 0xfe 0xfffd 0xfe 0x00bb 0xff 0x009f libintl-perl-1.26/tests/02ibm880.t000644 000765 000024 00000014376 12511127523 017023 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM880', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM880', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM880'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM880', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x42 0xfffd 0x42 0x0452 0x43 0x0453 0x44 0x0451 0x46 0xfffd 0x46 0x0455 0x47 0x0456 0x48 0x0457 0x49 0x0458 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x0459 0x52 0x045a 0x53 0x045b 0x54 0x045c 0x56 0xfffd 0x56 0x045f 0x57 0x042a 0x58 0x2116 0x59 0x0402 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x0403 0x63 0x0401 0x65 0xfffd 0x65 0x0405 0x66 0x0406 0x67 0x0407 0x68 0x0408 0x69 0x0409 0x6a 0x00a6 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x040a 0x71 0x040b 0x72 0x040c 0x75 0xfffd 0x75 0xfffd 0x75 0x040f 0x76 0x044e 0x77 0x0430 0x78 0x0431 0x7a 0xfffd 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0x0446 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x0434 0x8b 0x0435 0x8c 0x0444 0x8d 0x0433 0x8e 0x0445 0x8f 0x0438 0x90 0x0439 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x043a 0x9b 0x043b 0x9c 0x043c 0x9d 0x043d 0x9e 0x043e 0x9f 0x043f 0xa0 0x044f 0xa2 0xfffd 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x0440 0xab 0x0441 0xac 0x0442 0xad 0x0443 0xae 0x0436 0xaf 0x0432 0xb0 0x044c 0xb1 0x044b 0xb2 0x0437 0xb3 0x0448 0xb4 0x044d 0xb5 0x0449 0xb6 0x0447 0xb7 0x044a 0xb8 0x042e 0xb9 0x0410 0xba 0x0411 0xbb 0x0426 0xbc 0x0414 0xbd 0x0415 0xbe 0x0424 0xbf 0x0413 0xc1 0xfffd 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x0425 0xcb 0x0418 0xcc 0x0419 0xcd 0x041a 0xce 0x041b 0xcf 0x041c 0xd1 0xfffd 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x041d 0xdb 0x041e 0xdc 0x041f 0xdd 0x042f 0xde 0x0420 0xdf 0x0421 0xe0 0x005c 0xe1 0x00a4 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x0422 0xeb 0x0423 0xec 0x0416 0xed 0x0412 0xee 0x042c 0xef 0x042b 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0x009f libintl-perl-1.26/tests/02ibm891.t000644 000765 000024 00000014376 12511127523 017025 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM891', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM891', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM891'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM891', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02ibm903.t000644 000765 000024 00000014376 12511127523 017017 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM903', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM903', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM903'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM903', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02ibm904.t000644 000765 000024 00000014376 12511127523 017020 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM904', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM904', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM904'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM904', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00a2 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0x00ac 0xfe 0x00a6 0xff 0xfffd libintl-perl-1.26/tests/02ibm905.t000644 000765 000024 00000014376 12511127523 017021 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM905', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM905', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM905'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM905', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x42 0xfffd 0x42 0x00e2 0x43 0x00e4 0x44 0x00e0 0x45 0x00e1 0x47 0xfffd 0x47 0x010b 0x48 0x007b 0x49 0x00f1 0x4a 0x00c7 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0x00e9 0x52 0x00ea 0x53 0x00eb 0x54 0x00e8 0x55 0x00ed 0x56 0x00ee 0x57 0x00ef 0x58 0x00ec 0x59 0x00df 0x5a 0x011e 0x5b 0x0130 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0x00c2 0x63 0x00c4 0x64 0x00c0 0x65 0x00c1 0x67 0xfffd 0x67 0x010a 0x68 0x005b 0x69 0x00d1 0x6a 0x015f 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x71 0xfffd 0x71 0x00c9 0x72 0x00ca 0x73 0x00cb 0x74 0x00c8 0x75 0x00cd 0x76 0x00ce 0x77 0x00cf 0x78 0x00cc 0x79 0x0131 0x7a 0x003a 0x7b 0x00d6 0x7c 0x015e 0x7d 0x0027 0x7e 0x003d 0x7f 0x00dc 0x80 0x02d8 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x0127 0x8b 0x0109 0x8c 0x015d 0x8d 0x016d 0x8f 0xfffd 0x8f 0x007c 0x90 0x00b0 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x0125 0x9b 0x011d 0x9c 0x0135 0x9d 0x02db 0x9f 0xfffd 0x9f 0x00a4 0xa0 0x00b5 0xa1 0x00f6 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0x0126 0xab 0x0108 0xac 0x015c 0xad 0x016c 0xaf 0xfffd 0xaf 0x0040 0xb0 0x00b7 0xb1 0x00a3 0xb2 0x017c 0xb3 0x007d 0xb4 0x017b 0xb5 0x00a7 0xb6 0x005d 0xb8 0xfffd 0xb8 0x00bd 0xb9 0x0024 0xba 0x0124 0xbb 0x011c 0xbc 0x0134 0xbd 0x00a8 0xbe 0x00b4 0xbf 0x00d7 0xc0 0x00e7 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcb 0x00f4 0xcc 0x007e 0xcd 0x00f2 0xce 0x00f3 0xcf 0x0121 0xd0 0x011f 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0x0060 0xdb 0x00fb 0xdc 0x005c 0xdd 0x00f9 0xde 0x00fa 0xe0 0xfffd 0xe0 0x00fc 0xe1 0x00f7 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x00b2 0xeb 0x00d4 0xec 0x0023 0xed 0x00d2 0xee 0x00d3 0xef 0x0120 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfa 0x00b3 0xfb 0x00db 0xfc 0x0022 0xfd 0x00d9 0xfe 0x00da 0xff 0x009f libintl-perl-1.26/tests/02ibm918.t000644 000765 000024 00000014376 12511127523 017025 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IBM918', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IBM918', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM918'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x6f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IBM918', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x009c 0x05 0x0009 0x06 0x0086 0x07 0x007f 0x08 0x0097 0x09 0x008d 0x0a 0x008e 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x009d 0x15 0x0085 0x16 0x0008 0x17 0x0087 0x18 0x0018 0x19 0x0019 0x1a 0x0092 0x1b 0x008f 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0080 0x21 0x0081 0x22 0x0082 0x23 0x0083 0x24 0x0084 0x25 0x000a 0x26 0x0017 0x27 0x001b 0x28 0x0088 0x29 0x0089 0x2a 0x008a 0x2b 0x008b 0x2c 0x008c 0x2d 0x0005 0x2e 0x0006 0x2f 0x0007 0x30 0x0090 0x31 0x0091 0x32 0x0016 0x33 0x0093 0x34 0x0094 0x35 0x0095 0x36 0x0096 0x37 0x0004 0x38 0x0098 0x39 0x0099 0x3a 0x009a 0x3b 0x009b 0x3c 0x0014 0x3d 0x0015 0x3e 0x009e 0x3f 0x001a 0x40 0x0020 0x41 0x00a0 0x42 0x060c 0x43 0x061b 0x44 0x061f 0x45 0x0623 0x46 0x0627 0x47 0xfe8e 0x49 0xfffd 0x49 0x0628 0x4a 0x005b 0x4b 0x002e 0x4c 0x003c 0x4d 0x0028 0x4e 0x002b 0x4f 0x0021 0x50 0x0026 0x51 0xfe91 0x52 0x067e 0x54 0xfffd 0x54 0x0629 0x55 0x062a 0x56 0xfe97 0x59 0xfffd 0x59 0xfffd 0x59 0x062b 0x5a 0x005d 0x5b 0x0024 0x5c 0x002a 0x5d 0x0029 0x5e 0x003b 0x5f 0x005e 0x60 0x002d 0x61 0x002f 0x62 0xfe9b 0x63 0x062c 0x64 0xfe9f 0x67 0xfffd 0x67 0xfffd 0x67 0x062d 0x68 0xfea3 0x69 0x062e 0x6a 0x0060 0x6b 0x002c 0x6c 0x0025 0x6d 0x005f 0x6e 0x003e 0x6f 0x003f 0x70 0x0660 0x71 0x0661 0x72 0x0662 0x73 0x0663 0x74 0x0664 0x75 0x0665 0x76 0x0666 0x77 0x0667 0x78 0x0668 0x79 0x0669 0x7a 0x003a 0x7b 0x0023 0x7c 0x0040 0x7d 0x0027 0x7e 0x003d 0x7f 0x0022 0x80 0xfea7 0x81 0x0061 0x82 0x0062 0x83 0x0063 0x84 0x0064 0x85 0x0065 0x86 0x0066 0x87 0x0067 0x88 0x0068 0x89 0x0069 0x8a 0x062f 0x8c 0xfffd 0x8c 0x0630 0x8d 0x0631 0x8f 0xfffd 0x8f 0x0632 0x91 0xfffd 0x91 0x006a 0x92 0x006b 0x93 0x006c 0x94 0x006d 0x95 0x006e 0x96 0x006f 0x97 0x0070 0x98 0x0071 0x99 0x0072 0x9a 0x0633 0x9b 0xfeb3 0x9c 0x0634 0x9d 0xfeb7 0x9e 0x0635 0x9f 0xfebb 0xa0 0x0636 0xa1 0x007e 0xa2 0x0073 0xa3 0x0074 0xa4 0x0075 0xa5 0x0076 0xa6 0x0077 0xa7 0x0078 0xa8 0x0079 0xa9 0x007a 0xaa 0xfebf 0xab 0x0637 0xac 0x0638 0xad 0x0639 0xae 0xfeca 0xaf 0xfecb 0xb0 0xfecc 0xb1 0x063a 0xb2 0xfece 0xb3 0xfecf 0xb4 0xfed0 0xb5 0x0641 0xb6 0xfed3 0xb7 0x0642 0xb8 0xfed7 0xb9 0x0643 0xba 0xfedb 0xbb 0x007c 0xbe 0xfffd 0xbe 0xfffd 0xbe 0x0644 0xbf 0xfede 0xc0 0x007b 0xc1 0x0041 0xc2 0x0042 0xc3 0x0043 0xc4 0x0044 0xc5 0x0045 0xc6 0x0046 0xc7 0x0047 0xc8 0x0048 0xc9 0x0049 0xca 0x00ad 0xcc 0xfffd 0xcc 0x0645 0xcd 0xfee3 0xcf 0xfffd 0xcf 0x0646 0xd0 0x007d 0xd1 0x004a 0xd2 0x004b 0xd3 0x004c 0xd4 0x004d 0xd5 0x004e 0xd6 0x004f 0xd7 0x0050 0xd8 0x0051 0xd9 0x0052 0xda 0xfee7 0xdc 0xfffd 0xdc 0x0648 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x005c 0xe2 0xfffd 0xe2 0x0053 0xe3 0x0054 0xe4 0x0055 0xe5 0x0056 0xe6 0x0057 0xe7 0x0058 0xe8 0x0059 0xe9 0x005a 0xea 0x0621 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0xfffd 0xf0 0x0030 0xf1 0x0031 0xf2 0x0032 0xf3 0x0033 0xf4 0x0034 0xf5 0x0035 0xf6 0x0036 0xf7 0x0037 0xf8 0x0038 0xf9 0x0039 0xfd 0xfffd 0xfd 0xfffd 0xfd 0xfffd 0xfd 0x0651 0xfe 0xfe7d 0xff 0x009f libintl-perl-1.26/tests/02iec_p27-1.t000644 000765 000024 00000014412 12511127523 017371 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'IEC_P27-1', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'IEC_P27-1', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IEC_P27-1'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'IEC_P27-1', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x02c7 0xa1 0x2261 0xa2 0x2227 0xa3 0x2228 0xa4 0x2229 0xa5 0x222a 0xa6 0x2282 0xa7 0x2283 0xa8 0x21d0 0xa9 0x21d2 0xaa 0x2234 0xab 0x2235 0xac 0x2208 0xad 0x220b 0xae 0x2286 0xaf 0x2287 0xb0 0x222b 0xb1 0x222e 0xb2 0x221e 0xb3 0x2207 0xb4 0x2202 0xb5 0x223c 0xb6 0x2248 0xb7 0x2243 0xb8 0x2245 0xb9 0x2264 0xba 0x2260 0xbb 0x2265 0xbc 0x2194 0xbd 0x00ac 0xbe 0x2200 0xbf 0x2203 0xc0 0x05d0 0xc1 0x25a1 0xc2 0x2225 0xc3 0x0393 0xc4 0x0394 0xc5 0x22a5 0xc6 0x2220 0xc7 0x221f 0xc8 0x0398 0xc9 0x2329 0xca 0x232a 0xcb 0x039b 0xcc 0x2032 0xcd 0x2033 0xce 0x039e 0xcf 0x2213 0xd0 0x03a0 0xd1 0x00b2 0xd2 0x03a3 0xd3 0x00d7 0xd4 0x00b3 0xd5 0x03a5 0xd6 0x03a6 0xd7 0x00b7 0xd8 0x03a8 0xd9 0x03a9 0xda 0x2205 0xdb 0x21c0 0xdc 0x221a 0xdd 0x0192 0xde 0x221d 0xdf 0x00b1 0xe0 0x00b0 0xe1 0x03b1 0xe2 0x03b2 0xe3 0x03b3 0xe4 0x03b4 0xe5 0x03b5 0xe6 0x03b6 0xe7 0x03b7 0xe8 0x03b8 0xe9 0x03b9 0xea 0x03ba 0xeb 0x03bb 0xec 0x03bc 0xed 0x03bd 0xee 0x03be 0xef 0x2030 0xf0 0x03c0 0xf1 0x03c1 0xf2 0x03c3 0xf3 0x00f7 0xf4 0x03c4 0xf5 0x03c5 0xf6 0x03c6 0xf7 0x03c7 0xf8 0x03c8 0xf9 0x03c9 0xfa 0x2020 0xfb 0x2190 0xfc 0x2191 0xfd 0x2192 0xfe 0x2193 0xff 0x203e libintl-perl-1.26/tests/02inis-8.t000644 000765 000024 00000014376 12511127523 017123 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'INIS-8', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'INIS-8', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'INIS-8'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'INIS-8', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0xfffd 0x3a 0x03b1 0x3b 0x03b2 0x3c 0x03b3 0x3d 0x03b4 0x3e 0x039e 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0xfffd 0x5e 0x2192 0x5f 0x222b 0x60 0x2070 0x61 0x00b9 0x62 0x00b2 0x63 0x00b3 0x64 0x2074 0x65 0x2075 0x66 0x2076 0x67 0x2077 0x68 0x2078 0x69 0x2079 0x6a 0x207a 0x6b 0x207b 0x6c 0x30eb 0x6d 0x0394 0x6e 0x039b 0x6f 0x03a9 0x70 0x2080 0x71 0x2081 0x72 0x2082 0x73 0x2083 0x74 0x2084 0x75 0x2085 0x76 0x2086 0x77 0x2087 0x78 0x2088 0x79 0x2089 0x7a 0x03a3 0x7b 0x03bc 0x7c 0x03bd 0x7d 0x03c9 0x7e 0x03c0 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02inis-cyrillic.t000644 000765 000024 00000014432 12511127523 020557 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'INIS-CYRILLIC', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'INIS-CYRILLIC', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'INIS-CYRILLIC'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'INIS-CYRILLIC', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0xfffd 0x2c 0x221a 0x2e 0xfffd 0x2e 0x2192 0x2f 0x222b 0x30 0x03b1 0x31 0x03b2 0x32 0x03b3 0x33 0x03b4 0x34 0x03a3 0x35 0x03bc 0x36 0x03bd 0x37 0x03c9 0x38 0x03c0 0x39 0x039e 0x3a 0x0394 0x3b 0x039b 0x3c 0x03a9 0x3d 0x042a 0x3e 0x207b 0x3f 0x207a 0x40 0x044e 0x41 0x0430 0x42 0x0431 0x43 0x0446 0x44 0x0434 0x45 0x0435 0x46 0x0444 0x47 0x0433 0x48 0x0445 0x49 0x0438 0x4a 0x0439 0x4b 0x043a 0x4c 0x043b 0x4d 0x043c 0x4e 0x043d 0x4f 0x043e 0x50 0x043f 0x51 0x044f 0x52 0x0440 0x53 0x0441 0x54 0x0442 0x55 0x0443 0x56 0x0436 0x57 0x0432 0x58 0x044c 0x59 0x044b 0x5a 0x0437 0x5b 0x0448 0x5c 0x044d 0x5d 0x0449 0x5e 0x0447 0x5f 0x044a 0x60 0x042e 0x61 0x0410 0x62 0x0411 0x63 0x0426 0x64 0x0414 0x65 0x0415 0x66 0x0424 0x67 0x0413 0x68 0x0425 0x69 0x0418 0x6a 0x0419 0x6b 0x041a 0x6c 0x041b 0x6d 0x041c 0x6e 0x041d 0x6f 0x041e 0x70 0x041f 0x71 0x042f 0x72 0x0420 0x73 0x0421 0x74 0x0422 0x75 0x0423 0x76 0x0416 0x77 0x0412 0x78 0x042c 0x79 0x042b 0x7a 0x0417 0x7b 0x0428 0x7c 0x042d 0x7d 0x0429 0x7e 0x0427 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02inis.t000644 000765 000024 00000014366 12511127523 016755 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'INIS', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'INIS', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'INIS'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'INIS', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x24 0xfffd 0x24 0xfffd 0x24 0xfffd 0x24 0x0024 0x25 0x0025 0x27 0xfffd 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x41 0xfffd 0x41 0xfffd 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5d 0xfffd 0x5d 0x005d 0x61 0xfffd 0x61 0xfffd 0x61 0xfffd 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7c 0xfffd 0x7c 0x007c 0x7f 0xfffd 0x7f 0xfffd 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso-8859-1.t000644 000765 000024 00000014415 12511127523 017351 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-1', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-1', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-1'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-1', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0A 0x000A 0x0B 0x000B 0x0C 0x000C 0x0D 0x000D 0x0E 0x000E 0x0F 0x000F 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1A 0x001A 0x1B 0x001B 0x1C 0x001C 0x1D 0x001D 0x1E 0x001E 0x1F 0x001F 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2A 0x002A 0x2B 0x002B 0x2C 0x002C 0x2D 0x002D 0x2E 0x002E 0x2F 0x002F 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3A 0x003A 0x3B 0x003B 0x3C 0x003C 0x3D 0x003D 0x3E 0x003E 0x3F 0x003F 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4A 0x004A 0x4B 0x004B 0x4C 0x004C 0x4D 0x004D 0x4E 0x004E 0x4F 0x004F 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5A 0x005A 0x5B 0x005B 0x5C 0x005C 0x5D 0x005D 0x5E 0x005E 0x5F 0x005F 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6A 0x006A 0x6B 0x006B 0x6C 0x006C 0x6D 0x006D 0x6E 0x006E 0x6F 0x006F 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7A 0x007A 0x7B 0x007B 0x7C 0x007C 0x7D 0x007D 0x7E 0x007E 0x7F 0x007F 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8A 0x008A 0x8B 0x008B 0x8C 0x008C 0x8D 0x008D 0x8E 0x008E 0x8F 0x008F 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9A 0x009A 0x9B 0x009B 0x9C 0x009C 0x9D 0x009D 0x9E 0x009E 0x9F 0x009F 0xA0 0x00A0 0xA1 0x00A1 0xA2 0x00A2 0xA3 0x00A3 0xA4 0x00A4 0xA5 0x00A5 0xA6 0x00A6 0xA7 0x00A7 0xA8 0x00A8 0xA9 0x00A9 0xAA 0x00AA 0xAB 0x00AB 0xAC 0x00AC 0xAD 0x00AD 0xAE 0x00AE 0xAF 0x00AF 0xB0 0x00B0 0xB1 0x00B1 0xB2 0x00B2 0xB3 0x00B3 0xB4 0x00B4 0xB5 0x00B5 0xB6 0x00B6 0xB7 0x00B7 0xB8 0x00B8 0xB9 0x00B9 0xBA 0x00BA 0xBB 0x00BB 0xBC 0x00BC 0xBD 0x00BD 0xBE 0x00BE 0xBF 0x00BF 0xC0 0x00C0 0xC1 0x00C1 0xC2 0x00C2 0xC3 0x00C3 0xC4 0x00C4 0xC5 0x00C5 0xC6 0x00C6 0xC7 0x00C7 0xC8 0x00C8 0xC9 0x00C9 0xCA 0x00CA 0xCB 0x00CB 0xCC 0x00CC 0xCD 0x00CD 0xCE 0x00CE 0xCF 0x00CF 0xD0 0x00D0 0xD1 0x00D1 0xD2 0x00D2 0xD3 0x00D3 0xD4 0x00D4 0xD5 0x00D5 0xD6 0x00D6 0xD7 0x00D7 0xD8 0x00D8 0xD9 0x00D9 0xDA 0x00DA 0xDB 0x00DB 0xDC 0x00DC 0xDD 0x00DD 0xDE 0x00DE 0xDF 0x00DF 0xE0 0x00E0 0xE1 0x00E1 0xE2 0x00E2 0xE3 0x00E3 0xE4 0x00E4 0xE5 0x00E5 0xE6 0x00E6 0xE7 0x00E7 0xE8 0x00E8 0xE9 0x00E9 0xEA 0x00EA 0xEB 0x00EB 0xEC 0x00EC 0xED 0x00ED 0xEE 0x00EE 0xEF 0x00EF 0xF0 0x00F0 0xF1 0x00F1 0xF2 0x00F2 0xF3 0x00F3 0xF4 0x00F4 0xF5 0x00F5 0xF6 0x00F6 0xF7 0x00F7 0xF8 0x00F8 0xF9 0x00F9 0xFA 0x00FA 0xFB 0x00FB 0xFC 0x00FC 0xFD 0x00FD 0xFE 0x00FE 0xFF 0x00FF libintl-perl-1.26/tests/02iso-8859-10.t000644 000765 000024 00000014422 12511127523 017427 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-10', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-10', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-10'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-10', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0104 0xa2 0x0112 0xa3 0x0122 0xa4 0x012a 0xa5 0x0128 0xa6 0x0136 0xa7 0x00a7 0xa8 0x013b 0xa9 0x0110 0xaa 0x0160 0xab 0x0166 0xac 0x017d 0xad 0x00ad 0xae 0x016a 0xaf 0x014a 0xb0 0x00b0 0xb1 0x0105 0xb2 0x0113 0xb3 0x0123 0xb4 0x012b 0xb5 0x0129 0xb6 0x0137 0xb7 0x00b7 0xb8 0x013c 0xb9 0x0111 0xba 0x0161 0xbb 0x0167 0xbc 0x017e 0xbd 0x2015 0xbe 0x016b 0xbf 0x014b 0xc0 0x0100 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x012e 0xc8 0x010c 0xc9 0x00c9 0xca 0x0118 0xcb 0x00cb 0xcc 0x0116 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x00d0 0xd1 0x0145 0xd2 0x014c 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x0168 0xd8 0x00d8 0xd9 0x0172 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x00dd 0xde 0x00de 0xdf 0x00df 0xe0 0x0101 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x012f 0xe8 0x010d 0xe9 0x00e9 0xea 0x0119 0xeb 0x00eb 0xec 0x0117 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x0146 0xf2 0x014d 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x0169 0xf8 0x00f8 0xf9 0x0173 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x0138 libintl-perl-1.26/tests/02iso-8859-11.t000644 000765 000024 00000014130 12727470164 017437 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { eval { require Encode; if ($Encode::VERSION =~ /^1\./ && $Encode::VERSION < "1.78") { print "1..0 # Skip: Encode $Encode::VERSION has a " . "bug, please upgrade!\n"; exit 0; } }; plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-11', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-11', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-11'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-11', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0xa0 0x00a0 0xa1 0x0e01 0xa2 0x0e02 0xa3 0x0e03 0xa4 0x0e04 0xa5 0x0e05 0xa6 0x0e06 0xa7 0x0e07 0xa8 0x0e08 0xa9 0x0e09 0xaa 0x0e0a 0xab 0x0e0b 0xac 0x0e0c 0xad 0x0e0d 0xae 0x0e0e 0xaf 0x0e0f 0xb0 0x0e10 0xb1 0x0e11 0xb2 0x0e12 0xb3 0x0e13 0xb4 0x0e14 0xb5 0x0e15 0xb6 0x0e16 0xb7 0x0e17 0xb8 0x0e18 0xb9 0x0e19 0xba 0x0e1a 0xbb 0x0e1b 0xbc 0x0e1c 0xbd 0x0e1d 0xbe 0x0e1e 0xbf 0x0e1f 0xc0 0x0e20 0xc1 0x0e21 0xc2 0x0e22 0xc3 0x0e23 0xc4 0x0e24 0xc5 0x0e25 0xc6 0x0e26 0xc7 0x0e27 0xc8 0x0e28 0xc9 0x0e29 0xca 0x0e2a 0xcb 0x0e2b 0xcc 0x0e2c 0xcd 0x0e2d 0xce 0x0e2e 0xcf 0x0e2f 0xd0 0x0e30 0xd1 0x0e31 0xd2 0x0e32 0xd3 0x0e33 0xd4 0x0e34 0xd5 0x0e35 0xd6 0x0e36 0xd7 0x0e37 0xd8 0x0e38 0xd9 0x0e39 0xda 0x0e3a 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0x0e3f 0xe0 0x0e40 0xe1 0x0e41 0xe2 0x0e42 0xe3 0x0e43 0xe4 0x0e44 0xe5 0x0e45 0xe6 0x0e46 0xe7 0x0e47 0xe8 0x0e48 0xe9 0x0e49 0xea 0x0e4a 0xeb 0x0e4b 0xec 0x0e4c 0xed 0x0e4d 0xee 0x0e4e 0xef 0x0e4f 0xf0 0x0e50 0xf1 0x0e51 0xf2 0x0e52 0xf3 0x0e53 0xf4 0x0e54 0xf5 0x0e55 0xf6 0x0e56 0xf7 0x0e57 0xf8 0x0e58 0xf9 0x0e59 0xfa 0x0e5a 0xfb 0x0e5b 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso-8859-13.t000644 000765 000024 00000014422 12511127523 017432 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-13', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-13', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-13'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-13', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x201d 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x201e 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00d8 0xa9 0x00a9 0xaa 0x0156 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00c6 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x201c 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00f8 0xb9 0x00b9 0xba 0x0157 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00e6 0xc0 0x0104 0xc1 0x012e 0xc2 0x0100 0xc3 0x0106 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x0118 0xc7 0x0112 0xc8 0x010c 0xc9 0x00c9 0xca 0x0179 0xcb 0x0116 0xcc 0x0122 0xcd 0x0136 0xce 0x012a 0xcf 0x013b 0xd0 0x0160 0xd1 0x0143 0xd2 0x0145 0xd3 0x00d3 0xd4 0x014c 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x0172 0xd9 0x0141 0xda 0x015a 0xdb 0x016a 0xdc 0x00dc 0xdd 0x017b 0xde 0x017d 0xdf 0x00df 0xe0 0x0105 0xe1 0x012f 0xe2 0x0101 0xe3 0x0107 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x0119 0xe7 0x0113 0xe8 0x010d 0xe9 0x00e9 0xea 0x017a 0xeb 0x0117 0xec 0x0123 0xed 0x0137 0xee 0x012b 0xef 0x013c 0xf0 0x0161 0xf1 0x0144 0xf2 0x0146 0xf3 0x00f3 0xf4 0x014d 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x0173 0xf9 0x0142 0xfa 0x015b 0xfb 0x016b 0xfc 0x00fc 0xfd 0x017c 0xfe 0x017e 0xff 0x2019 libintl-perl-1.26/tests/02iso-8859-14.t000644 000765 000024 00000014422 12511127523 017433 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-14', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-14', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-14'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-14', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x1e02 0xa2 0x1e03 0xa3 0x00a3 0xa4 0x010a 0xa5 0x010b 0xa6 0x1e0a 0xa7 0x00a7 0xa8 0x1e80 0xa9 0x00a9 0xaa 0x1e82 0xab 0x1e0b 0xac 0x1ef2 0xad 0x00ad 0xae 0x00ae 0xaf 0x0178 0xb0 0x1e1e 0xb1 0x1e1f 0xb2 0x0120 0xb3 0x0121 0xb4 0x1e40 0xb5 0x1e41 0xb6 0x00b6 0xb7 0x1e56 0xb8 0x1e81 0xb9 0x1e57 0xba 0x1e83 0xbb 0x1e60 0xbc 0x1ef3 0xbd 0x1e84 0xbe 0x1e85 0xbf 0x1e61 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x0174 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x1e6a 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x00dd 0xde 0x0176 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x0175 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x1e6b 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x0177 0xff 0x00ff libintl-perl-1.26/tests/02iso-8859-15.t000644 000765 000024 00000014422 12511127523 017434 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-15', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-15', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-15'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-15', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x20ac 0xa5 0x00a5 0xa6 0x0160 0xa7 0x00a7 0xa8 0x0161 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x017d 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x017e 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x0152 0xbd 0x0153 0xbe 0x0178 0xbf 0x00bf 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x00d0 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x00dd 0xde 0x00de 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x00ff libintl-perl-1.26/tests/02iso-8859-16.t000644 000765 000024 00000014422 12511127523 017435 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-16', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-16', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-16'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-16', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0104 0xa2 0x0105 0xa3 0x0141 0xa4 0x20ac 0xa5 0x201e 0xa6 0x0160 0xa7 0x00a7 0xa8 0x0161 0xa9 0x00a9 0xaa 0x0218 0xab 0x00ab 0xac 0x0179 0xad 0x00ad 0xae 0x017a 0xaf 0x017b 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x010c 0xb3 0x0142 0xb4 0x017d 0xb5 0x201d 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x017e 0xb9 0x010d 0xba 0x0219 0xbb 0x00bb 0xbc 0x0152 0xbd 0x0153 0xbe 0x0178 0xbf 0x017c 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x0102 0xc4 0x00c4 0xc5 0x0106 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x0110 0xd1 0x0143 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x0150 0xd6 0x00d6 0xd7 0x015a 0xd8 0x0170 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x0118 0xde 0x021a 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x0103 0xe4 0x00e4 0xe5 0x0107 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x0111 0xf1 0x0144 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x0151 0xf6 0x00f6 0xf7 0x015b 0xf8 0x0171 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x0119 0xfe 0x021b 0xff 0x00ff libintl-perl-1.26/tests/02iso-8859-2.t000644 000765 000024 00000014416 12511127523 017353 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-2', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-2', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-2'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-2', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0104 0xa2 0x02d8 0xa3 0x0141 0xa4 0x00a4 0xa5 0x013d 0xa6 0x015a 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x0160 0xaa 0x015e 0xab 0x0164 0xac 0x0179 0xad 0x00ad 0xae 0x017d 0xaf 0x017b 0xb0 0x00b0 0xb1 0x0105 0xb2 0x02db 0xb3 0x0142 0xb4 0x00b4 0xb5 0x013e 0xb6 0x015b 0xb7 0x02c7 0xb8 0x00b8 0xb9 0x0161 0xba 0x015f 0xbb 0x0165 0xbc 0x017a 0xbd 0x02dd 0xbe 0x017e 0xbf 0x017c 0xc0 0x0154 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x0102 0xc4 0x00c4 0xc5 0x0139 0xc6 0x0106 0xc7 0x00c7 0xc8 0x010c 0xc9 0x00c9 0xca 0x0118 0xcb 0x00cb 0xcc 0x011a 0xcd 0x00cd 0xce 0x00ce 0xcf 0x010e 0xd0 0x0110 0xd1 0x0143 0xd2 0x0147 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x0150 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x0158 0xd9 0x016e 0xda 0x00da 0xdb 0x0170 0xdc 0x00dc 0xdd 0x00dd 0xde 0x0162 0xdf 0x00df 0xe0 0x0155 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x0103 0xe4 0x00e4 0xe5 0x013a 0xe6 0x0107 0xe7 0x00e7 0xe8 0x010d 0xe9 0x00e9 0xea 0x0119 0xeb 0x00eb 0xec 0x011b 0xed 0x00ed 0xee 0x00ee 0xef 0x010f 0xf0 0x0111 0xf1 0x0144 0xf2 0x0148 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x0151 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x0159 0xf9 0x016f 0xfa 0x00fa 0xfb 0x0171 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x0163 0xff 0x02d9 libintl-perl-1.26/tests/02iso-8859-3.t000644 000765 000024 00000014416 12511127523 017354 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-3', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-3', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-3'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-3', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0126 0xa2 0x02d8 0xa3 0x00a3 0xa4 0x00a4 0xa6 0xfffd 0xa6 0x0124 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x0130 0xaa 0x015e 0xab 0x011e 0xac 0x0134 0xad 0x00ad 0xaf 0xfffd 0xaf 0x017b 0xb0 0x00b0 0xb1 0x0127 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x0125 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x0131 0xba 0x015f 0xbb 0x011f 0xbc 0x0135 0xbd 0x00bd 0xbf 0xfffd 0xbf 0x017c 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc4 0xfffd 0xc4 0x00c4 0xc5 0x010a 0xc6 0x0108 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd1 0xfffd 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x0120 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x011c 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x016c 0xde 0x015c 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe4 0xfffd 0xe4 0x00e4 0xe5 0x010b 0xe6 0x0109 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf1 0xfffd 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x0121 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x011d 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x016d 0xfe 0x015d 0xff 0x02d9 libintl-perl-1.26/tests/02iso-8859-4.t000644 000765 000024 00000014416 12511127523 017355 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-4', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-4', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-4'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-4', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0104 0xa2 0x0138 0xa3 0x0156 0xa4 0x00a4 0xa5 0x0128 0xa6 0x013b 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x0160 0xaa 0x0112 0xab 0x0122 0xac 0x0166 0xad 0x00ad 0xae 0x017d 0xaf 0x00af 0xb0 0x00b0 0xb1 0x0105 0xb2 0x02db 0xb3 0x0157 0xb4 0x00b4 0xb5 0x0129 0xb6 0x013c 0xb7 0x02c7 0xb8 0x00b8 0xb9 0x0161 0xba 0x0113 0xbb 0x0123 0xbc 0x0167 0xbd 0x014a 0xbe 0x017e 0xbf 0x014b 0xc0 0x0100 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x012e 0xc8 0x010c 0xc9 0x00c9 0xca 0x0118 0xcb 0x00cb 0xcc 0x0116 0xcd 0x00cd 0xce 0x00ce 0xcf 0x012a 0xd0 0x0110 0xd1 0x0145 0xd2 0x014c 0xd3 0x0136 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x0172 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x0168 0xde 0x016a 0xdf 0x00df 0xe0 0x0101 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x012f 0xe8 0x010d 0xe9 0x00e9 0xea 0x0119 0xeb 0x00eb 0xec 0x0117 0xed 0x00ed 0xee 0x00ee 0xef 0x012b 0xf0 0x0111 0xf1 0x0146 0xf2 0x014d 0xf3 0x0137 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x0173 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x0169 0xfe 0x016b 0xff 0x02d9 libintl-perl-1.26/tests/02iso-8859-5.t000644 000765 000024 00000014416 12511127523 017356 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-5', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-5', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-5'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-5', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x0401 0xa2 0x0402 0xa3 0x0403 0xa4 0x0404 0xa5 0x0405 0xa6 0x0406 0xa7 0x0407 0xa8 0x0408 0xa9 0x0409 0xaa 0x040a 0xab 0x040b 0xac 0x040c 0xad 0x00ad 0xae 0x040e 0xaf 0x040f 0xb0 0x0410 0xb1 0x0411 0xb2 0x0412 0xb3 0x0413 0xb4 0x0414 0xb5 0x0415 0xb6 0x0416 0xb7 0x0417 0xb8 0x0418 0xb9 0x0419 0xba 0x041a 0xbb 0x041b 0xbc 0x041c 0xbd 0x041d 0xbe 0x041e 0xbf 0x041f 0xc0 0x0420 0xc1 0x0421 0xc2 0x0422 0xc3 0x0423 0xc4 0x0424 0xc5 0x0425 0xc6 0x0426 0xc7 0x0427 0xc8 0x0428 0xc9 0x0429 0xca 0x042a 0xcb 0x042b 0xcc 0x042c 0xcd 0x042d 0xce 0x042e 0xcf 0x042f 0xd0 0x0430 0xd1 0x0431 0xd2 0x0432 0xd3 0x0433 0xd4 0x0434 0xd5 0x0435 0xd6 0x0436 0xd7 0x0437 0xd8 0x0438 0xd9 0x0439 0xda 0x043a 0xdb 0x043b 0xdc 0x043c 0xdd 0x043d 0xde 0x043e 0xdf 0x043f 0xe0 0x0440 0xe1 0x0441 0xe2 0x0442 0xe3 0x0443 0xe4 0x0444 0xe5 0x0445 0xe6 0x0446 0xe7 0x0447 0xe8 0x0448 0xe9 0x0449 0xea 0x044a 0xeb 0x044b 0xec 0x044c 0xed 0x044d 0xee 0x044e 0xef 0x044f 0xf0 0x2116 0xf1 0x0451 0xf2 0x0452 0xf3 0x0453 0xf4 0x0454 0xf5 0x0455 0xf6 0x0456 0xf7 0x0457 0xf8 0x0458 0xf9 0x0459 0xfa 0x045a 0xfb 0x045b 0xfc 0x045c 0xfd 0x00a7 0xfe 0x045e 0xff 0x045f libintl-perl-1.26/tests/02iso-8859-6.t000644 000765 000024 00000014416 12511127523 017357 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-6', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-6', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-6'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-6', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa4 0xfffd 0xa4 0xfffd 0xa4 0xfffd 0xa4 0x00a4 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0x060c 0xad 0x00ad 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0xfffd 0xbb 0x061b 0xbf 0xfffd 0xbf 0xfffd 0xbf 0xfffd 0xbf 0x061f 0xc1 0xfffd 0xc1 0x0621 0xc2 0x0622 0xc3 0x0623 0xc4 0x0624 0xc5 0x0625 0xc6 0x0626 0xc7 0x0627 0xc8 0x0628 0xc9 0x0629 0xca 0x062a 0xcb 0x062b 0xcc 0x062c 0xcd 0x062d 0xce 0x062e 0xcf 0x062f 0xd0 0x0630 0xd1 0x0631 0xd2 0x0632 0xd3 0x0633 0xd4 0x0634 0xd5 0x0635 0xd6 0x0636 0xd7 0x0637 0xd8 0x0638 0xd9 0x0639 0xda 0x063a 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x0640 0xe1 0x0641 0xe2 0x0642 0xe3 0x0643 0xe4 0x0644 0xe5 0x0645 0xe6 0x0646 0xe7 0x0647 0xe8 0x0648 0xe9 0x0649 0xea 0x064a 0xeb 0x064b 0xec 0x064c 0xed 0x064d 0xee 0x064e 0xef 0x064f 0xf0 0x0650 0xf1 0x0651 0xf2 0x0652 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso-8859-7.t000644 000765 000024 00000014416 12511127523 017360 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-7', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-7', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-7'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-7', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x2018 0xa2 0x2019 0xa3 0x00a3 0xa6 0xfffd 0xa6 0xfffd 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xab 0xfffd 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xaf 0xfffd 0xaf 0x2015 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x0384 0xb5 0x0385 0xb6 0x0386 0xb7 0x00b7 0xb8 0x0388 0xb9 0x0389 0xba 0x038a 0xbb 0x00bb 0xbc 0x038c 0xbd 0x00bd 0xbe 0x038e 0xbf 0x038f 0xc0 0x0390 0xc1 0x0391 0xc2 0x0392 0xc3 0x0393 0xc4 0x0394 0xc5 0x0395 0xc6 0x0396 0xc7 0x0397 0xc8 0x0398 0xc9 0x0399 0xca 0x039a 0xcb 0x039b 0xcc 0x039c 0xcd 0x039d 0xce 0x039e 0xcf 0x039f 0xd0 0x03a0 0xd1 0x03a1 0xd3 0xfffd 0xd3 0x03a3 0xd4 0x03a4 0xd5 0x03a5 0xd6 0x03a6 0xd7 0x03a7 0xd8 0x03a8 0xd9 0x03a9 0xda 0x03aa 0xdb 0x03ab 0xdc 0x03ac 0xdd 0x03ad 0xde 0x03ae 0xdf 0x03af 0xe0 0x03b0 0xe1 0x03b1 0xe2 0x03b2 0xe3 0x03b3 0xe4 0x03b4 0xe5 0x03b5 0xe6 0x03b6 0xe7 0x03b7 0xe8 0x03b8 0xe9 0x03b9 0xea 0x03ba 0xeb 0x03bb 0xec 0x03bc 0xed 0x03bd 0xee 0x03be 0xef 0x03bf 0xf0 0x03c0 0xf1 0x03c1 0xf2 0x03c2 0xf3 0x03c3 0xf4 0x03c4 0xf5 0x03c5 0xf6 0x03c6 0xf7 0x03c7 0xf8 0x03c8 0xf9 0x03c9 0xfa 0x03ca 0xfb 0x03cb 0xfc 0x03cc 0xfd 0x03cd 0xfe 0x03ce 0xff 0xfffd libintl-perl-1.26/tests/02iso-8859-8.t000644 000765 000024 00000014416 12511127523 017361 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-8', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-8', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-8'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-8', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa2 0xfffd 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00d7 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00f7 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0xfffd 0xdf 0x2017 0xe0 0x05d0 0xe1 0x05d1 0xe2 0x05d2 0xe3 0x05d3 0xe4 0x05d4 0xe5 0x05d5 0xe6 0x05d6 0xe7 0x05d7 0xe8 0x05d8 0xe9 0x05d9 0xea 0x05da 0xeb 0x05db 0xec 0x05dc 0xed 0x05dd 0xee 0x05de 0xef 0x05df 0xf0 0x05e0 0xf1 0x05e1 0xf2 0x05e2 0xf3 0x05e3 0xf4 0x05e4 0xf5 0x05e5 0xf6 0x05e6 0xf7 0x05e7 0xf8 0x05e8 0xf9 0x05e9 0xfa 0x05ea 0xfd 0xfffd 0xfd 0xfffd 0xfd 0x200e 0xfe 0x200f 0xff 0xfffd libintl-perl-1.26/tests/02iso-8859-9.t000644 000765 000024 00000014416 12511127523 017362 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO-8859-9', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO-8859-9', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-9'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-9', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xa0 0x00a0 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x00a5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x00aa 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x00af 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x00b3 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x00b8 0xb9 0x00b9 0xba 0x00ba 0xbb 0x00bb 0xbc 0x00bc 0xbd 0x00bd 0xbe 0x00be 0xbf 0x00bf 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x011e 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x0130 0xde 0x015e 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x011f 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x0131 0xfe 0x015f 0xff 0x00ff libintl-perl-1.26/tests/02iso_10367-box.t000644 000765 000024 00000014432 12511127523 020125 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO_10367-BOX', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO_10367-BOX', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_10367-BOX'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_10367-BOX', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0080 0x81 0x0081 0x82 0x0082 0x83 0x0083 0x84 0x0084 0x85 0x0085 0x86 0x0086 0x87 0x0087 0x88 0x0088 0x89 0x0089 0x8a 0x008a 0x8b 0x008b 0x8c 0x008c 0x8d 0x008d 0x8e 0x008e 0x8f 0x008f 0x90 0x0090 0x91 0x0091 0x92 0x0092 0x93 0x0093 0x94 0x0094 0x95 0x0095 0x96 0x0096 0x97 0x0097 0x98 0x0098 0x99 0x0099 0x9a 0x009a 0x9b 0x009b 0x9c 0x009c 0x9d 0x009d 0x9e 0x009e 0x9f 0x009f 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x2551 0xc1 0x2550 0xc2 0x2554 0xc3 0x2557 0xc4 0x255a 0xc5 0x255d 0xc6 0x2560 0xc7 0x2563 0xc8 0x2566 0xc9 0x2569 0xca 0x256c 0xcb 0xe019 0xcc 0x2584 0xcd 0x2588 0xce 0x25aa 0xd0 0xfffd 0xd0 0x2502 0xd1 0x2500 0xd2 0x250c 0xd3 0x2510 0xd4 0x2514 0xd5 0x2518 0xd6 0x251c 0xd7 0x2524 0xd8 0x252c 0xd9 0x2534 0xda 0x253c 0xdb 0x2591 0xdc 0x2592 0xdd 0x2593 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso_2033-1983.t000644 000765 000024 00000014432 12511127523 017650 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO_2033-1983', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO_2033-1983', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_2033-1983'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_2033-1983', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x2446 0x3b 0x2447 0x3c 0x2448 0x3d 0x2449 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso_5427-ext.t000644 000765 000024 00000014426 12511127523 020061 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO_5427-EXT', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO_5427-EXT', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_5427-EXT'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_5427-EXT', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0xfffd 0x40 0x0491 0x41 0x0452 0x42 0x0453 0x43 0x0454 0x44 0x0451 0x45 0x0455 0x46 0x0456 0x47 0x0457 0x48 0x0458 0x49 0x0459 0x4a 0x045a 0x4b 0x045b 0x4c 0x045c 0x4d 0x045e 0x4e 0x045f 0x50 0xfffd 0x50 0x0463 0x51 0x0473 0x52 0x0475 0x53 0x046b 0x5b 0xfffd 0x5b 0xfffd 0x5b 0xfffd 0x5b 0xfffd 0x5b 0xfffd 0x5b 0xfffd 0x5b 0xfffd 0x5b 0x005b 0x5d 0xfffd 0x5d 0x005d 0x5f 0xfffd 0x5f 0x005f 0x60 0x0490 0x61 0x0402 0x62 0x0403 0x63 0x0404 0x64 0x0401 0x65 0x0405 0x66 0x0406 0x67 0x0407 0x68 0x0408 0x69 0x0409 0x6a 0x040a 0x6b 0x040b 0x6c 0x040c 0x6d 0x040e 0x6e 0x040f 0x6f 0x042a 0x70 0x0462 0x71 0x0472 0x72 0x0474 0x73 0x046a 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0xfffd 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso_5427.t000644 000765 000024 00000014406 12511127523 017261 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO_5427', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO_5427', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_5427'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_5427', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x00a4 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x044e 0x41 0x0430 0x42 0x0431 0x43 0x0446 0x44 0x0434 0x45 0x0435 0x46 0x0444 0x47 0x0433 0x48 0x0445 0x49 0x0438 0x4a 0x0439 0x4b 0x043a 0x4c 0x043b 0x4d 0x043c 0x4e 0x043d 0x4f 0x043e 0x50 0x043f 0x51 0x044f 0x52 0x0440 0x53 0x0441 0x54 0x0442 0x55 0x0443 0x56 0x0436 0x57 0x0432 0x58 0x044c 0x59 0x044b 0x5a 0x0437 0x5b 0x0448 0x5c 0x044d 0x5d 0x0449 0x5e 0x0447 0x5f 0x044a 0x60 0x042e 0x61 0x0410 0x62 0x0411 0x63 0x0426 0x64 0x0414 0x65 0x0415 0x66 0x0424 0x67 0x0413 0x68 0x0425 0x69 0x0418 0x6a 0x0419 0x6b 0x041a 0x6c 0x041b 0x6d 0x041c 0x6e 0x041d 0x6f 0x041e 0x70 0x041f 0x71 0x042f 0x72 0x0420 0x73 0x0421 0x74 0x0422 0x75 0x0423 0x76 0x0416 0x77 0x0412 0x78 0x042c 0x79 0x042b 0x7a 0x0417 0x7b 0x0428 0x7c 0x042d 0x7d 0x0429 0x7e 0x0427 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02iso_5428.t000644 000765 000024 00000014406 12511127523 017262 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'ISO_5428', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ISO_5428', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_5428'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO_5428', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0xe002 0x22 0xe003 0x23 0xe009 0x24 0xe005 0x25 0xe012 0x26 0xe013 0x27 0xe014 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0xfffd 0x30 0x00ab 0x31 0x00bb 0x32 0x201d 0x33 0x201c 0x34 0x0374 0x35 0x0375 0x3b 0xfffd 0x3b 0xfffd 0x3b 0xfffd 0x3b 0xfffd 0x3b 0xfffd 0x3b 0x00b7 0x3f 0xfffd 0x3f 0xfffd 0x3f 0xfffd 0x3f 0x003b 0x41 0xfffd 0x41 0x0391 0x42 0x0392 0x44 0xfffd 0x44 0x0393 0x45 0x0394 0x46 0x0395 0x47 0x03da 0x48 0x03dc 0x49 0x0396 0x4a 0x0397 0x4b 0x0398 0x4c 0x0399 0x4d 0x039a 0x4e 0x039b 0x4f 0x039c 0x50 0x039d 0x51 0x039e 0x52 0x039f 0x53 0x03a0 0x54 0x03de 0x55 0x03a1 0x56 0x03a3 0x58 0xfffd 0x58 0x03a4 0x59 0x03a5 0x5a 0x03a6 0x5b 0x03a7 0x5c 0x03a8 0x5d 0x03a9 0x5e 0x03e0 0x61 0xfffd 0x61 0xfffd 0x61 0x03b1 0x62 0x03b2 0x63 0x03d0 0x64 0x03b3 0x65 0x03b4 0x66 0x03b5 0x67 0xe01a 0x68 0xe01b 0x69 0x03b6 0x6a 0x03b7 0x6b 0x03b8 0x6c 0x03b9 0x6d 0x03ba 0x6e 0x03bb 0x6f 0x03bc 0x70 0x03bd 0x71 0x03be 0x72 0x03bf 0x73 0x03c0 0x74 0xe01c 0x75 0x03c1 0x76 0x03c3 0x77 0x03c2 0x78 0x03c4 0x79 0x03c5 0x7a 0x03c6 0x7b 0x03c7 0x7c 0x03c8 0x7d 0x03c9 0x7e 0xe01d 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02koi-8.t000644 000765 000024 00000014372 12511127523 016737 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'KOI-8', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'KOI-8', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI-8'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI-8', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0xfffd 0xc0 0x044e 0xc1 0x0430 0xc2 0x0431 0xc3 0x0446 0xc4 0x0434 0xc5 0x0435 0xc6 0x0444 0xc7 0x0433 0xc8 0x0445 0xc9 0x0438 0xca 0x0439 0xcb 0x043a 0xcc 0x043b 0xcd 0x043c 0xce 0x043d 0xcf 0x043e 0xd0 0x043f 0xd1 0x044f 0xd2 0x0440 0xd3 0x0441 0xd4 0x0442 0xd5 0x0443 0xd6 0x0436 0xd7 0x0432 0xd8 0x044c 0xd9 0x044b 0xda 0x0437 0xdb 0x0448 0xdc 0x044d 0xdd 0x0449 0xde 0x0447 0xdf 0x044a 0xe0 0x042e 0xe1 0x0410 0xe2 0x0411 0xe3 0x0426 0xe4 0x0414 0xe5 0x0415 0xe6 0x0424 0xe7 0x0413 0xe8 0x0425 0xe9 0x0418 0xea 0x0419 0xeb 0x041a 0xec 0x041b 0xed 0x041c 0xee 0x041d 0xef 0x041e 0xf0 0x041f 0xf1 0x042f 0xf2 0x0420 0xf3 0x0421 0xf4 0x0422 0xf5 0x0423 0xf6 0x0416 0xf7 0x0412 0xf8 0x042c 0xf9 0x042b 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0xfffd libintl-perl-1.26/tests/02koi8-r.t000644 000765 000024 00000014376 12511127523 017125 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'KOI8-R', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'KOI8-R', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-R'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-R', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x2500 0x81 0x2502 0x82 0x250c 0x83 0x2510 0x84 0x2514 0x85 0x2518 0x86 0x251c 0x87 0x2524 0x88 0x252c 0x89 0x2534 0x8a 0x253c 0x8b 0x2580 0x8c 0x2584 0x8d 0x2588 0x8e 0x258c 0x8f 0x2590 0x90 0x2591 0x91 0x2592 0x92 0x2593 0x93 0x2320 0x94 0x25a0 0x95 0x2219 0x96 0x221a 0x97 0x2248 0x98 0x2264 0x99 0x2265 0x9a 0x00a0 0x9b 0x2321 0x9c 0x00b0 0x9d 0x00b2 0x9e 0x00b7 0x9f 0x00f7 0xa0 0x2550 0xa1 0x2551 0xa2 0x2552 0xa3 0x0451 0xa4 0x2553 0xa5 0x2554 0xa6 0x2555 0xa7 0x2556 0xa8 0x2557 0xa9 0x2558 0xaa 0x2559 0xab 0x255a 0xac 0x255b 0xad 0x255c 0xae 0x255d 0xaf 0x255e 0xb0 0x255f 0xb1 0x2560 0xb2 0x2561 0xb3 0x0401 0xb4 0x2562 0xb5 0x2563 0xb6 0x2564 0xb7 0x2565 0xb8 0x2566 0xb9 0x2567 0xba 0x2568 0xbb 0x2569 0xbc 0x256a 0xbd 0x256b 0xbe 0x256c 0xbf 0x00a9 0xc0 0x044e 0xc1 0x0430 0xc2 0x0431 0xc3 0x0446 0xc4 0x0434 0xc5 0x0435 0xc6 0x0444 0xc7 0x0433 0xc8 0x0445 0xc9 0x0438 0xca 0x0439 0xcb 0x043a 0xcc 0x043b 0xcd 0x043c 0xce 0x043d 0xcf 0x043e 0xd0 0x043f 0xd1 0x044f 0xd2 0x0440 0xd3 0x0441 0xd4 0x0442 0xd5 0x0443 0xd6 0x0436 0xd7 0x0432 0xd8 0x044c 0xd9 0x044b 0xda 0x0437 0xdb 0x0448 0xdc 0x044d 0xdd 0x0449 0xde 0x0447 0xdf 0x044a 0xe0 0x042e 0xe1 0x0410 0xe2 0x0411 0xe3 0x0426 0xe4 0x0414 0xe5 0x0415 0xe6 0x0424 0xe7 0x0413 0xe8 0x0425 0xe9 0x0418 0xea 0x0419 0xeb 0x041a 0xec 0x041b 0xed 0x041c 0xee 0x041d 0xef 0x041e 0xf0 0x041f 0xf1 0x042f 0xf2 0x0420 0xf3 0x0421 0xf4 0x0422 0xf5 0x0423 0xf6 0x0416 0xf7 0x0412 0xf8 0x042c 0xf9 0x042b 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0x042a libintl-perl-1.26/tests/02koi8-ru.t000644 000765 000024 00000014402 12511127523 017300 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'KOI8-RU', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'KOI8-RU', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-RU'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-RU', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x2500 0x81 0x2502 0x82 0x250c 0x83 0x2510 0x84 0x2514 0x85 0x2518 0x86 0x251c 0x87 0x2524 0x88 0x252c 0x89 0x2534 0x8a 0x253c 0x8b 0x2580 0x8c 0x2584 0x8d 0x2588 0x8e 0x258c 0x8f 0x2590 0x90 0x2591 0x91 0x2592 0x92 0x2593 0x93 0x2320 0x94 0x25a0 0x95 0x2219 0x96 0x221a 0x97 0x2248 0x98 0x2264 0x99 0x2265 0x9a 0x00a0 0x9b 0x2321 0x9c 0x00b0 0x9d 0x00b2 0x9e 0x00b7 0x9f 0x00f7 0xa0 0x2550 0xa1 0x2551 0xa2 0x2552 0xa3 0x0451 0xa4 0x0454 0xa5 0x2554 0xa6 0x0456 0xa7 0x0457 0xa8 0x2557 0xa9 0x2558 0xaa 0x2559 0xab 0x255a 0xac 0x255b 0xad 0x0491 0xae 0x045e 0xaf 0x255e 0xb0 0x255f 0xb1 0x2560 0xb2 0x2561 0xb3 0x0401 0xb4 0x0404 0xb5 0x2563 0xb6 0x0406 0xb7 0x0407 0xb8 0x2566 0xb9 0x2567 0xba 0x2568 0xbb 0x2569 0xbc 0x256a 0xbd 0x0490 0xbe 0x040e 0xbf 0x00a9 0xc0 0x044e 0xc1 0x0430 0xc2 0x0431 0xc3 0x0446 0xc4 0x0434 0xc5 0x0435 0xc6 0x0444 0xc7 0x0433 0xc8 0x0445 0xc9 0x0438 0xca 0x0439 0xcb 0x043a 0xcc 0x043b 0xcd 0x043c 0xce 0x043d 0xcf 0x043e 0xd0 0x043f 0xd1 0x044f 0xd2 0x0440 0xd3 0x0441 0xd4 0x0442 0xd5 0x0443 0xd6 0x0436 0xd7 0x0432 0xd8 0x044c 0xd9 0x044b 0xda 0x0437 0xdb 0x0448 0xdc 0x044d 0xdd 0x0449 0xde 0x0447 0xdf 0x044a 0xe0 0x042e 0xe1 0x0410 0xe2 0x0411 0xe3 0x0426 0xe4 0x0414 0xe5 0x0415 0xe6 0x0424 0xe7 0x0413 0xe8 0x0425 0xe9 0x0418 0xea 0x0419 0xeb 0x041a 0xec 0x041b 0xed 0x041c 0xee 0x041d 0xef 0x041e 0xf0 0x041f 0xf1 0x042f 0xf2 0x0420 0xf3 0x0421 0xf4 0x0422 0xf5 0x0423 0xf6 0x0416 0xf7 0x0412 0xf8 0x042c 0xf9 0x042b 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0x042a libintl-perl-1.26/tests/02koi8-t.t000644 000765 000024 00000014376 12511127523 017127 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'KOI8-T', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'KOI8-T', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-T'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-T', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x049b 0x81 0x0493 0x82 0x201a 0x83 0x0492 0x84 0x201e 0x85 0x2026 0x86 0x2020 0x87 0x2021 0x89 0xfffd 0x89 0x2030 0x8a 0x04b3 0x8b 0x2039 0x8c 0x04b2 0x8d 0x04b7 0x8e 0x04b6 0x90 0xfffd 0x90 0x049a 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x99 0xfffd 0x99 0x2122 0x9b 0xfffd 0x9b 0x203a 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0xfffd 0xa1 0x04ef 0xa2 0x04ee 0xa3 0x0451 0xa4 0x00a4 0xa5 0x04e3 0xa6 0x00a6 0xa7 0x00a7 0xab 0xfffd 0xab 0xfffd 0xab 0xfffd 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xb0 0xfffd 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x00b2 0xb3 0x0401 0xb5 0xfffd 0xb5 0x04e2 0xb6 0x00b6 0xb7 0x00b7 0xb9 0xfffd 0xb9 0x2116 0xbb 0xfffd 0xbb 0x00bb 0xbf 0xfffd 0xbf 0xfffd 0xbf 0xfffd 0xbf 0x00a9 0xc0 0x044e 0xc1 0x0430 0xc2 0x0431 0xc3 0x0446 0xc4 0x0434 0xc5 0x0435 0xc6 0x0444 0xc7 0x0433 0xc8 0x0445 0xc9 0x0438 0xca 0x0439 0xcb 0x043a 0xcc 0x043b 0xcd 0x043c 0xce 0x043d 0xcf 0x043e 0xd0 0x043f 0xd1 0x044f 0xd2 0x0440 0xd3 0x0441 0xd4 0x0442 0xd5 0x0443 0xd6 0x0436 0xd7 0x0432 0xd8 0x044c 0xd9 0x044b 0xda 0x0437 0xdb 0x0448 0xdc 0x044d 0xdd 0x0449 0xde 0x0447 0xdf 0x044a 0xe0 0x042e 0xe1 0x0410 0xe2 0x0411 0xe3 0x0426 0xe4 0x0414 0xe5 0x0415 0xe6 0x0424 0xe7 0x0413 0xe8 0x0425 0xe9 0x0418 0xea 0x0419 0xeb 0x041a 0xec 0x041b 0xed 0x041c 0xee 0x041d 0xef 0x041e 0xf0 0x041f 0xf1 0x042f 0xf2 0x0420 0xf3 0x0421 0xf4 0x0422 0xf5 0x0423 0xf6 0x0416 0xf7 0x0412 0xf8 0x042c 0xf9 0x042b 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0x042a libintl-perl-1.26/tests/02koi8-u.t000644 000765 000024 00000014376 12511127523 017130 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'KOI8-U', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'KOI8-U', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-U'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'KOI8-U', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x2500 0x81 0x2502 0x82 0x250c 0x83 0x2510 0x84 0x2514 0x85 0x2518 0x86 0x251c 0x87 0x2524 0x88 0x252c 0x89 0x2534 0x8a 0x253c 0x8b 0x2580 0x8c 0x2584 0x8d 0x2588 0x8e 0x258c 0x8f 0x2590 0x90 0x2591 0x91 0x2592 0x92 0x2593 0x93 0x2320 0x94 0x25a0 0x95 0x2219 0x96 0x221a 0x97 0x2248 0x98 0x2264 0x99 0x2265 0x9a 0x00a0 0x9b 0x2321 0x9c 0x00b0 0x9d 0x00b2 0x9e 0x00b7 0x9f 0x00f7 0xa0 0x2550 0xa1 0x2551 0xa2 0x2552 0xa3 0x0451 0xa4 0x0454 0xa5 0x2554 0xa6 0x0456 0xa7 0x0457 0xa8 0x2557 0xa9 0x2558 0xaa 0x2559 0xab 0x255a 0xac 0x255b 0xad 0x0491 0xae 0x255d 0xaf 0x255e 0xb0 0x255f 0xb1 0x2560 0xb2 0x2561 0xb3 0x0401 0xb4 0x0404 0xb5 0x2563 0xb6 0x0406 0xb7 0x0407 0xb8 0x2566 0xb9 0x2567 0xba 0x2568 0xbb 0x2569 0xbc 0x256a 0xbd 0x0490 0xbe 0x256c 0xbf 0x00a9 0xc0 0x044e 0xc1 0x0430 0xc2 0x0431 0xc3 0x0446 0xc4 0x0434 0xc5 0x0435 0xc6 0x0444 0xc7 0x0433 0xc8 0x0445 0xc9 0x0438 0xca 0x0439 0xcb 0x043a 0xcc 0x043b 0xcd 0x043c 0xce 0x043d 0xcf 0x043e 0xd0 0x043f 0xd1 0x044f 0xd2 0x0440 0xd3 0x0441 0xd4 0x0442 0xd5 0x0443 0xd6 0x0436 0xd7 0x0432 0xd8 0x044c 0xd9 0x044b 0xda 0x0437 0xdb 0x0448 0xdc 0x044d 0xdd 0x0449 0xde 0x0447 0xdf 0x044a 0xe0 0x042e 0xe1 0x0410 0xe2 0x0411 0xe3 0x0426 0xe4 0x0414 0xe5 0x0415 0xe6 0x0424 0xe7 0x0413 0xe8 0x0425 0xe9 0x0418 0xea 0x0419 0xeb 0x041a 0xec 0x041b 0xed 0x041c 0xee 0x041d 0xef 0x041e 0xf0 0x041f 0xf1 0x042f 0xf2 0x0420 0xf3 0x0421 0xf4 0x0422 0xf5 0x0423 0xf6 0x0416 0xf7 0x0412 0xf8 0x042c 0xf9 0x042b 0xfa 0x0417 0xfb 0x0428 0xfc 0x042d 0xfd 0x0429 0xfe 0x0427 0xff 0x042a libintl-perl-1.26/tests/02latin-greek-1.t000644 000765 000024 00000014432 12511127523 020345 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'LATIN-GREEK-1', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'LATIN-GREEK-1', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'LATIN-GREEK-1'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'LATIN-GREEK-1', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x039e 0x22 0x0022 0x23 0x0393 0x24 0x00a4 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x03a8 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x03a0 0x40 0x0394 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x03a9 0x5c 0x0398 0x5d 0x03a6 0x5e 0x039b 0x5f 0x03a3 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x203e 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02latin-greek.t000644 000765 000024 00000014422 12511127523 020206 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'LATIN-GREEK', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'LATIN-GREEK', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'LATIN-GREEK'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'LATIN-GREEK', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x00a3 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0391 0x62 0x0392 0x63 0x03a8 0x64 0x0394 0x65 0x0395 0x66 0x03a6 0x67 0x0393 0x68 0x0397 0x69 0x0399 0x6a 0x039e 0x6b 0x039a 0x6c 0x039b 0x6d 0x039c 0x6e 0x039d 0x6f 0x039f 0x70 0x03a0 0x72 0xfffd 0x72 0x03a1 0x73 0x03a3 0x74 0x03a4 0x75 0x0398 0x76 0x03a9 0x77 0x00b7 0x78 0x03a7 0x79 0x03a5 0x7a 0x0396 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x00a8 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02mac-is.t000644 000765 000024 00000014376 12511127523 017165 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MAC-IS', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MAC-IS', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MAC-IS'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MAC-IS', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x00c6 0xaf 0x00d8 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x00a5 0xb5 0x00b5 0xb6 0x2202 0xb7 0x2211 0xb8 0x220f 0xb9 0x03c0 0xba 0x222b 0xbb 0x00aa 0xbc 0x00ba 0xbd 0x03a9 0xbe 0x00e6 0xbf 0x00f8 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x0394 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x2014 0xd1 0x2013 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25c6 0xd8 0x00ff 0xd9 0x0178 0xda 0x2044 0xdb 0x00a4 0xdc 0x0110 0xdd 0x0111 0xde 0x00de 0xdf 0x00fe 0xe0 0x2021 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x00ca 0xe7 0x00c1 0xe8 0x00cb 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf0 0xe01e 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf5 0x0131 0xf8 0xfffd 0xf8 0xfffd 0xf8 0x00af 0xf9 0x02d8 0xfa 0x02d9 0xfb 0x02da 0xfc 0x00b8 0xfd 0x02dd 0xfe 0x02db 0xff 0x02c7 libintl-perl-1.26/tests/02mac-sami.t000644 000765 000024 00000014406 12511127523 017475 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MAC-SAMI', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MAC-SAMI', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MAC-SAMI'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MAC-SAMI', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x00dd 0xa1 0x00b0 0xa2 0x010c 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x00c6 0xaf 0x00d8 0xb0 0x0110 0xb1 0x014a 0xb2 0x821e 0xb3 0x821f 0xb4 0x0160 0xb5 0x0166 0xb6 0x2202 0xb7 0x017d 0xb8 0x010d 0xb9 0x0111 0xba 0x014b 0xbb 0x0161 0xbc 0x0167 0xbd 0x017e 0xbe 0x00e6 0xbf 0x00f8 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25ca 0xd8 0x00ff 0xd9 0x0178 0xda 0x2044 0xdb 0x00a4 0xdc 0x00d0 0xdd 0x00f0 0xde 0x00de 0xdf 0x00fe 0xe0 0x00fd 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x00ca 0xe7 0x00c1 0xe8 0x00cb 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf0 0xf8ff 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf5 0x0131 0xf6 0x01b7 0xf7 0x0292 0xf8 0x01ee 0xf9 0x01ef 0xfa 0x01e4 0xfb 0x01e5 0xfc 0x01e6 0xfd 0x01e7 0xfe 0x01e8 0xff 0x01e9 libintl-perl-1.26/tests/02mac-uk.t000644 000765 000024 00000014376 12511127523 017171 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MAC-UK', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MAC-UK', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MAC-UK'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MAC-UK', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0410 0x81 0x0411 0x82 0x0412 0x83 0x0413 0x84 0x0414 0x85 0x0415 0x86 0x0416 0x87 0x0417 0x88 0x0418 0x89 0x0419 0x8a 0x041a 0x8b 0x041b 0x8c 0x041c 0x8d 0x041d 0x8e 0x041e 0x8f 0x041f 0x90 0x0420 0x91 0x0421 0x92 0x0422 0x93 0x0423 0x94 0x0424 0x95 0x0425 0x96 0x0426 0x97 0x0427 0x98 0x0428 0x99 0x0429 0x9a 0x042a 0x9b 0x042b 0x9c 0x042c 0x9d 0x042d 0x9e 0x042e 0x9f 0x042f 0xa0 0x2020 0xa1 0x00b0 0xa2 0x0490 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x0406 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x0402 0xac 0x0452 0xad 0x2260 0xae 0x0403 0xaf 0x0453 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x0456 0xb5 0x00b5 0xb6 0x0491 0xb7 0x0408 0xb8 0x0404 0xb9 0x0454 0xba 0x0407 0xbb 0x0457 0xbc 0x0409 0xbd 0x0459 0xbe 0x040a 0xbf 0x045a 0xc0 0x0458 0xc1 0x0405 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x040b 0xcc 0x045b 0xcd 0x040c 0xce 0x045c 0xcf 0x0455 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x201e 0xd8 0x040e 0xd9 0x045e 0xda 0x040f 0xdb 0x045f 0xdc 0x2116 0xdd 0x0401 0xde 0x0451 0xdf 0x044f 0xe0 0x0430 0xe1 0x0431 0xe2 0x0432 0xe3 0x0433 0xe4 0x0434 0xe5 0x0435 0xe6 0x0436 0xe7 0x0437 0xe8 0x0438 0xe9 0x0439 0xea 0x043a 0xeb 0x043b 0xec 0x043c 0xed 0x043d 0xee 0x043e 0xef 0x043f 0xf0 0x0440 0xf1 0x0441 0xf2 0x0442 0xf3 0x0443 0xf4 0x0444 0xf5 0x0445 0xf6 0x0446 0xf7 0x0447 0xf8 0x0448 0xf9 0x0449 0xfa 0x044a 0xfb 0x044b 0xfc 0x044c 0xfd 0x044d 0xfe 0x044e 0xff 0x00a4 libintl-perl-1.26/tests/02macarabic.t000644 000765 000024 00000014412 12511127523 017705 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACARABIC', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACARABIC', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACARABIC'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACARABIC', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00a0 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x06ba 0x8c 0x00ab 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x2026 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00bb 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f7 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa5 0xfffd 0xa5 0xfffd 0xa5 0xfffd 0xa5 0xfffd 0xa5 0xfffd 0xa5 0x066a 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0xfffd 0xac 0x060c 0xb0 0xfffd 0xb0 0xfffd 0xb0 0xfffd 0xb0 0x0660 0xb1 0x0661 0xb2 0x0662 0xb3 0x0663 0xb4 0x0664 0xb5 0x0665 0xb6 0x0666 0xb7 0x0667 0xb8 0x0668 0xb9 0x0669 0xbb 0xfffd 0xbb 0x061b 0xbf 0xfffd 0xbf 0xfffd 0xbf 0xfffd 0xbf 0x061f 0xc0 0x066d 0xc1 0x0621 0xc2 0x0622 0xc3 0x0623 0xc4 0x0624 0xc5 0x0625 0xc6 0x0626 0xc7 0x0627 0xc8 0x0628 0xc9 0x0629 0xca 0x062a 0xcb 0x062b 0xcc 0x062c 0xcd 0x062d 0xce 0x062e 0xcf 0x062f 0xd0 0x0630 0xd1 0x0631 0xd2 0x0632 0xd3 0x0633 0xd4 0x0634 0xd5 0x0635 0xd6 0x0636 0xd7 0x0637 0xd8 0x0638 0xd9 0x0639 0xda 0x063a 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0xfffd 0xe0 0x0640 0xe1 0x0641 0xe2 0x0642 0xe3 0x0643 0xe4 0x0644 0xe5 0x0645 0xe6 0x0646 0xe7 0x0647 0xe8 0x0648 0xe9 0x0649 0xea 0x064a 0xeb 0x064b 0xec 0x064c 0xed 0x064d 0xee 0x064e 0xef 0x064f 0xf0 0x0650 0xf1 0x0651 0xf2 0x0652 0xf3 0x067e 0xf4 0x0679 0xf5 0x0686 0xf6 0x06d5 0xf7 0x06a4 0xf8 0x06af 0xf9 0x0688 0xfa 0x0691 0xfe 0xfffd 0xfe 0xfffd 0xfe 0xfffd 0xfe 0x0698 0xff 0x06d2 libintl-perl-1.26/tests/02maccroatian.t000644 000765 000024 00000014422 12511127523 020265 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACCROATIAN', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACCROATIAN', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACCROATIAN'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACCROATIAN', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x0160 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x017d 0xaf 0x00d8 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x2206 0xb5 0x00b5 0xb6 0x2202 0xb7 0x2211 0xb8 0x220f 0xb9 0x0161 0xba 0x222b 0xbb 0x00aa 0xbc 0x00ba 0xbd 0x2126 0xbe 0x017e 0xbf 0x00f8 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x0106 0xc7 0x00ab 0xc8 0x010c 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x0110 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25ca 0xd9 0xfffd 0xd9 0x00a9 0xda 0x2044 0xdb 0x00a4 0xdc 0x2039 0xdd 0x203a 0xde 0x00c6 0xdf 0x00bb 0xe0 0x2013 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x0107 0xe7 0x00c1 0xe8 0x010d 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf0 0x0111 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf5 0x0131 0xf6 0x02c6 0xf7 0x02dc 0xf8 0x00af 0xf9 0x03c0 0xfa 0x00cb 0xfb 0x02da 0xfc 0x00b8 0xfd 0x00ca 0xfe 0x00e6 0xff 0x02c7 libintl-perl-1.26/tests/02maccyrillic.t000644 000765 000024 00000014422 12511127523 020277 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACCYRILLIC', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACCYRILLIC', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACCYRILLIC'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACCYRILLIC', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0410 0x81 0x0411 0x82 0x0412 0x83 0x0413 0x84 0x0414 0x85 0x0415 0x86 0x0416 0x87 0x0417 0x88 0x0418 0x89 0x0419 0x8a 0x041a 0x8b 0x041b 0x8c 0x041c 0x8d 0x041d 0x8e 0x041e 0x8f 0x041f 0x90 0x0420 0x91 0x0421 0x92 0x0422 0x93 0x0423 0x94 0x0424 0x95 0x0425 0x96 0x0426 0x97 0x0427 0x98 0x0428 0x99 0x0429 0x9a 0x042a 0x9b 0x042b 0x9c 0x042c 0x9d 0x042d 0x9e 0x042e 0x9f 0x042f 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x0406 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x0402 0xac 0x0452 0xad 0x2260 0xae 0x0403 0xaf 0x0453 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x0456 0xb5 0x00b5 0xb6 0x2202 0xb7 0x0408 0xb8 0x0404 0xb9 0x0454 0xba 0x0407 0xbb 0x0457 0xbc 0x0409 0xbd 0x0459 0xbe 0x040a 0xbf 0x045a 0xc0 0x0458 0xc1 0x0405 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x040b 0xcc 0x045b 0xcd 0x040c 0xce 0x045c 0xcf 0x0455 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x201e 0xd8 0x040e 0xd9 0x045e 0xda 0x040f 0xdb 0x045f 0xdc 0x2116 0xdd 0x0401 0xde 0x0451 0xdf 0x044f 0xe0 0x0430 0xe1 0x0431 0xe2 0x0432 0xe3 0x0433 0xe4 0x0434 0xe5 0x0435 0xe6 0x0436 0xe7 0x0437 0xe8 0x0438 0xe9 0x0439 0xea 0x043a 0xeb 0x043b 0xec 0x043c 0xed 0x043d 0xee 0x043e 0xef 0x043f 0xf0 0x0440 0xf1 0x0441 0xf2 0x0442 0xf3 0x0443 0xf4 0x0444 0xf5 0x0445 0xf6 0x0446 0xf7 0x0447 0xf8 0x0448 0xf9 0x0449 0xfa 0x044a 0xfb 0x044b 0xfc 0x044c 0xfd 0x044d 0xfe 0x044e 0xff 0x00a4 libintl-perl-1.26/tests/02macgreek.t000644 000765 000024 00000014406 12511127523 017564 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACGREEK', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACGREEK', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACGREEK'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACGREEK', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00b9 0x82 0x00b2 0x83 0x00c9 0x84 0x00b3 0x85 0x00d6 0x86 0x00dc 0x87 0x0385 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x0384 0x8c 0x00a8 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00a3 0x93 0x2122 0x94 0x00ee 0x95 0x00ef 0x96 0x2022 0x97 0x00bd 0x98 0x2030 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00a6 0x9c 0x00ad 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x2020 0xa1 0x0393 0xa2 0x0394 0xa3 0x0398 0xa4 0x039b 0xa5 0x039e 0xa6 0x03a0 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x03a3 0xab 0x03aa 0xac 0x00a7 0xad 0x2260 0xae 0x00b0 0xaf 0x0387 0xb0 0x0391 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x00a5 0xb5 0x0392 0xb6 0x0395 0xb7 0x0396 0xb8 0x0397 0xb9 0x0399 0xba 0x039a 0xbb 0x039c 0xbc 0x03a6 0xbd 0x03ab 0xbe 0x03a8 0xbf 0x03a9 0xc0 0x03ac 0xc1 0x039d 0xc2 0x00ac 0xc3 0x039f 0xc4 0x03a1 0xc5 0x2248 0xc6 0x03a4 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x03a5 0xcc 0x03a7 0xcd 0x0386 0xce 0x0388 0xcf 0x0153 0xd0 0x2013 0xd1 0x2015 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x0389 0xd8 0x038a 0xd9 0x038c 0xda 0x038e 0xdb 0x03ad 0xdc 0x03ae 0xdd 0x03af 0xde 0x03cc 0xdf 0x038f 0xe0 0x03cd 0xe1 0x03b1 0xe2 0x03b2 0xe3 0x03c8 0xe4 0x03b4 0xe5 0x03b5 0xe6 0x03c6 0xe7 0x03b3 0xe8 0x03b7 0xe9 0x03b9 0xea 0x03be 0xeb 0x03ba 0xec 0x03bb 0xed 0x03bc 0xee 0x03bd 0xef 0x03bf 0xf0 0x03c0 0xf1 0x03ce 0xf2 0x03c1 0xf3 0x03c3 0xf4 0x03c4 0xf5 0x03b8 0xf6 0x03c9 0xf7 0x03c2 0xf8 0x03c7 0xf9 0x03c5 0xfa 0x03b6 0xfb 0x03ca 0xfc 0x03cb 0xfd 0x0390 0xfe 0x03b0 0xff 0xfffd libintl-perl-1.26/tests/02machebrew.t000644 000765 000024 00000014412 12511127523 017740 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACHEBREW', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACHEBREW', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACHEBREW'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACHEBREW', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0xfb1f 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa6 0xfffd 0xa6 0xfffd 0xa6 0xfffd 0xa6 0xfffd 0xa6 0xfffd 0xa6 0xfffd 0xa6 0x20aa 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0xfffd 0xc1 0x201e 0xc6 0xfffd 0xc6 0xfffd 0xc6 0xfffd 0xc6 0xfffd 0xc6 0x05bc 0xc7 0xfb4b 0xc8 0xfb35 0xc9 0x2026 0xca 0x00a0 0xcb 0x05b8 0xcc 0x05b7 0xcd 0x05b5 0xce 0x05b6 0xcf 0x05b4 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0xfb2a 0xd7 0xfb2b 0xd8 0x05bf 0xd9 0x05b0 0xda 0x05b2 0xdb 0x05b1 0xdc 0x05bb 0xdd 0x05b9 0xdf 0xfffd 0xdf 0x05b3 0xe0 0x05d0 0xe1 0x05d1 0xe2 0x05d2 0xe3 0x05d3 0xe4 0x05d4 0xe5 0x05d5 0xe6 0x05d6 0xe7 0x05d7 0xe8 0x05d8 0xe9 0x05d9 0xea 0x05da 0xeb 0x05db 0xec 0x05dc 0xed 0x05dd 0xee 0x05de 0xef 0x05df 0xf0 0x05e0 0xf1 0x05e1 0xf2 0x05e2 0xf3 0x05e3 0xf4 0x05e4 0xf5 0x05e5 0xf6 0x05e6 0xf7 0x05e7 0xf8 0x05e8 0xf9 0x05e9 0xfa 0x05ea 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02maciceland.t000644 000765 000024 00000014416 12511127523 020067 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACICELAND', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACICELAND', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACICELAND'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACICELAND', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x00dd 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x00c6 0xaf 0x00d8 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x00a5 0xb5 0x00b5 0xb6 0x2202 0xb7 0x2211 0xb8 0x220f 0xb9 0x03c0 0xba 0x222b 0xbb 0x00aa 0xbc 0x00ba 0xbd 0x2126 0xbe 0x00e6 0xbf 0x00f8 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25ca 0xd8 0x00ff 0xd9 0x0178 0xda 0x2044 0xdb 0x00a4 0xdc 0x00d0 0xdd 0x00f0 0xde 0x00de 0xdf 0x00fe 0xe0 0x00fd 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x00ca 0xe7 0x00c1 0xe8 0x00cb 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf1 0xfffd 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf5 0x0131 0xf6 0x02c6 0xf7 0x02dc 0xf8 0x00af 0xf9 0x02d8 0xfa 0x02d9 0xfb 0x02da 0xfc 0x00b8 0xfd 0x02dd 0xfe 0x02db 0xff 0x02c7 libintl-perl-1.26/tests/02macintosh.t000644 000765 000024 00000014412 12511127523 017770 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACINTOSH', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACINTOSH', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACINTOSH'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACINTOSH', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x00c6 0xaf 0x00d8 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x00a5 0xb5 0x00b5 0xb6 0x2202 0xb7 0x2211 0xb8 0x220f 0xb9 0x03c0 0xba 0x222b 0xbb 0x00aa 0xbc 0x00ba 0xbd 0x03a9 0xbe 0x00e6 0xbf 0x00f8 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x0394 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25ca 0xd8 0x00ff 0xd9 0x0178 0xda 0x2044 0xdb 0x20ac 0xdc 0x2039 0xdd 0x203a 0xde 0xfb01 0xdf 0xfb02 0xe0 0x2021 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x00ca 0xe7 0x00c1 0xe8 0x00cb 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf0 0xe01e 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf5 0x0131 0xf6 0x02c6 0xf7 0x02dc 0xf8 0x00af 0xf9 0x02d8 0xfa 0x02d9 0xfb 0x02da 0xfc 0x00b8 0xfd 0x02dd 0xfe 0x02db 0xff 0x02c7 libintl-perl-1.26/tests/02macromania.t000644 000765 000024 00000014416 12511127523 020116 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACROMANIA', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACROMANIA', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACROMANIA'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACROMANIA', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x0102 0xaf 0x015e 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x00a5 0xb5 0x00b5 0xb6 0x2202 0xb7 0x2211 0xb8 0x220f 0xb9 0x03c0 0xba 0x222b 0xbb 0x00aa 0xbc 0x00ba 0xbd 0x2126 0xbe 0x0103 0xbf 0x015f 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25ca 0xd8 0x00ff 0xd9 0x0178 0xda 0x2044 0xdb 0x00a4 0xdc 0x2039 0xdd 0x203a 0xde 0x0162 0xdf 0x0163 0xe0 0x2021 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x00ca 0xe7 0x00c1 0xe8 0x00cb 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf1 0xfffd 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf5 0x0131 0xf6 0x02c6 0xf7 0x02dc 0xf8 0x00af 0xf9 0x02d8 0xfa 0x02d9 0xfb 0x02da 0xfc 0x00b8 0xfd 0x02dd 0xfe 0x02db 0xff 0x02c7 libintl-perl-1.26/tests/02macthai.t000644 000765 000024 00000014402 12511127523 017410 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACTHAI', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACTHAI', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACTHAI'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACTHAI', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00ab 0x81 0x00bb 0x82 0x2026 0x83 0xf88c 0x84 0xf88f 0x85 0xf892 0x86 0xf895 0x87 0xf898 0x88 0xf88b 0x89 0xf88e 0x8a 0xf891 0x8b 0xf894 0x8c 0xf897 0x8d 0x201c 0x8e 0x201d 0x8f 0xf899 0x91 0xfffd 0x91 0x2022 0x92 0xf884 0x93 0xf889 0x94 0xf885 0x95 0xf886 0x96 0xf887 0x97 0xf888 0x98 0xf88a 0x99 0xf88d 0x9a 0xf890 0x9b 0xf893 0x9c 0xf896 0x9d 0x2018 0x9e 0x2019 0xa0 0xfffd 0xa0 0x00a0 0xa1 0x0e01 0xa2 0x0e02 0xa3 0x0e03 0xa4 0x0e04 0xa5 0x0e05 0xa6 0x0e06 0xa7 0x0e07 0xa8 0x0e08 0xa9 0x0e09 0xaa 0x0e0a 0xab 0x0e0b 0xac 0x0e0c 0xad 0x0e0d 0xae 0x0e0e 0xaf 0x0e0f 0xb0 0x0e10 0xb1 0x0e11 0xb2 0x0e12 0xb3 0x0e13 0xb4 0x0e14 0xb5 0x0e15 0xb6 0x0e16 0xb7 0x0e17 0xb8 0x0e18 0xb9 0x0e19 0xba 0x0e1a 0xbb 0x0e1b 0xbc 0x0e1c 0xbd 0x0e1d 0xbe 0x0e1e 0xbf 0x0e1f 0xc0 0x0e20 0xc1 0x0e21 0xc2 0x0e22 0xc3 0x0e23 0xc4 0x0e24 0xc5 0x0e25 0xc6 0x0e26 0xc7 0x0e27 0xc8 0x0e28 0xc9 0x0e29 0xca 0x0e2a 0xcb 0x0e2b 0xcc 0x0e2c 0xcd 0x0e2d 0xce 0x0e2e 0xcf 0x0e2f 0xd0 0x0e30 0xd1 0x0e31 0xd2 0x0e32 0xd3 0x0e33 0xd4 0x0e34 0xd5 0x0e35 0xd6 0x0e36 0xd7 0x0e37 0xd8 0x0e38 0xd9 0x0e39 0xda 0x0e3a 0xdb 0xfeff 0xdc 0x200b 0xdd 0x2013 0xde 0x2014 0xdf 0x0e3f 0xe0 0x0e40 0xe1 0x0e41 0xe2 0x0e42 0xe3 0x0e43 0xe4 0x0e44 0xe5 0x0e45 0xe6 0x0e46 0xe7 0x0e47 0xe8 0x0e48 0xe9 0x0e49 0xea 0x0e4a 0xeb 0x0e4b 0xec 0x0e4c 0xed 0x0e4d 0xee 0x2122 0xef 0x0e4f 0xf0 0x0e50 0xf1 0x0e51 0xf2 0x0e52 0xf3 0x0e53 0xf4 0x0e54 0xf5 0x0e55 0xf6 0x0e56 0xf7 0x0e57 0xf8 0x0e58 0xf9 0x0e59 0xfa 0x00ae 0xfb 0x00a9 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02macturkish.t000644 000765 000024 00000014416 12511127523 020161 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACTURKISH', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACTURKISH', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACTURKISH'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACTURKISH', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00c4 0x81 0x00c5 0x82 0x00c7 0x83 0x00c9 0x84 0x00d1 0x85 0x00d6 0x86 0x00dc 0x87 0x00e1 0x88 0x00e0 0x89 0x00e2 0x8a 0x00e4 0x8b 0x00e3 0x8c 0x00e5 0x8d 0x00e7 0x8e 0x00e9 0x8f 0x00e8 0x90 0x00ea 0x91 0x00eb 0x92 0x00ed 0x93 0x00ec 0x94 0x00ee 0x95 0x00ef 0x96 0x00f1 0x97 0x00f3 0x98 0x00f2 0x99 0x00f4 0x9a 0x00f6 0x9b 0x00f5 0x9c 0x00fa 0x9d 0x00f9 0x9e 0x00fb 0x9f 0x00fc 0xa0 0x2020 0xa1 0x00b0 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x00df 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x00b4 0xac 0x00a8 0xad 0x2260 0xae 0x00c6 0xaf 0x00d8 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x00a5 0xb5 0x00b5 0xb6 0x2202 0xb7 0x2211 0xb8 0x220f 0xb9 0x03c0 0xba 0x222b 0xbb 0x00aa 0xbc 0x00ba 0xbd 0x2126 0xbe 0x00e6 0xbf 0x00f8 0xc0 0x00bf 0xc1 0x00a1 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x00c0 0xcc 0x00c3 0xcd 0x00d5 0xce 0x0152 0xcf 0x0153 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x25ca 0xd8 0x00ff 0xd9 0x0178 0xda 0x011e 0xdb 0x011f 0xdc 0x0130 0xdd 0x0131 0xde 0x015e 0xdf 0x015f 0xe0 0x2021 0xe1 0x00b7 0xe2 0x201a 0xe3 0x201e 0xe4 0x2030 0xe5 0x00c2 0xe6 0x00ca 0xe7 0x00c1 0xe8 0x00cb 0xe9 0x00c8 0xea 0x00cd 0xeb 0x00ce 0xec 0x00cf 0xed 0x00cc 0xee 0x00d3 0xef 0x00d4 0xf1 0xfffd 0xf1 0x00d2 0xf2 0x00da 0xf3 0x00db 0xf4 0x00d9 0xf6 0xfffd 0xf6 0x02c6 0xf7 0x02dc 0xf8 0x00af 0xf9 0x02d8 0xfa 0x02d9 0xfb 0x02da 0xfc 0x00b8 0xfd 0x02dd 0xfe 0x02db 0xff 0x02c7 libintl-perl-1.26/tests/02macukraine.t000644 000765 000024 00000014416 12511127523 020126 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'MACUKRAINE', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'MACUKRAINE', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACUKRAINE'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'MACUKRAINE', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x0410 0x81 0x0411 0x82 0x0412 0x83 0x0413 0x84 0x0414 0x85 0x0415 0x86 0x0416 0x87 0x0417 0x88 0x0418 0x89 0x0419 0x8a 0x041a 0x8b 0x041b 0x8c 0x041c 0x8d 0x041d 0x8e 0x041e 0x8f 0x041f 0x90 0x0420 0x91 0x0421 0x92 0x0422 0x93 0x0423 0x94 0x0424 0x95 0x0425 0x96 0x0426 0x97 0x0427 0x98 0x0428 0x99 0x0429 0x9a 0x042a 0x9b 0x042b 0x9c 0x042c 0x9d 0x042d 0x9e 0x042e 0x9f 0x042f 0xa0 0x2020 0xa1 0x00b0 0xa2 0x0490 0xa3 0x00a3 0xa4 0x00a7 0xa5 0x2022 0xa6 0x00b6 0xa7 0x0406 0xa8 0x00ae 0xa9 0x00a9 0xaa 0x2122 0xab 0x0402 0xac 0x0452 0xad 0x2260 0xae 0x0403 0xaf 0x0453 0xb0 0x221e 0xb1 0x00b1 0xb2 0x2264 0xb3 0x2265 0xb4 0x0456 0xb5 0x00b5 0xb6 0x0491 0xb7 0x0408 0xb8 0x0404 0xb9 0x0454 0xba 0x0407 0xbb 0x0457 0xbc 0x0409 0xbd 0x0459 0xbe 0x040a 0xbf 0x045a 0xc0 0x0458 0xc1 0x0405 0xc2 0x00ac 0xc3 0x221a 0xc4 0x0192 0xc5 0x2248 0xc6 0x2206 0xc7 0x00ab 0xc8 0x00bb 0xc9 0x2026 0xca 0x00a0 0xcb 0x040b 0xcc 0x045b 0xcd 0x040c 0xce 0x045c 0xcf 0x0455 0xd0 0x2013 0xd1 0x2014 0xd2 0x201c 0xd3 0x201d 0xd4 0x2018 0xd5 0x2019 0xd6 0x00f7 0xd7 0x201e 0xd8 0x040e 0xd9 0x045e 0xda 0x040f 0xdb 0x045f 0xdc 0x2116 0xdd 0x0401 0xde 0x0451 0xdf 0x044f 0xe0 0x0430 0xe1 0x0431 0xe2 0x0432 0xe3 0x0433 0xe4 0x0434 0xe5 0x0435 0xe6 0x0436 0xe7 0x0437 0xe8 0x0438 0xe9 0x0439 0xea 0x043a 0xeb 0x043b 0xec 0x043c 0xed 0x043d 0xee 0x043e 0xef 0x043f 0xf0 0x0440 0xf1 0x0441 0xf2 0x0442 0xf3 0x0443 0xf4 0x0444 0xf5 0x0445 0xf6 0x0446 0xf7 0x0447 0xf8 0x0448 0xf9 0x0449 0xfa 0x044a 0xfb 0x044b 0xfc 0x044c 0xfd 0x044d 0xfe 0x044e 0xff 0x00a4 libintl-perl-1.26/tests/02nats-dano.t000644 000765 000024 00000014412 12511127523 017667 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'NATS-DANO', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'NATS-DANO', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'NATS-DANO'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'NATS-DANO', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x00ab 0x23 0x00bb 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0xe018 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x00c6 0x5c 0x00d8 0x5d 0x00c5 0x5e 0x25a0 0x5f 0x005f 0x60 0xe019 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x00e6 0x7c 0x00f8 0x7d 0x00e5 0x7e 0x2013 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02nats-sefi.t000644 000765 000024 00000014412 12511127523 017674 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'NATS-SEFI', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'NATS-SEFI', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'NATS-SEFI'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'NATS-SEFI', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0xe018 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x00c4 0x5c 0x00d6 0x5d 0x00c5 0x5e 0x25a0 0x5f 0x005f 0x60 0xe019 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x00e4 0x7c 0x00f6 0x7d 0x00e5 0x7e 0x2013 0x7f 0x007f 0x80 0xfffd 0x81 0xfffd 0x82 0xfffd 0x83 0xfffd 0x84 0xfffd 0x85 0xfffd 0x86 0xfffd 0x87 0xfffd 0x88 0xfffd 0x89 0xfffd 0x8a 0xfffd 0x8b 0xfffd 0x8c 0xfffd 0x8d 0xfffd 0x8e 0xfffd 0x8f 0xfffd 0x90 0xfffd 0x91 0xfffd 0x92 0xfffd 0x93 0xfffd 0x94 0xfffd 0x95 0xfffd 0x96 0xfffd 0x97 0xfffd 0x98 0xfffd 0x99 0xfffd 0x9a 0xfffd 0x9b 0xfffd 0x9c 0xfffd 0x9d 0xfffd 0x9e 0xfffd 0x9f 0xfffd 0xa0 0xfffd 0xa1 0xfffd 0xa2 0xfffd 0xa3 0xfffd 0xa4 0xfffd 0xa5 0xfffd 0xa6 0xfffd 0xa7 0xfffd 0xa8 0xfffd 0xa9 0xfffd 0xaa 0xfffd 0xab 0xfffd 0xac 0xfffd 0xad 0xfffd 0xae 0xfffd 0xaf 0xfffd 0xb0 0xfffd 0xb1 0xfffd 0xb2 0xfffd 0xb3 0xfffd 0xb4 0xfffd 0xb5 0xfffd 0xb6 0xfffd 0xb7 0xfffd 0xb8 0xfffd 0xb9 0xfffd 0xba 0xfffd 0xbb 0xfffd 0xbc 0xfffd 0xbd 0xfffd 0xbe 0xfffd 0xbf 0xfffd 0xc0 0xfffd 0xc1 0xfffd 0xc2 0xfffd 0xc3 0xfffd 0xc4 0xfffd 0xc5 0xfffd 0xc6 0xfffd 0xc7 0xfffd 0xc8 0xfffd 0xc9 0xfffd 0xca 0xfffd 0xcb 0xfffd 0xcc 0xfffd 0xcd 0xfffd 0xce 0xfffd 0xcf 0xfffd 0xd0 0xfffd 0xd1 0xfffd 0xd2 0xfffd 0xd3 0xfffd 0xd4 0xfffd 0xd5 0xfffd 0xd6 0xfffd 0xd7 0xfffd 0xd8 0xfffd 0xd9 0xfffd 0xda 0xfffd 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0xfffd 0xe0 0xfffd 0xe1 0xfffd 0xe2 0xfffd 0xe3 0xfffd 0xe4 0xfffd 0xe5 0xfffd 0xe6 0xfffd 0xe7 0xfffd 0xe8 0xfffd 0xe9 0xfffd 0xea 0xfffd 0xeb 0xfffd 0xec 0xfffd 0xed 0xfffd 0xee 0xfffd 0xef 0xfffd 0xf0 0xfffd 0xf1 0xfffd 0xf2 0xfffd 0xf3 0xfffd 0xf4 0xfffd 0xf5 0xfffd 0xf6 0xfffd 0xf7 0xfffd 0xf8 0xfffd 0xf9 0xfffd 0xfa 0xfffd 0xfb 0xfffd 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02nextstep.t000644 000765 000024 00000014406 12511127523 017660 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'NEXTSTEP', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'NEXTSTEP', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'NEXTSTEP'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'NEXTSTEP', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x00a0 0x81 0x00c0 0x82 0x00c1 0x83 0x00c2 0x84 0x00c3 0x85 0x00c4 0x86 0x00c5 0x87 0x00c7 0x88 0x00c8 0x89 0x00c9 0x8a 0x00ca 0x8b 0x00cb 0x8c 0x00cc 0x8d 0x00cd 0x8e 0x00ce 0x8f 0x00cf 0x90 0x00d0 0x91 0x00d1 0x92 0x00d2 0x93 0x00d3 0x94 0x00d4 0x95 0x00d5 0x96 0x00d6 0x97 0x00d9 0x98 0x00da 0x99 0x00db 0x9a 0x00dc 0x9b 0x00dd 0x9c 0x00de 0x9d 0x00b5 0x9e 0x00d7 0x9f 0x00f7 0xa0 0x00a9 0xa1 0x00a1 0xa2 0x00a2 0xa3 0x00a3 0xa4 0x2044 0xa5 0x00a5 0xa6 0x0192 0xa7 0x00a7 0xa8 0x00a4 0xa9 0x2019 0xaa 0x201c 0xab 0x00ab 0xac 0x2039 0xad 0x203a 0xae 0xfb01 0xaf 0xfb02 0xb0 0x00ae 0xb1 0x2013 0xb2 0x2020 0xb3 0x2021 0xb4 0x00b7 0xb5 0x00a6 0xb6 0x00b6 0xb7 0x2022 0xb8 0x201a 0xb9 0x201e 0xba 0x201d 0xbb 0x00bb 0xbc 0x2026 0xbd 0x2030 0xbe 0x00ac 0xbf 0x00bf 0xc0 0x00b9 0xc1 0x02cb 0xc2 0x00b4 0xc3 0x02c6 0xc4 0x02dc 0xc5 0x00af 0xc6 0x02d8 0xc7 0x02d9 0xc8 0x00a8 0xc9 0x00b2 0xca 0x02da 0xcb 0x00b8 0xcc 0x00b3 0xcd 0x02dd 0xce 0x02db 0xcf 0x02c7 0xd0 0x2014 0xd1 0x00b1 0xd2 0x00bc 0xd3 0x00bd 0xd4 0x00be 0xd5 0x00e0 0xd6 0x00e1 0xd7 0x00e2 0xd8 0x00e3 0xd9 0x00e4 0xda 0x00e5 0xdb 0x00e7 0xdc 0x00e8 0xdd 0x00e9 0xde 0x00ea 0xdf 0x00eb 0xe0 0x00ec 0xe1 0x00c6 0xe2 0x00ed 0xe3 0x00aa 0xe4 0x00ee 0xe5 0x00ef 0xe6 0x00f0 0xe7 0x00f1 0xe8 0x0141 0xe9 0x00d8 0xea 0x0152 0xeb 0x00ba 0xec 0x00f2 0xed 0x00f3 0xee 0x00f4 0xef 0x00f5 0xf0 0x00f6 0xf1 0x00e6 0xf2 0x00f9 0xf3 0x00fa 0xf4 0x00fb 0xf5 0x0131 0xf6 0x00fc 0xf7 0x00fd 0xf8 0x0142 0xf9 0x00f8 0xfa 0x0153 0xfb 0x00df 0xfc 0x00fe 0xfd 0x00ff 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02sami-ws2.t000644 000765 000024 00000014416 12511127523 017451 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'WIN-SAMI-2', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'WIN-SAMI-2', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'WIN-SAMI-2'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'WIN-SAMI-2', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x20ac 0x82 0xfffd 0x82 0x010c 0x83 0x0192 0x84 0x010d 0x85 0x01b7 0x86 0x0292 0x87 0x01ee 0x88 0x01ef 0x89 0x0110 0x8a 0x0160 0x8b 0x2039 0x8c 0x0152 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0xfffd 0x91 0x2018 0x92 0x2019 0x93 0x201c 0x94 0x201d 0x95 0x2022 0x96 0x2013 0x97 0x2014 0x98 0x0111 0x99 0x01e6 0x9a 0x0161 0x9b 0x203a 0x9c 0x0153 0x9f 0xfffd 0x9f 0xfffd 0x9f 0x0178 0xa0 0x00a0 0xa1 0x01e7 0xa2 0x01e4 0xa3 0x00a3 0xa4 0x00a4 0xa5 0x01e5 0xa6 0x00a6 0xa7 0x00a7 0xa8 0x00a8 0xa9 0x00a9 0xaa 0x021e 0xab 0x00ab 0xac 0x00ac 0xad 0x00ad 0xae 0x00ae 0xaf 0x021f 0xb0 0x00b0 0xb1 0x00b1 0xb2 0x01e8 0xb3 0x01e9 0xb4 0x00b4 0xb5 0x00b5 0xb6 0x00b6 0xb7 0x00b7 0xb8 0x014a 0xb9 0x014b 0xba 0x0166 0xbb 0x00bb 0xbc 0x0167 0xbd 0x00bd 0xbe 0x017d 0xbf 0x017e 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x00c4 0xc5 0x00c5 0xc6 0x00c6 0xc7 0x00c7 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x00cb 0xcc 0x00cc 0xcd 0x00cd 0xce 0x00ce 0xcf 0x00cf 0xd0 0x00d0 0xd1 0x00d1 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x00d5 0xd6 0x00d6 0xd7 0x00d7 0xd8 0x00d8 0xd9 0x00d9 0xda 0x00da 0xdb 0x00db 0xdc 0x00dc 0xdd 0x00dd 0xde 0x00de 0xdf 0x00df 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x00e4 0xe5 0x00e5 0xe6 0x00e6 0xe7 0x00e7 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x00eb 0xec 0x00ec 0xed 0x00ed 0xee 0x00ee 0xef 0x00ef 0xf0 0x00f0 0xf1 0x00f1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x00f6 0xf7 0x00f7 0xf8 0x00f8 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x00fb 0xfc 0x00fc 0xfd 0x00fd 0xfe 0x00fe 0xff 0x00ff libintl-perl-1.26/tests/02tis-620.t000644 000765 000024 00000013610 12511127523 017106 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'TIS-620', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'TIS-620', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'TIS-620'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'TIS-620', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x001e 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0xa0 0xfffd 0xa1 0x0e01 0xa2 0x0e02 0xa3 0x0e03 0xa4 0x0e04 0xa5 0x0e05 0xa6 0x0e06 0xa7 0x0e07 0xa8 0x0e08 0xa9 0x0e09 0xaa 0x0e0a 0xab 0x0e0b 0xac 0x0e0c 0xad 0x0e0d 0xae 0x0e0e 0xaf 0x0e0f 0xb0 0x0e10 0xb1 0x0e11 0xb2 0x0e12 0xb3 0x0e13 0xb4 0x0e14 0xb5 0x0e15 0xb6 0x0e16 0xb7 0x0e17 0xb8 0x0e18 0xb9 0x0e19 0xba 0x0e1a 0xbb 0x0e1b 0xbc 0x0e1c 0xbd 0x0e1d 0xbe 0x0e1e 0xbf 0x0e1f 0xc0 0x0e20 0xc1 0x0e21 0xc2 0x0e22 0xc3 0x0e23 0xc4 0x0e24 0xc5 0x0e25 0xc6 0x0e26 0xc7 0x0e27 0xc8 0x0e28 0xc9 0x0e29 0xca 0x0e2a 0xcb 0x0e2b 0xcc 0x0e2c 0xcd 0x0e2d 0xce 0x0e2e 0xcf 0x0e2f 0xd0 0x0e30 0xd1 0x0e31 0xd2 0x0e32 0xd3 0x0e33 0xd4 0x0e34 0xd5 0x0e35 0xd6 0x0e36 0xd7 0x0e37 0xd8 0x0e38 0xd9 0x0e39 0xda 0x0e3a 0xdb 0xfffd 0xdc 0xfffd 0xdd 0xfffd 0xde 0xfffd 0xdf 0x0e3f 0xe0 0x0e40 0xe1 0x0e41 0xe2 0x0e42 0xe3 0x0e43 0xe4 0x0e44 0xe5 0x0e45 0xe6 0x0e46 0xe7 0x0e47 0xe8 0x0e48 0xe9 0x0e49 0xea 0x0e4a 0xeb 0x0e4b 0xec 0x0e4c 0xed 0x0e4d 0xee 0x0e4e 0xef 0x0e4f 0xf0 0x0e50 0xf1 0x0e51 0xf2 0x0e52 0xf3 0x0e53 0xf4 0x0e54 0xf5 0x0e55 0xf6 0x0e56 0xf7 0x0e57 0xf8 0x0e58 0xf9 0x0e59 0xfa 0x0e5a 0xfb 0x0e5b 0xfc 0xfffd 0xfd 0xfffd 0xfe 0xfffd 0xff 0xfffd libintl-perl-1.26/tests/02us-ascii.t000644 000765 000024 00000011264 12511127523 017522 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $codes = {}; while () { my ($code, $ucs4, undef) = split /\s+/, $_; $codes->{oct $code} = oct $ucs4; } my $cd_int = Locale::Recode->new (from => 'ASCII', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'ASCII', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ASCII'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs4) = each %$codes) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs4) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs4) = each %$codes) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs4) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($code, $ucs4) = each %$codes) { my $outbuf = [ $ucs4 ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'ISO-8859-2', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } # Local Variables: # mode: perl # perl-indent-level: 4 # perl-continued-statement-offset: 4 # perl-continued-brace-offset: 0 # perl-brace-offset: -4 # perl-brace-imaginary-offset: 0 # perl-label-offset: -4 # cperl-indent-level: 4 # cperl-continued-statement-offset: 2 # tab-width: 4 # End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x0002 0x03 0x0003 0x04 0x0004 0x05 0x0005 0x06 0x0006 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0A 0x000A 0x0B 0x000B 0x0C 0x000C 0x0D 0x000D 0x0E 0x000E 0x0F 0x000F 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x0014 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x0019 0x1A 0x001A 0x1B 0x001B 0x1C 0x001C 0x1D 0x001D 0x1E 0x001E 0x1F 0x001F 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2A 0x002A 0x2B 0x002B 0x2C 0x002C 0x2D 0x002D 0x2E 0x002E 0x2F 0x002F 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3A 0x003A 0x3B 0x003B 0x3C 0x003C 0x3D 0x003D 0x3E 0x003E 0x3F 0x003F 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4A 0x004A 0x4B 0x004B 0x4C 0x004C 0x4D 0x004D 0x4E 0x004E 0x4F 0x004F 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5A 0x005A 0x5B 0x005B 0x5C 0x005C 0x5D 0x005D 0x5E 0x005E 0x5F 0x005F 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6A 0x006A 0x6B 0x006B 0x6C 0x006C 0x6D 0x006D 0x6E 0x006E 0x6F 0x006F 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7A 0x007A 0x7B 0x007B 0x7C 0x007C 0x7D 0x007D 0x7E 0x007E 0x7F 0x007F libintl-perl-1.26/tests/02utf-8.t000644 000765 000024 00000005636 12511127523 016756 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; BEGIN { plan tests => 5; } use Locale::Recode; sub int2utf8; my $codes = {}; foreach (0 .. 0xcfff # 0 .. 0x11_000, # 0x10_000 .. 0x11_000, # 0x200_000 .. 0x201_000, # :-( # Not supported by Perl 5.6 # 0x4_000_000 .. 0x4_001_000, # :-( # Not supported by Perl 5.6 ) { $codes->{$_} = int2utf8 $_; } my $cd_int = Locale::Recode->new (from => 'UTF-8', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'UTF-8'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($ucs4, $outbuf) = each %$codes) { my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs4) { $result_int = 0; last; } } ok $result_int; # Convert from internal representation. my $result_rev = 1; if (1) { # FIXME: This test only succeeds with use bytes in Perl >= 5.8.0. # However, this will fail with Perl <= Perl 5.6.0. :-( # FIXME: Is it really fixed now? while (my ($ucs4, $code) = each %$codes) { my $outbuf = [ $ucs4 ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code eq $outbuf) { $result_rev = 0; last; } } } ok $result_rev; # Check handling of unknown characters. This assumes that the # character set is a subset of US-ASCII. my $test_string1 = "\xffSupergirl\xff"; $cd_rev = Locale::Recode->new (from => 'ASCII', to => 'UTF-8', ); $result_rev = $cd_rev->recode ($test_string1); ok $result_rev && $test_string1 eq "�Supergirl�"; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } # Local Variables: # mode: perl # perl-indent-level: 4 # perl-continued-statement-offset: 4 # perl-continued-brace-offset: 0 # perl-brace-offset: -4 # perl-brace-imaginary-offset: 0 # perl-label-offset: -4 # cperl-indent-level: 4 # cperl-continued-statement-offset: 2 # tab-width: 4 # End: libintl-perl-1.26/tests/02viscii.t000644 000765 000024 00000014376 12511127523 017302 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 # vim: syntax=perl use strict; use Test; BEGIN { plan tests => 7; } use Locale::Recode; sub int2utf8; my $local2ucs = {}; my $ucs2local = {}; while () { my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; $local2ucs->{$code} = $ucs; $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; } my $cd_int = Locale::Recode->new (from => 'VISCII', to => 'INTERNAL'); ok !$cd_int->getError; my $cd_utf8 = Locale::Recode->new (from => 'VISCII', to => 'UTF-8'); ok !$cd_utf8->getError; my $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'VISCII'); ok !$cd_rev->getError; # Convert into internal representation. my $result_int = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_int->recode ($outbuf); unless ($result && $outbuf->[0] == $ucs) { $result_int = 0; last; } } ok $result_int; # Convert to UTF-8. my $result_utf8 = 1; while (my ($code, $ucs) = each %$local2ucs) { my $outbuf = chr $code; my $result = $cd_utf8->recode ($outbuf); unless ($result && $outbuf eq int2utf8 $ucs) { $result_utf8 = 0; last; } } ok $result_utf8; # Convert from internal representation. my $result_rev = 1; while (my ($ucs, $code) = each %$ucs2local) { my $outbuf = [ $ucs ]; my $result = $cd_rev->recode ($outbuf); unless ($result && $code == ord $outbuf) { $result_int = 0; last; } } ok $result_int; # Check handling of unknown characters. my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; $test_string1->[0] = 0xad0be; $test_string1->[-1] = 0xad0be; my $test_string2 = [ unpack 'c*', 'Supergirl' ]; my $unknown = "\x3f"; # Unknown character! $cd_rev = Locale::Recode->new (from => 'INTERNAL', to => 'VISCII', ) && $cd_rev->recode ($test_string1) && $cd_rev->recode ($test_string2) && ($test_string2 = $unknown . $test_string2 . $unknown); ok $test_string1 eq $test_string2; sub int2utf8 { my $ucs4 = shift; if ($ucs4 <= 0x7f) { return chr $ucs4; } elsif ($ucs4 <= 0x7ff) { return pack ("C2", (0xc0 | (($ucs4 >> 6) & 0x1f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0xffff) { return pack ("C3", (0xe0 | (($ucs4 >> 12) & 0xf)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x1fffff) { return pack ("C4", (0xf0 | (($ucs4 >> 18) & 0x7)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } elsif ($ucs4 <= 0x3ffffff) { return pack ("C5", (0xf0 | (($ucs4 >> 24) & 0x3)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } else { return pack ("C6", (0xf0 | (($ucs4 >> 30) & 0x3)), (0x80 | (($ucs4 >> 24) & 0x1)), (0x80 | (($ucs4 >> 18) & 0x3f)), (0x80 | (($ucs4 >> 12) & 0x3f)), (0x80 | (($ucs4 >> 6) & 0x3f)), (0x80 | ($ucs4 & 0x3f))); } } #Local Variables: #mode: perl #perl-indent-level: 4 #perl-continued-statement-offset: 4 #perl-continued-brace-offset: 0 #perl-brace-offset: -4 #perl-brace-imaginary-offset: 0 #perl-label-offset: -4 #tab-width: 4 #End: __DATA__ 0x00 0x0000 0x01 0x0001 0x02 0x1eb2 0x03 0x0003 0x04 0x0004 0x05 0x1eb4 0x06 0x1eaa 0x07 0x0007 0x08 0x0008 0x09 0x0009 0x0a 0x000a 0x0b 0x000b 0x0c 0x000c 0x0d 0x000d 0x0e 0x000e 0x0f 0x000f 0x10 0x0010 0x11 0x0011 0x12 0x0012 0x13 0x0013 0x14 0x1ef6 0x15 0x0015 0x16 0x0016 0x17 0x0017 0x18 0x0018 0x19 0x1ef8 0x1a 0x001a 0x1b 0x001b 0x1c 0x001c 0x1d 0x001d 0x1e 0x1ef4 0x1f 0x001f 0x20 0x0020 0x21 0x0021 0x22 0x0022 0x23 0x0023 0x24 0x0024 0x25 0x0025 0x26 0x0026 0x27 0x0027 0x28 0x0028 0x29 0x0029 0x2a 0x002a 0x2b 0x002b 0x2c 0x002c 0x2d 0x002d 0x2e 0x002e 0x2f 0x002f 0x30 0x0030 0x31 0x0031 0x32 0x0032 0x33 0x0033 0x34 0x0034 0x35 0x0035 0x36 0x0036 0x37 0x0037 0x38 0x0038 0x39 0x0039 0x3a 0x003a 0x3b 0x003b 0x3c 0x003c 0x3d 0x003d 0x3e 0x003e 0x3f 0x003f 0x40 0x0040 0x41 0x0041 0x42 0x0042 0x43 0x0043 0x44 0x0044 0x45 0x0045 0x46 0x0046 0x47 0x0047 0x48 0x0048 0x49 0x0049 0x4a 0x004a 0x4b 0x004b 0x4c 0x004c 0x4d 0x004d 0x4e 0x004e 0x4f 0x004f 0x50 0x0050 0x51 0x0051 0x52 0x0052 0x53 0x0053 0x54 0x0054 0x55 0x0055 0x56 0x0056 0x57 0x0057 0x58 0x0058 0x59 0x0059 0x5a 0x005a 0x5b 0x005b 0x5c 0x005c 0x5d 0x005d 0x5e 0x005e 0x5f 0x005f 0x60 0x0060 0x61 0x0061 0x62 0x0062 0x63 0x0063 0x64 0x0064 0x65 0x0065 0x66 0x0066 0x67 0x0067 0x68 0x0068 0x69 0x0069 0x6a 0x006a 0x6b 0x006b 0x6c 0x006c 0x6d 0x006d 0x6e 0x006e 0x6f 0x006f 0x70 0x0070 0x71 0x0071 0x72 0x0072 0x73 0x0073 0x74 0x0074 0x75 0x0075 0x76 0x0076 0x77 0x0077 0x78 0x0078 0x79 0x0079 0x7a 0x007a 0x7b 0x007b 0x7c 0x007c 0x7d 0x007d 0x7e 0x007e 0x7f 0x007f 0x80 0x1ea0 0x81 0x1eae 0x82 0x1eb0 0x83 0x1eb6 0x84 0x1ea4 0x85 0x1ea6 0x86 0x1ea8 0x87 0x1eac 0x88 0x1ebc 0x89 0x1eb8 0x8a 0x1ebe 0x8b 0x1ec0 0x8c 0x1ec2 0x8d 0x1ec4 0x8e 0x1ec6 0x8f 0x1ed0 0x90 0x1ed2 0x91 0x1ed4 0x92 0x1ed6 0x93 0x1ed8 0x94 0x1ee2 0x95 0x1eda 0x96 0x1edc 0x97 0x1ede 0x98 0x1eca 0x99 0x1ece 0x9a 0x1ecc 0x9b 0x1ec8 0x9c 0x1ee6 0x9d 0x0168 0x9e 0x1ee4 0x9f 0x1ef2 0xa0 0x00d5 0xa1 0x1eaf 0xa2 0x1eb1 0xa3 0x1eb7 0xa4 0x1ea5 0xa5 0x1ea7 0xa6 0x1ea9 0xa7 0x1ead 0xa8 0x1ebd 0xa9 0x1eb9 0xaa 0x1ebf 0xab 0x1ec1 0xac 0x1ec3 0xad 0x1ec5 0xae 0x1ec7 0xaf 0x1ed1 0xb0 0x1ed3 0xb1 0x1ed5 0xb2 0x1ed7 0xb3 0x1ee0 0xb4 0x01a0 0xb5 0x1ed9 0xb6 0x1edd 0xb7 0x1edf 0xb8 0x1ecb 0xb9 0x1ef0 0xba 0x1ee8 0xbb 0x1eea 0xbc 0x1eec 0xbd 0x01a1 0xbe 0x1edb 0xbf 0x01af 0xc0 0x00c0 0xc1 0x00c1 0xc2 0x00c2 0xc3 0x00c3 0xc4 0x1ea2 0xc5 0x0102 0xc6 0x1eb3 0xc7 0x1eb5 0xc8 0x00c8 0xc9 0x00c9 0xca 0x00ca 0xcb 0x1eba 0xcc 0x00cc 0xcd 0x00cd 0xce 0x0128 0xcf 0x1ef3 0xd0 0x0110 0xd1 0x1ee9 0xd2 0x00d2 0xd3 0x00d3 0xd4 0x00d4 0xd5 0x1ea1 0xd6 0x1ef7 0xd7 0x1eeb 0xd8 0x1eed 0xd9 0x00d9 0xda 0x00da 0xdb 0x1ef9 0xdc 0x1ef5 0xdd 0x00dd 0xde 0x1ee1 0xdf 0x01b0 0xe0 0x00e0 0xe1 0x00e1 0xe2 0x00e2 0xe3 0x00e3 0xe4 0x1ea3 0xe5 0x0103 0xe6 0x1eef 0xe7 0x1eab 0xe8 0x00e8 0xe9 0x00e9 0xea 0x00ea 0xeb 0x1ebb 0xec 0x00ec 0xed 0x00ed 0xee 0x0129 0xef 0x1ec9 0xf0 0x0111 0xf1 0x1ef1 0xf2 0x00f2 0xf3 0x00f3 0xf4 0x00f4 0xf5 0x00f5 0xf6 0x1ecf 0xf7 0x1ecd 0xf8 0x1ee5 0xf9 0x00f9 0xfa 0x00fa 0xfb 0x0169 0xfc 0x1ee7 0xfd 0x00fd 0xfe 0x1ee3 0xff 0x1eee libintl-perl-1.26/tests/03_tester_david_pp.t000644 000765 000024 00000004263 12716413540 021326 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 6; use Locale::Messages qw (LC_MESSAGES bindtextdomain textdomain dcgettext dgettext gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # Normal lookup. skip $missing_locale, dcgettext (existing => 'View', LC_MESSAGES), 'Anzeigen'; # Can we retrieve a translation with the gettext glue? skip $missing_locale, dcgettext (existing => "Which folder would you like to view?\004View", LC_MESSAGES), 'Ansicht'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03_tester_david_xs.t000644 000765 000024 00000004263 12716413550 021342 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 6; use Locale::Messages qw (LC_MESSAGES bindtextdomain textdomain dcgettext dgettext gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # Normal lookup. skip $missing_locale, dcgettext (existing => 'View', LC_MESSAGES), 'Anzeigen'; # Can we retrieve a translation with the gettext glue? skip $missing_locale, dcgettext (existing => "Which folder would you like to view?\004View", LC_MESSAGES), 'Ansicht'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03bind_textdomain_codeset_pp.t000644 000765 000024 00000005032 12727470553 023374 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 14; use Locale::Messages qw (bindtextdomain textdomain bind_textdomain_codeset gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir) eq File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $textdomain, $bound_domain; my $bound_codeset = bind_textdomain_codeset $textdomain => 'ISO-8859-1'; ok defined $bound_codeset; ok $bound_codeset, 'ISO-8859-1'; skip $missing_locale, gettext ('January'), 'Jnner'; skip $missing_locale, gettext ('March'), 'Mrz'; # This will cause GNU gettext to re-load our catalog. $bound_dir = bindtextdomain $textdomain => $locale_dir . '/../LocaleData'; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ("$locale_dir/../LocaleData")); $bound_codeset = bind_textdomain_codeset $textdomain => 'UTF-8'; ok defined $bound_codeset; ok uc $bound_codeset, 'UTF-8'; skip $missing_locale, gettext ('January'), 'Jänner'; skip $missing_locale, gettext ('March'), 'März'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03bind_textdomain_codeset_xs.t000644 000765 000024 00000005032 12727470646 023412 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 14; use Locale::Messages qw (bindtextdomain textdomain bind_textdomain_codeset gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir) eq File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $textdomain, $bound_domain; my $bound_codeset = bind_textdomain_codeset $textdomain => 'ISO-8859-1'; ok defined $bound_codeset; ok $bound_codeset, 'ISO-8859-1'; skip $missing_locale, gettext ('January'), 'Jnner'; skip $missing_locale, gettext ('March'), 'Mrz'; # This will cause GNU gettext to re-load our catalog. $bound_dir = bindtextdomain $textdomain => $locale_dir . '/../LocaleData'; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ("$locale_dir/../LocaleData")); $bound_codeset = bind_textdomain_codeset $textdomain => 'UTF-8'; ok defined $bound_codeset; ok uc $bound_codeset, 'UTF-8'; skip $missing_locale, gettext ('January'), 'Jänner'; skip $missing_locale, gettext ('March'), 'März'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03bind_textdomain_filter_pp.t000644 000765 000024 00000003700 12511127523 023216 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 7; use Locale::Messages qw (LC_MESSAGES textdomain bind_textdomain_filter gettext dgettext dcgettext ngettext dngettext dcngettext); BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } textdomain 'bogus'; my $gettext = gettext ('foobar'); my $dgettext = dgettext (bogus => 'foobar'); my $dcgettext = dcgettext (bogus => 'foobar', LC_MESSAGES); my $ngettext = ngettext ('foobar', 'barbaz', 1); my $dngettext = dngettext (bogus => 'foobar', 'barbaz', 1); my $dcngettext = dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES); package MyPackage; use strict; sub new { bless {}, shift; } sub filterMethod { my ($self, $string) = @_; return 'prefix - ' . $string; }; package main; sub wrapper { my ($string, $obj) = @_; $obj->filterMethod ($string); } my $obj = MyPackage->new; ok (bind_textdomain_filter ('bogus', \&wrapper, $obj)); my $prefix = 'prefix - '; ok "$prefix$gettext", gettext ('foobar'); ok "$prefix$dgettext", dgettext (bogus => 'foobar'); ok "$prefix$dcgettext", dcgettext (bogus => 'foobar', LC_MESSAGES); ok "$prefix$ngettext", ngettext ('foobar', 'barbaz', 1); ok "$prefix$dngettext", dngettext (bogus => 'foobar', 'barbaz', 1); ok "$prefix$dcngettext", dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES); __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03bind_textdomain_filter_xs.t000644 000765 000024 00000003700 12511127523 023231 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 7; use Locale::Messages qw (LC_MESSAGES textdomain bind_textdomain_filter gettext dgettext dcgettext ngettext dngettext dcngettext); BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } textdomain 'bogus'; my $gettext = gettext ('foobar'); my $dgettext = dgettext (bogus => 'foobar'); my $dcgettext = dcgettext (bogus => 'foobar', LC_MESSAGES); my $ngettext = ngettext ('foobar', 'barbaz', 1); my $dngettext = dngettext (bogus => 'foobar', 'barbaz', 1); my $dcngettext = dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES); package MyPackage; use strict; sub new { bless {}, shift; } sub filterMethod { my ($self, $string) = @_; return 'prefix - ' . $string; }; package main; sub wrapper { my ($string, $obj) = @_; $obj->filterMethod ($string); } my $obj = MyPackage->new; ok (bind_textdomain_filter ('bogus', \&wrapper, $obj)); my $prefix = 'prefix - '; ok "$prefix$gettext", gettext ('foobar'); ok "$prefix$dgettext", dgettext (bogus => 'foobar'); ok "$prefix$dcgettext", dcgettext (bogus => 'foobar', LC_MESSAGES); ok "$prefix$ngettext", ngettext ('foobar', 'barbaz', 1); ok "$prefix$dngettext", dngettext (bogus => 'foobar', 'barbaz', 1); ok "$prefix$dcngettext", dcngettext (bogus => 'foobar', 'barbaz', 1, LC_MESSAGES); __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03bindtextdomain_pp.t000644 000765 000024 00000002524 12511127523 021515 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 12; use Locale::Messages qw (bindtextdomain); BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $bound_domain = bindtextdomain 'existing'; ok defined $bound_domain; ok length $bound_domain; $bound_domain = bindtextdomain 'existing', '.'; ok defined $bound_domain; ok $bound_domain, '.'; $bound_domain = bindtextdomain 'existing'; ok defined $bound_domain; ok $bound_domain, '.'; $bound_domain = bindtextdomain 'not_existing'; ok defined $bound_domain; ok length $bound_domain; $bound_domain = bindtextdomain 'not_existing', '.'; ok defined $bound_domain; ok $bound_domain, '.'; $bound_domain = bindtextdomain 'not_existing'; ok defined $bound_domain; ok $bound_domain, '.'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03bindtextdomain_xs.t000644 000765 000024 00000002524 12511127523 021530 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 12; use Locale::Messages qw (bindtextdomain); BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $bound_domain = bindtextdomain 'existing'; ok defined $bound_domain; ok length $bound_domain; $bound_domain = bindtextdomain 'existing', '.'; ok defined $bound_domain; ok $bound_domain, '.'; $bound_domain = bindtextdomain 'existing'; ok defined $bound_domain; ok $bound_domain, '.'; $bound_domain = bindtextdomain 'not_existing'; ok defined $bound_domain; ok length $bound_domain; $bound_domain = bindtextdomain 'not_existing', '.'; ok defined $bound_domain; ok $bound_domain, '.'; $bound_domain = bindtextdomain 'not_existing'; ok defined $bound_domain; ok $bound_domain, '.'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcgettext_pp.t000644 000765 000024 00000004564 12727470750 020521 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 11; use Locale::Messages qw (bindtextdomain dcgettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); skip $missing_locale, 'Dezember', dcgettext (existing => 'December', LC_MESSAGES); ok 'September', dcgettext (existing => 'September', LC_MESSAGES); ok 'Not translated', dcgettext (existing => 'Not translated', LC_MESSAGES); skip $missing_locale, 'Jnner', dcgettext (existing => 'January', LC_MESSAGES); skip $missing_locale, 'Montag', dcgettext (additional => 'Monday', LC_MESSAGES); ok 'Not translated', dcgettext (additional => 'Not translated', LC_MESSAGES); skip $missing_locale, dcgettext (additional => 'Saturday', LC_MESSAGES), 'Sonnabend'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcgettext_xs.t000644 000765 000024 00000004564 12727470760 020535 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 11; use Locale::Messages qw (bindtextdomain dcgettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); skip $missing_locale, 'Dezember', dcgettext (existing => 'December', LC_MESSAGES); ok 'September', dcgettext (existing => 'September', LC_MESSAGES); ok 'Not translated', dcgettext (existing => 'Not translated', LC_MESSAGES); skip $missing_locale, 'Jnner', dcgettext (existing => 'January', LC_MESSAGES); skip $missing_locale, 'Montag', dcgettext (additional => 'Monday', LC_MESSAGES); ok 'Not translated', dcgettext (additional => 'Not translated', LC_MESSAGES); skip $missing_locale, dcgettext (additional => 'Saturday', LC_MESSAGES), 'Sonnabend'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcngettext_pp.t000644 000765 000024 00000007436 12511127523 020664 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 85; use Locale::Messages qw (bindtextdomain dcngettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; my @strings = qw (Singular Plural); for (0 .. 9) { my $translation = dcngettext (not_here => $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } for (0 .. 9) { my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES); skip $missing_locale, $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl'; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); for (0 .. 9) { my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES); ok $translation, $_ == 1 ? 'Singular' : 'Plural'; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale; for (0 .. 40) { my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus $plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcngettext_xs.t000644 000765 000024 00000007436 12511127523 020677 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 85; use Locale::Messages qw (bindtextdomain dcngettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; my @strings = qw (Singular Plural); for (0 .. 9) { my $translation = dcngettext (not_here => $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } for (0 .. 9) { my $translation = dcngettext (existing => $strings[0], $strings[1], $_, LC_MESSAGES); skip $missing_locale, $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl'; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); for (0 .. 9) { my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES); ok $translation, $_ == 1 ? 'Singular' : 'Plural'; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale; for (0 .. 40) { my $translation = dcngettext (additional => $strings[0], $strings[1], $_, LC_MESSAGES); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus $plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcnpgettext_pp.t000644 000765 000024 00000010225 12511127523 021032 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 95; use Locale::Messages qw (bindtextdomain dcnpgettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; # make sure it works with distinct key (where context doesn't matter) my $context3 = "Context here (3)"; my @strings3 = ("Singular 3", "Plural 3"); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dcnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3'; ok $translation, $expected; } # not try a msgid that matches existing one my $context = "Context here (2)"; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dcnpgettext (not_here => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; for (0 .. 9) { my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2'; skip $missing_locale, $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); for (0 .. 40) { my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus 2:$plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcnpgettext_xs.t000644 000765 000024 00000010225 12511127523 021045 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 95; use Locale::Messages qw (bindtextdomain dcnpgettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; # make sure it works with distinct key (where context doesn't matter) my $context3 = "Context here (3)"; my @strings3 = ("Singular 3", "Plural 3"); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dcnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3'; ok $translation, $expected; } # not try a msgid that matches existing one my $context = "Context here (2)"; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dcnpgettext (not_here => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; for (0 .. 9) { my $translation = dcnpgettext (existing => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2'; skip $missing_locale, $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); for (0 .. 40) { my $translation = dcnpgettext (additional => $context, $strings[0], $strings[1], $_, LC_MESSAGES); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus 2:$plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcpgettext_pp.t000644 000765 000024 00000005114 12716414155 020664 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 10; use Locale::Messages qw (bindtextdomain dcgettext dcpgettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # make sure dgettext and dpgettext return diff values skip $missing_locale, 'Anzeigen', dcgettext (existing => 'View', LC_MESSAGES); skip $missing_locale, 'Ansicht', dcpgettext (existing => 'Which folder would you like to view?','View', LC_MESSAGES); skip $missing_locale, 'Not translated', dcpgettext (existing => 'none', 'Not translated', LC_MESSAGES); skip $missing_locale, 'Eine andere Ansicht mit Kontext', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES); skip $missing_locale, 'Not translated', dcpgettext (additional => 'none', 'Not translated', LC_MESSAGES); skip $missing_locale, 'Eine andere Ansicht mit Kontext', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES); __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dcpgettext_xs.t000644 000765 000024 00000005114 12716414172 020676 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 10; use Locale::Messages qw (bindtextdomain dcgettext dcpgettext LC_MESSAGES); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # make sure dgettext and dpgettext return diff values skip $missing_locale, 'Anzeigen', dcgettext (existing => 'View', LC_MESSAGES); skip $missing_locale, 'Ansicht', dcpgettext (existing => 'Which folder would you like to view?','View', LC_MESSAGES); skip $missing_locale, 'Not translated', dcpgettext (existing => 'none', 'Not translated', LC_MESSAGES); skip $missing_locale, 'Eine andere Ansicht mit Kontext', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES); skip $missing_locale, 'Not translated', dcpgettext (additional => 'none', 'Not translated', LC_MESSAGES); skip $missing_locale, 'Eine andere Ansicht mit Kontext', dcpgettext (additional => 'Context', 'Another View', LC_MESSAGES); __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dgettext_pp.t000644 000765 000024 00000004403 12727471051 020341 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 11; use Locale::Messages qw (bindtextdomain dgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); skip $missing_locale, 'Dezember', dgettext (existing => 'December'); ok 'September', dgettext (existing => 'September'); ok 'Not translated', dgettext (existing => 'Not translated'); skip $missing_locale, 'Jnner', dgettext (existing => 'January'); skip $missing_locale, 'Montag', dgettext (additional => 'Monday'); ok dgettext (additional => 'Not translated'), 'Not translated'; skip $missing_locale, dgettext (additional => 'Saturday'), 'Sonnabend'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dgettext_xs.t000644 000765 000024 00000004403 12727471057 020362 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 11; use Locale::Messages qw (bindtextdomain dgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); skip $missing_locale, 'Dezember', dgettext (existing => 'December'); ok 'September', dgettext (existing => 'September'); ok 'Not translated', dgettext (existing => 'Not translated'); skip $missing_locale, 'Jnner', dgettext (existing => 'January'); skip $missing_locale, 'Montag', dgettext (additional => 'Monday'); ok dgettext (additional => 'Not translated'), 'Not translated'; skip $missing_locale, dgettext (additional => 'Saturday'), 'Sonnabend'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dngettext_pp.t000644 000765 000024 00000007315 12511127523 020515 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 85; use Locale::Messages qw (bindtextdomain dngettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; my @strings = qw (Singular Plural); for (0 .. 9) { my $translation = dngettext (not_here => $strings[0], $strings[1], $_); ok $translation, $_ == 1 ? 'Singular' : 'Plural'; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dngettext (existing => $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } for (0 .. 9) { my $translation = dngettext (existing => $strings[0], $strings[1], $_); skip $missing_locale, $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl'; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); for (0 .. 9) { my $translation = dngettext (additional => $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale; for (0 .. 40) { my $translation = dngettext (additional => $strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus $plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dngettext_xs.t000644 000765 000024 00000007315 12511127523 020530 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 85; use Locale::Messages qw (bindtextdomain dngettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; my @strings = qw (Singular Plural); for (0 .. 9) { my $translation = dngettext (not_here => $strings[0], $strings[1], $_); ok $translation, $_ == 1 ? 'Singular' : 'Plural'; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dngettext (existing => $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } for (0 .. 9) { my $translation = dngettext (existing => $strings[0], $strings[1], $_); skip $missing_locale, $translation, $_ == 1 ? 'Einzahl' : 'Mehrzahl'; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($locale_dir), File::Spec->catdir ($bound_dir)); for (0 .. 9) { my $translation = dngettext (additional => $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale; for (0 .. 40) { my $translation = dngettext (additional => $strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus $plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dnpgettext_pp.t000644 000765 000024 00000010060 12511127523 020664 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 95; use Locale::Messages qw (bindtextdomain dnpgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; # make sure it works with distinct key (where context doesn't matter) my $context3 = "Context here (3)"; my @strings3 = ("Singular 3", "Plural 3"); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_); my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3'; ok $translation, $expected; } # not try a msgid that matches existing one my $context = "Context here (2)"; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dnpgettext (not_here => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; for (0 .. 9) { my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2'; skip $missing_locale, $expected, $translation; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); for (0 .. 40) { my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus 2:$plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dnpgettext_xs.t000644 000765 000024 00000010060 12511127523 020677 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 95; use Locale::Messages qw (bindtextdomain dnpgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; # make sure it works with distinct key (where context doesn't matter) my $context3 = "Context here (3)"; my @strings3 = ("Singular 3", "Plural 3"); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dnpgettext (not_here => $context3, $strings3[0], $strings3[1], $_); my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3'; ok $translation, $expected; } # not try a msgid that matches existing one my $context = "Context here (2)"; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = dnpgettext (not_here => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; for (0 .. 9) { my $translation = dnpgettext (existing => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2'; skip $missing_locale, $expected, $translation; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); for (0 .. 9) { my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); for (0 .. 40) { my $translation = dnpgettext (additional => $context, $strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus 2:$plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dpgettext_pp.t000644 000765 000024 00000004672 12716414512 020526 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 9; use Locale::Messages qw (bindtextdomain gettext dgettext dpgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # make sure dgettext and dpgettext return diff values skip $missing_locale, dgettext (existing => 'View'), 'Anzeigen'; skip $missing_locale, dpgettext (existing => 'Which folder would you like to view?', 'View'), 'Ansicht'; skip $missing_locale, dpgettext (existing => 'none', 'Not translated'), 'Not translated'; skip $missing_locale, dpgettext (additional => 'Context', 'Another View'), 'Eine andere Ansicht mit Kontext'; skip $missing_locale, dpgettext (additional => 'none', 'Not translated'), 'Not translated'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03dpgettext_xs.t000644 000765 000024 00000004672 12716414515 020544 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 9; use Locale::Messages qw (bindtextdomain gettext dgettext dpgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^/\\]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain existing => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); $bound_dir = bindtextdomain additional => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # make sure dgettext and dpgettext return diff values skip $missing_locale, dgettext (existing => 'View'), 'Anzeigen'; skip $missing_locale, dpgettext (existing => 'Which folder would you like to view?', 'View'), 'Ansicht'; skip $missing_locale, dpgettext (existing => 'none', 'Not translated'), 'Not translated'; skip $missing_locale, dpgettext (additional => 'Context', 'Another View'), 'Eine andere Ansicht mit Kontext'; skip $missing_locale, dpgettext (additional => 'none', 'Not translated'), 'Not translated'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03environment_pp.t000644 000765 000024 00000042014 12511127523 021046 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 85; use Locale::Messages qw (nl_putenv bindtextdomain textdomain gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } # Clean environment first. foreach my $var (keys %ENV) { if ('LC_' eq substr $var, 0, 3) { nl_putenv "$var"; } } nl_putenv "LC_ALL=de_DE"; nl_putenv "LC_MESSAGES=de_DE"; my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_DE missing'; if (!$missing_locale && $0 =~ /_xs\.t$/) { $missing_locale = $ENV{GNU_GETTEXT_COMPATIBILITY} ? '' : 'compatibility tests not activated'; } Locale::Messages::setlocale (POSIX::LC_ALL() => 'C'); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03environment_xs.t000644 000765 000024 00000042014 12511127523 021061 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 85; use Locale::Messages qw (nl_putenv bindtextdomain textdomain gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } # Clean environment first. foreach my $var (keys %ENV) { if ('LC_' eq substr $var, 0, 3) { nl_putenv "$var"; } } nl_putenv "LC_ALL=de_DE"; nl_putenv "LC_MESSAGES=de_DE"; my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_DE missing'; if (!$missing_locale && $0 =~ /_xs\.t$/) { $missing_locale = $ENV{GNU_GETTEXT_COMPATIBILITY} ? '' : 'compatibility tests not activated'; } Locale::Messages::setlocale (POSIX::LC_ALL() => 'C'); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=C'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=C'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=C'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=C'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'May'; nl_putenv 'LANGUAGE=de_DE'; nl_putenv 'LANG=de_DE'; nl_putenv 'LC_MESSAGES=de_DE'; nl_putenv 'LC_ALL=de_DE'; Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('May'), 'Mai'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03gettext_dumb.t000644 000765 000024 00000004744 12511127523 020506 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 20; use Locale::Messages qw (bindtextdomain textdomain gettext nl_putenv); use Locale::gettext_pp; use POSIX; use File::Spec; BEGIN { my $selected = Locale::Messages->select_package ('gettext_dumb'); if (!$selected || $selected ne 'gettext_dumb') { print "1..1\nnot ok # Locale::gettext_dumb does not compile: $@!\n"; exit 111; } plan tests => NUM_TESTS; } ok Locale::gettext_dumb::LC_CTYPE(), Locale::gettext_pp::LC_CTYPE(); ok Locale::gettext_dumb::LC_NUMERIC(), Locale::gettext_pp::LC_NUMERIC(); ok Locale::gettext_dumb::LC_TIME(), Locale::gettext_pp::LC_TIME(); ok Locale::gettext_dumb::LC_COLLATE(), Locale::gettext_pp::LC_COLLATE(); ok Locale::gettext_dumb::LC_MONETARY(), Locale::gettext_pp::LC_MONETARY(); ok Locale::gettext_dumb::LC_MESSAGES(), Locale::gettext_pp::LC_MESSAGES(); ok Locale::gettext_dumb::LC_ALL(), Locale::gettext_pp::LC_ALL(); # Unset all environment variables and reset the locale to POSIX. nl_putenv "MESSAGE_CATALOGS"; nl_putenv "LANGUAGE"; nl_putenv "LANG"; nl_putenv "LC_ALL"; nl_putenv "LC_MESSAGES"; Locale::Messages::setlocale (POSIX::LC_ALL(), "POSIX"); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; # No translation. ok gettext "December", "December"; # Set LC_MESSAGES. nl_putenv "LC_MESSAGES=xy_XY"; ok gettext "December", "Dezember"; ok gettext "February", "Feber"; # Set LANG. nl_putenv "LANG=C"; ok gettext "December", "December"; nl_putenv "LANG=xy_XY"; nl_putenv "LC_MESSAGES"; ok gettext "December", "Dezember"; # Set LC_ALL. nl_putenv "LC_ALL=C"; ok gettext "December", "December"; nl_putenv "LC_ALL=xy_XY"; nl_putenv "LANG"; ok gettext "December", "Dezember"; # Set LANGUAGE. nl_putenv "LANGUAGE=C"; ok gettext "December", "December"; nl_putenv "LANGUAGE=xy_XY"; nl_putenv "LC_ALL"; ok gettext "December", "Dezember"; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03gettext_pp.t000644 000765 000024 00000004127 12727471213 020200 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 8; use Locale::Messages qw (bindtextdomain textdomain gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; # Default case. skip $missing_locale, gettext ('December'), 'Dezember'; # msgid eq msgstr. ok gettext ('September'), 'September'; # Unknown. ok gettext ('Not translated'), 'Not translated'; # Special translation for Austrian German. skip $missing_locale, gettext ('January'), 'Jnner'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03gettext_xs.t000644 000765 000024 00000004127 12727471224 020215 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 8; use Locale::Messages qw (bindtextdomain textdomain gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; # Default case. skip $missing_locale, gettext ('December'), 'Dezember'; # msgid eq msgstr. ok gettext ('September'), 'September'; # Unknown. ok gettext ('Not translated'), 'Not translated'; # Special translation for Austrian German. skip $missing_locale, gettext ('January'), 'Jnner'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03language_pp.t000644 000765 000024 00000005650 12511127523 020272 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 8; use Locale::Messages qw (bindtextdomain textdomain gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } # Clean environment first. foreach my $var (keys %ENV) { if ('LC_' eq substr $var, 0, 3) { Locale::Messages::nl_putenv ("$var"); } } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); # Actually both de_AT and de are required. We assume here that # de will be installed, too, if de_AT is. This test does not # use Locale::Util::set_locale() for setting the locale, and # that is on purpose. my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; Locale::Messages::setlocale (POSIX::LC_ALL() => 'C'); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANG=whatever"); Locale::Messages::nl_putenv ("LC_ALL=de_DE"); Locale::Messages::nl_putenv ("LC_MESSAGES=whatever"); Locale::Messages::nl_putenv ("LANGUAGE=ab_CD:ef_GH:de_AT:de"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL(), ''); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; # Austrian German has precedence. skip $missing_locale, gettext ('January'), 'Jnner'; my $translation = gettext ('January'); Locale::Messages::nl_putenv ("LANGUAGE=ab_CD:ef_GH:de:de_AT"); skip $missing_locale, gettext ('February'), 'Februar'; # not 'Feber'! # Check that LC_ALL works. Locale::Messages::nl_putenv ("LANGUAGE"); Locale::Messages::nl_putenv ("LC_ALL=de_DE.utf-8"); Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('February'), 'Februar'; # But LANGUAGE has precedence. Locale::Messages::nl_putenv ("LANGUAGE=de_AT.utf-8"); Locale::Messages::nl_putenv ("LC_ALL=de_DE.utf-8"); Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('February'), 'Feber'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03language_xs.t000644 000765 000024 00000005650 12511127523 020305 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 8; use Locale::Messages qw (bindtextdomain textdomain gettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } # Clean environment first. foreach my $var (keys %ENV) { if ('LC_' eq substr $var, 0, 3) { Locale::Messages::nl_putenv ("$var"); } } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); # Actually both de_AT and de are required. We assume here that # de will be installed, too, if de_AT is. This test does not # use Locale::Util::set_locale() for setting the locale, and # that is on purpose. my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; Locale::Messages::setlocale (POSIX::LC_ALL() => 'C'); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANG=whatever"); Locale::Messages::nl_putenv ("LC_ALL=de_DE"); Locale::Messages::nl_putenv ("LC_MESSAGES=whatever"); Locale::Messages::nl_putenv ("LANGUAGE=ab_CD:ef_GH:de_AT:de"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL(), ''); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; # Austrian German has precedence. skip $missing_locale, gettext ('January'), 'Jnner'; my $translation = gettext ('January'); Locale::Messages::nl_putenv ("LANGUAGE=ab_CD:ef_GH:de:de_AT"); skip $missing_locale, gettext ('February'), 'Februar'; # not 'Feber'! # Check that LC_ALL works. Locale::Messages::nl_putenv ("LANGUAGE"); Locale::Messages::nl_putenv ("LC_ALL=de_DE.utf-8"); Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('February'), 'Februar'; # But LANGUAGE has precedence. Locale::Messages::nl_putenv ("LANGUAGE=de_AT.utf-8"); Locale::Messages::nl_putenv ("LC_ALL=de_DE.utf-8"); Locale::Messages::setlocale (POSIX::LC_ALL(), ''); skip $missing_locale, gettext ('February'), 'Feber'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03ngettext_pp.t000644 000765 000024 00000010045 12727471313 020353 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 88; use Locale::Messages qw (bindtextdomain textdomain ngettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; textdomain 'not_here'; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain && $textdomain eq $bound_domain; for (0 .. 9) { my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } for (0 .. 9) { my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Einzahl' : 'Mehrzahl'; skip $missing_locale, $translation, $expected; } $textdomain = 'additional'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; for (0 .. 9) { my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale; for (0 .. 40) { my $translation = ngettext ($strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus $plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03ngettext_xs.t000644 000765 000024 00000010045 12727471330 020365 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 88; use Locale::Messages qw (bindtextdomain textdomain ngettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; textdomain 'not_here'; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($locale_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain && $textdomain eq $bound_domain; for (0 .. 9) { my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } for (0 .. 9) { my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Einzahl' : 'Mehrzahl'; skip $missing_locale, $translation, $expected; } $textdomain = 'additional'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; for (0 .. 9) { my $translation = ngettext ($strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => $setlocale) unless $missing_locale; for (0 .. 40) { my $translation = ngettext ($strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus $plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03npgettext_pp.t000644 000765 000024 00000010410 12511127640 020517 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 109; use Locale::Messages qw (bindtextdomain textdomain npgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; textdomain 'not_here'; # make sure it works with distinct key (where context doesn't matter) my $context3 = "Context here (3)"; my @strings3 = ("Singular 3", "Plural 3"); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = npgettext ($context3, $strings3[0], $strings3[1], $_); my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3'; ok $translation, $expected; } # not try a msgid that matches existing one my $context = "Context here (2)"; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; for (0 .. 9) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; for (0 .. 9) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2'; skip skip $missing_locale, $translation, $expected; } $textdomain = 'additional'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; for (0 .. 9) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); for (0 .. 40) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus 2:$plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03npgettext_xs.t000644 000765 000024 00000010410 12511127646 020540 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 109; use Locale::Messages qw (bindtextdomain textdomain npgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; bindtextdomain not_here => $locale_dir; textdomain 'not_here'; # make sure it works with distinct key (where context doesn't matter) my $context3 = "Context here (3)"; my @strings3 = ("Singular 3", "Plural 3"); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = npgettext ($context3, $strings3[0], $strings3[1], $_); my $expected = $_ == 1 ? 'Singular 3' : 'Plural 3'; ok $translation, $expected; } # not try a msgid that matches existing one my $context = "Context here (2)"; my @strings = qw (Singular Plural); for (0 .. 9) { # Prototype checking fails here if you pass the list @strings. my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; for (0 .. 9) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; for (0 .. 9) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Einzahl 2' : 'Mehrzahl 2'; skip skip $missing_locale, $translation, $expected; } $textdomain = 'additional'; Locale::Messages::nl_putenv ("LANGUAGE=C"); Locale::Messages::nl_putenv ("LC_ALL=C"); Locale::Messages::nl_putenv ("LANG=C"); Locale::Messages::nl_putenv ("LC_MESSAGES=C"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; for (0 .. 9) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $expected = $_ == 1 ? 'Singular' : 'Plural'; ok $translation, $expected; } Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); for (0 .. 40) { my $translation = npgettext ($context, $strings[0], $strings[1], $_); my $plural = ($_ == 1 ? 0 : $_ % 10 == 2 ? 1 : $_ % 10 == 3 || $_ %10 == 4 ? 2 : 3); skip $missing_locale, $translation, "Numerus 2:$plural"; } __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03pgettext_pp.t000644 000765 000024 00000004337 12727471420 020363 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 8; use Locale::Messages qw (bindtextdomain textdomain gettext pgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # Default case. skip $missing_locale, gettext ('View'), 'Anzeigen'; # Default context case. skip $missing_locale, pgettext ('Which folder would you like to view?','View'), 'Ansicht'; # msgid eq msgstr. skip $missing_locale, pgettext ('Which folder would you like to view? (2)','View'), 'View 2'; # Unknown. ok pgettext ('none', 'Not translated'), 'Not translated'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03pgettext_xs.t000644 000765 000024 00000004337 12727471445 020405 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 8; use Locale::Messages qw (bindtextdomain textdomain gettext pgettext); require POSIX; require File::Spec; BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $locale_dir = $0; $locale_dir =~ s,[^\\/]+$,, or $locale_dir = '.'; $locale_dir .= '/LocaleData'; my $textdomain = 'existing'; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); my $bound_dir = bindtextdomain $textdomain => $locale_dir; ok defined $bound_dir; ok (File::Spec->catdir ($bound_dir), File::Spec->catdir ($bound_dir)); my $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; my $missing_locale = 'locale de_AT missing'; my $setlocale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } else { require Locale::Util; $setlocale = Locale::Util::set_locale (POSIX::LC_ALL(), 'de', 'AT'); if ($setlocale && $setlocale =~ /(?:austria|at)/i) { $missing_locale = ''; } } # Default case. skip $missing_locale, gettext ('View'), 'Anzeigen'; # Default context case. skip $missing_locale, pgettext ('Which folder would you like to view?','View'), 'Ansicht'; # msgid eq msgstr. skip $missing_locale, pgettext ('Which folder would you like to view? (2)','View'), 'View 2'; # Unknown. ok pgettext ('none', 'Not translated'), 'Not translated'; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03textdomain_pp.t000644 000765 000024 00000001760 12511127523 020661 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 4; use Locale::Messages qw (textdomain); BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $textdomain = ''; my $bound_domain = textdomain ''; ok defined $bound_domain; ok $bound_domain, 'messages'; $textdomain = 'existing'; $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/03textdomain_xs.t000644 000765 000024 00000001760 12511127523 020674 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 4; use Locale::Messages qw (textdomain); BEGIN { my $package; if ($0 =~ /_pp\.t$/) { $package = 'gettext_pp'; } else { $package = 'gettext_xs'; } my $selected = Locale::Messages->select_package ($package); if ($selected ne $package && 'gettext_xs' eq $package) { print "1..0 # Skip: Locale::$package not available here.\n"; exit 0; } plan tests => NUM_TESTS; } my $textdomain = ''; my $bound_domain = textdomain ''; ok defined $bound_domain; ok $bound_domain, 'messages'; $textdomain = 'existing'; $bound_domain = textdomain $textdomain; ok defined $bound_domain; ok $bound_domain, $textdomain; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/04find_domain_bug.t000644 000765 000024 00000004124 12511127523 021110 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 2; use Locale::Messages; use POSIX; BEGIN { plan tests => NUM_TESTS; } # Jan Kratochvil described the following bug: When using any functions # from Locale::TextDomain with a locale setting for a language that # has no message catalog installed, __find_domain() from Locale::TextDomain # will never look into the directories "LocaleData" again. It # tries to bindtextdomain() to all search directories, and when it # fails to find a translation for the emtpy string (should always be # present), it will assume that this directory is not the one holding # the mo files. # # This can actually only happen, when you switch languages behind the # user's back. Fixed by checking for the presence of _any_ (g)mo file # in the relevant directories. BEGIN { # Force language that is not supported. Locale::Messages::nl_putenv ("LANGUAGE=en_US"); Locale::Messages::nl_putenv ("LC_ALL=en_US"); Locale::Messages::nl_putenv ("LANG=en_US"); Locale::Messages::nl_putenv ("LC_MESSAGES=en_US"); Locale::Messages::nl_putenv ("OUTPUT_CHARSET=iso-8859-1"); Locale::Messages::setlocale (POSIX::LC_ALL() => ''); } # Make sure that LocaleData/ can befound. BEGIN { unshift @INC, $1 if $0 =~ m#(.*)[\\\/]#; } use Locale::TextDomain ('existing'); ok "February" eq __"February"; Locale::Messages::nl_putenv ("LANGUAGE=de_AT"); Locale::Messages::nl_putenv ("LC_ALL=de_AT"); Locale::Messages::nl_putenv ("LANG=de_AT"); Locale::Messages::nl_putenv ("LC_MESSAGES=de_AT"); my $missing_locale = Locale::Messages::setlocale (POSIX::LC_ALL() => '') ? '' : 'locale de_AT missing'; my $locale = Locale::Messages::setlocale (POSIX::LC_ALL() => ''); my $translation = Locale::TextDomain::__("February"); skip $missing_locale, "Feber" eq $translation; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/04russian_plural_function.t000644 000765 000024 00000002470 12511127523 022756 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use Locale::gettext_pp; BEGIN { plan tests => 2006; } sub russian_plural { my $n = shift; my ($plural, $nplurals); $nplurals = 3; $plural = ($n % 10 == 1 && $n % 100 != 11 ? 0 : $n % 10 >= 2 && $n % 10 <= 4 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20) ? 1 : 2); return ($nplurals, $plural ? $plural : 0); } # This test uses private functions of Locale::gettext_pp. Do NOT use this as # an example for your own code. my $code = 'nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2'; my $untainted = Locale::gettext_pp::__untaint_plural_header $code; ok length $untainted; my $plural_function = Locale::gettext_pp::__compile_plural_function $code; ok $plural_function; ok ref $plural_function; ok 'CODE' eq ref $plural_function; foreach my $n (0 .. 1000) { my ($got_nplurals, $got_plural) = $plural_function->($n); my ($wanted_nplurals, $wanted_plural) = russian_plural $n; ok $got_nplurals, $wanted_nplurals, "wanted $wanted_nplurals, got $got_nplurals nplurals for n = $n"; ok $got_plural, $wanted_plural, "wanted plural form #$wanted_nplurals, got #$got_nplurals for n = $n"; print "$n:$got_plural:$wanted_plural\n"; } libintl-perl-1.26/tests/04scalar_noop.t000644 000765 000024 00000001750 12511127523 020306 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 5; use Locale::TextDomain; use POSIX; BEGIN { plan tests => NUM_TESTS; } # When called in scalar context, N__() should return its argument, # not a list. On the other hand, the other noop functions should # simply returns their arguments, see # https://rt.cpan.org/Ticket/Display.html?id=46471 for more. my $scalar; $scalar = scalar N__"foobar"; ok 'foobar' eq $scalar; ($scalar) = scalar N__"foobar"; ok 'foobar' eq $scalar; $scalar = scalar N__n"one", "two", 4; ok 3 eq $scalar; $scalar = scalar N__p"ctx", "foobar"; ok 2 eq $scalar; $scalar = scalar N__np"ctx", "one", "two", 5; ok 4 eq $scalar; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/05parse_accept.t000644 000765 000024 00000002272 12511127523 020440 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: syntax=perl # vim: tabstop=4 use strict; use Test; use constant NUM_TESTS => 4; use Locale::Util qw (parse_http_accept_language parse_http_accept_charset); BEGIN { plan tests => NUM_TESTS; } my ($string, @items, $items); $string = "baz; q=0.1, foo, bar; q=0.7"; @items = parse_http_accept_language $string; $items = join '|', @items; ok $items, "foo|bar|baz"; # Illegal language identifiers should be filtered out. $string = "baz; q=0.1, illegal4this, foo, bar; q=0.7"; @items = parse_http_accept_language $string; $items = join '|', @items; ok $items, "foo|bar|baz"; # The catch-all language is C. $string = "baz; q=0.1, *; q=0.05, foo, bar; q=0.7"; @items = parse_http_accept_language $string; $items = join '|', @items; ok $items, "foo|bar|baz|C"; $string = "baz; q=0.1, foo, bar; q=0.7"; @items = parse_http_accept_charset $string; $items = join '|', @items; ok $items, "foo|bar|baz"; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/tests/LocaleData/000755 000765 000024 00000000000 12727473405 017457 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/po/000755 000765 000024 00000000000 12727473405 016104 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/po/additional.de.po000644 000765 000024 00000002415 12507434022 021131 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 0.01\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 1999-02-16 21:14+01:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%" "10==4 ? 2 : 3);\n" # The Plural-Forms header is wrong on purpose. It is in fact the correct # setting for Slovenian, but we abuse it here for testing ngettext and # friends. msgid "Singular" msgid_plural "Plural" msgstr[0] "Numerus 0" msgstr[1] "Numerus 1" msgstr[2] "Numerus 2" msgstr[3] "Numerus 3" msgctxt "Context here (2)" msgid "Singular" msgid_plural "Plural" msgstr[0] "Numerus 2:0" msgstr[1] "Numerus 2:1" msgstr[2] "Numerus 2:2" msgstr[3] "Numerus 2:3" msgid "Sunday" msgstr "Sonntag" msgid "Monday" msgstr "Montag" msgid "Tuesday" msgstr "Dienstag" msgid "Wednesday" msgstr "Mittwoch" msgid "Thursday" msgstr "Donnerstag" msgid "Friday" msgstr "Freitag" msgid "Saturday" msgstr "Samstag" msgid "Another View" msgstr "Eine andere Ansicht ohne Kontext" msgctxt "Context" msgid "Another View" msgstr "Eine andere Ansicht mit Kontext" libintl-perl-1.26/tests/po/additional.de_AT.po000644 000765 000024 00000000760 12507434022 021516 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 0.01\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 1999-02-16 21:14+01:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%" "10==4 ? 2 : 3);\n" msgid "Saturday" msgstr "Sonnabend" libintl-perl-1.26/tests/po/additional.xy.po000644 000765 000024 00000002400 12507434022 021173 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 0.01\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 1999-02-16 21:14+01:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: Bogus\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%" "10==4 ? 2 : 3);\n" # The Plural-Forms header is wrong on purpose. It is in fact the correct # setting for Slovenian, but we abuse it here for testing ngettext and # friends. msgid "Singular" msgid_plural "Plural" msgstr[0] "Numerus 0" msgstr[1] "Numerus 1" msgstr[2] "Numerus 2" msgstr[3] "Numerus 3" msgctxt "Context here (2)" msgid "Singular" msgid_plural "Plural" msgstr[0] "Numerus 2:0" msgstr[1] "Numerus 2:1" msgstr[2] "Numerus 2:2" msgstr[3] "Numerus 2:3" msgid "Sunday" msgstr "Sonntag" msgid "Monday" msgstr "Montag" msgid "Tuesday" msgstr "Dienstag" msgid "Wednesday" msgstr "Mittwoch" msgid "Thursday" msgstr "Donnerstag" msgid "Friday" msgstr "Freitag" msgid "Saturday" msgstr "Samstag" msgid "Another View" msgstr "Eine andere Ansicht ohne Kontext" msgctxt "Context" msgid "Another View" msgstr "Eine andere Ansicht mit Kontext" libintl-perl-1.26/tests/po/additional.xy_XY.po000644 000765 000024 00000000743 12507434022 021623 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 0.01\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 1999-02-16 21:14+01:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: Bogus\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%" "10==4 ? 2 : 3);\n" msgid "Saturday" msgstr "Sonnabend" libintl-perl-1.26/tests/po/existing.de.po000644 000765 000024 00000002414 12507434022 020652 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 1.12\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 2005-08-10 19:02+03:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Singular" msgid_plural "Plural" msgstr[0] "Einzahl" msgstr[1] "Mehrzahl" msgid "January" msgstr "Januar" msgid "February" msgstr "Februar" msgid "March" msgstr "März" msgid "April" msgstr "April" msgid "May" msgstr "Mai" msgid "June" msgstr "Juni" msgid "July" msgstr "Juli" msgid "August" msgstr "August" msgid "September" msgstr "September" msgid "October" msgstr "Oktober" msgid "November" msgstr "November" msgid "December" msgstr "Dezember" msgid "View" msgstr "Anzeigen" msgctxt "Which folder would you like to view?" msgid "View" msgstr "Ansicht" msgctxt "Which folder would you like to view? (2)" msgid "View" msgstr "View 2" msgctxt "Context here (2)" msgid "Singular" msgid_plural "Plural" msgstr[0] "Einzahl 2" msgstr[1] "Mehrzahl 2" msgctxt "Context here (3)" msgid "Singular 3" msgid_plural "Plural 3" msgstr[0] "Einzahl 3" msgstr[1] "Mehrzahl 3" libintl-perl-1.26/tests/po/existing.de_AT.po000644 000765 000024 00000000655 12507434022 021243 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 1.12\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 2005-08-10 19:01+03:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" msgid "January" msgstr "Jnner" msgid "February" msgstr "Feber" libintl-perl-1.26/tests/po/existing.xy.po000644 000765 000024 00000002377 12507434022 020732 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 1.12\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 2005-08-10 19:02+03:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: Bogus\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Singular" msgid_plural "Plural" msgstr[0] "Einzahl" msgstr[1] "Mehrzahl" msgid "January" msgstr "Januar" msgid "February" msgstr "Februar" msgid "March" msgstr "März" msgid "April" msgstr "April" msgid "May" msgstr "Mai" msgid "June" msgstr "Juni" msgid "July" msgstr "Juli" msgid "August" msgstr "August" msgid "September" msgstr "September" msgid "October" msgstr "Oktober" msgid "November" msgstr "November" msgid "December" msgstr "Dezember" msgid "View" msgstr "Anzeigen" msgctxt "Which folder would you like to view?" msgid "View" msgstr "Ansicht" msgctxt "Which folder would you like to view? (2)" msgid "View" msgstr "View 2" msgctxt "Context here (2)" msgid "Singular" msgid_plural "Plural" msgstr[0] "Einzahl 2" msgstr[1] "Mehrzahl 2" msgctxt "Context here (3)" msgid "Singular 3" msgid_plural "Plural 3" msgstr[0] "Einzahl 3" msgstr[1] "Mehrzahl 3" libintl-perl-1.26/tests/po/existing.xy_XY.po000644 000765 000024 00000000640 12507434022 021341 0ustar00guidostaff000000 000000 msgid "" msgstr "" "Project-Id-Version: libintl-perl-text 1.12\n" "POT-Creation-Date: 2002-07-13 11:47+02:00\n" "PO-Revision-Date: 2005-08-10 19:01+03:00\n" "Last-Translator: Guido Flohr \n" "Language-Team: Bogus\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" msgid "January" msgstr "Jnner" msgid "February" msgstr "Feber" libintl-perl-1.26/tests/po/Makefile000644 000765 000024 00000002012 12507434022 017523 0ustar00guidostaff000000 000000 # Makefile for various po files. This Makefile is intended for the # maintainer. No problem if you cannot run it on your system. srcdir = . top_srcdir = .. LINGUAS = de de_AT xy xy_XY PACKAGES = existing additional #CATALOGS = $(addsuffix .po, LINGUAS) CATALOGS = $(LINGUAS) MO_FILES = $(foreach pkg,$(PACKAGES), $(addprefix $(pkg)., $(addsuffix .mo, $(LINGUAS)))) MSGMERGE = msgmerge MSGFMT = msgfmt CATOBJEXT = .po all: default default: install install: $(MO_FILES) cd $(srcdir); \ targetdir='$(top_srcdir)/LocaleData'; \ languages='$(LINGUAS)'; \ packages='$(PACKAGES)'; \ for package in $$packages; do \ for lang in $$languages; do \ dest="$$targetdir/$$lang/LC_MESSAGES/$$package.mo"; \ cat="$$package.$$lang.mo"; \ echo "installing $$cat as $$dest"; \ cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \ done; \ done update-mo: $(MO_FILES) @echo "MO-FILES: $(MO_FILES)" clean: rm -f $(MO_FILES) *~ .SUFFIXES: .SUFFIXES: .po .mo .po.mo: $(MSGFMT) --check --statistics --verbose -o $@ $< libintl-perl-1.26/tests/LocaleData/de/000755 000765 000024 00000000000 12727473405 020047 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/de_AT/000755 000765 000024 00000000000 12727473405 020433 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/xy/000755 000765 000024 00000000000 12727473405 020117 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/xy_XY/000755 000765 000024 00000000000 12727473405 020537 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/xy_XY/LC_MESSAGES/000755 000765 000024 00000000000 12727473405 022324 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/xy_XY/LC_MESSAGES/additional.mo000644 000765 000024 00000000750 12507506534 024767 0ustar00guidostaff000000 000000 ,<PQZ SaturdayProject-Id-Version: libintl-perl-text 0.01 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 1999-02-16 21:14+01:00 Last-Translator: Guido Flohr Language-Team: Bogus MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%10==4 ? 2 : 3); Sonnabendlibintl-perl-1.26/tests/LocaleData/xy_XY/LC_MESSAGES/existing.mo000644 000765 000024 00000000653 12507506534 024513 0ustar00guidostaff000000 000000 4L`aj+rFebruaryJanuaryProject-Id-Version: libintl-perl-text 1.12 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 2005-08-10 19:01+03:00 Last-Translator: Guido Flohr Language-Team: Bogus MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit FeberJnnerlibintl-perl-1.26/tests/LocaleData/xy/LC_MESSAGES/000755 000765 000024 00000000000 12727473405 021704 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/xy/LC_MESSAGES/additional.mo000644 000765 000024 00000002006 12507506534 024343 0ustar00guidostaff000000 000000  |  !. Cdkr{  1R/r'   Another ViewContextAnother ViewContext here (2)SingularPluralFridayMondaySaturdaySingularPluralSundayThursdayTuesdayWednesdayProject-Id-Version: libintl-perl-text 0.01 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 1999-02-16 21:14+01:00 Last-Translator: Guido Flohr Language-Team: Bogus MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%10==4 ? 2 : 3); Eine andere Ansicht ohne KontextEine andere Ansicht mit KontextNumerus 2:0Numerus 2:1Numerus 2:2Numerus 2:3FreitagMontagSamstagNumerus 0Numerus 1Numerus 2Numerus 3SonntagDonnerstagDienstagMittwochlibintl-perl-1.26/tests/LocaleData/xy/LC_MESSAGES/existing.mo000644 000765 000024 00000002303 12507506534 024065 0ustar00guidostaff000000 000000 L $&.38>BK S]m)r-Q")>S\dkpu{     AprilAugustContext here (2)SingularPluralContext here (3)Singular 3Plural 3DecemberFebruaryJanuaryJulyJuneMarchMayNovemberOctoberSeptemberSingularPluralViewWhich folder would you like to view?ViewWhich folder would you like to view? (2)ViewProject-Id-Version: libintl-perl-text 1.12 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 2005-08-10 19:02+03:00 Last-Translator: Guido Flohr Language-Team: Bogus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n != 1); AprilAugustEinzahl 2Mehrzahl 2Einzahl 3Mehrzahl 3DezemberFebruarJanuarJuliJuniMärzMaiNovemberOktoberSeptemberEinzahlMehrzahlAnzeigenAnsichtView 2libintl-perl-1.26/tests/LocaleData/de_AT/LC_MESSAGES/000755 000765 000024 00000000000 12727473405 022220 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/de_AT/LC_MESSAGES/additional.mo000644 000765 000024 00000000765 12507506534 024671 0ustar00guidostaff000000 000000 ,<PQZ SaturdayProject-Id-Version: libintl-perl-text 0.01 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 1999-02-16 21:14+01:00 Last-Translator: Guido Flohr Language-Team: German MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%10==4 ? 2 : 3); Sonnabendlibintl-perl-1.26/tests/LocaleData/de_AT/LC_MESSAGES/existing.mo000644 000765 000024 00000000670 12507506534 024406 0ustar00guidostaff000000 000000 4L`aj8rFebruaryJanuaryProject-Id-Version: libintl-perl-text 1.12 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 2005-08-10 19:01+03:00 Last-Translator: Guido Flohr Language-Team: German MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit FeberJnnerlibintl-perl-1.26/tests/LocaleData/de/LC_MESSAGES/000755 000765 000024 00000000000 12727473405 021634 5ustar00guidostaff000000 000000 libintl-perl-1.26/tests/LocaleData/de/LC_MESSAGES/additional.mo000644 000765 000024 00000002023 12507506534 024272 0ustar00guidostaff000000 000000  |  !. Cdkr{  >_/'    Another ViewContextAnother ViewContext here (2)SingularPluralFridayMondaySaturdaySingularPluralSundayThursdayTuesdayWednesdayProject-Id-Version: libintl-perl-text 0.01 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 1999-02-16 21:14+01:00 Last-Translator: Guido Flohr Language-Team: German MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10==2 ? 1 : n%10==3 || n%10==4 ? 2 : 3); Eine andere Ansicht ohne KontextEine andere Ansicht mit KontextNumerus 2:0Numerus 2:1Numerus 2:2Numerus 2:3FreitagMontagSamstagNumerus 0Numerus 1Numerus 2Numerus 3SonntagDonnerstagDienstagMittwochlibintl-perl-1.26/tests/LocaleData/de/LC_MESSAGES/existing.mo000644 000765 000024 00000002320 12507506534 024014 0ustar00guidostaff000000 000000 L $&.38>BK S]m)r-^)/6K`iqx}     AprilAugustContext here (2)SingularPluralContext here (3)Singular 3Plural 3DecemberFebruaryJanuaryJulyJuneMarchMayNovemberOctoberSeptemberSingularPluralViewWhich folder would you like to view?ViewWhich folder would you like to view? (2)ViewProject-Id-Version: libintl-perl-text 1.12 POT-Creation-Date: 2002-07-13 11:47+02:00 PO-Revision-Date: 2005-08-10 19:02+03:00 Last-Translator: Guido Flohr Language-Team: German MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n != 1); AprilAugustEinzahl 2Mehrzahl 2Einzahl 3Mehrzahl 3DezemberFebruarJanuarJuliJuniMärzMaiNovemberOktoberSeptemberEinzahlMehrzahlAnzeigenAnsichtView 2libintl-perl-1.26/sample/README000644 000765 000024 00000050150 12507434066 016462 0ustar00guidostaff000000 000000 This is a simple, respectively stupid Perl package that shows how the complete internationalization process for a Perl package *could* be done. It does not claim to be the smartest or the only possible solution, but it provides at least a skeleton for real packages. If libintl-perl should someday become an "established" Perl package, it would probably be a lot better to seamlessly integrate the process into ExtUtils::MakeMaker, but for now it's all we have. The example focuses on the packaging process, i. e. on the things you have to do to maintain an internationalized Perl package, so that users of your package will benefit from translations you provide. It therefore doesn't make use of any of the nitty-gritty details of message translation like plural handling or the like. Requirements ------------ The only requirement is a Perl aware version of GNU gettext. Perl support was introduced only recently in GNU gettext, and you will have to check whether your copy of GNU gettext already supports Perl. Support for Perl was introduced in version 0.12.2 of GNU gettext. If your version is older, you have to update GNU gettext. First test ---------- The subdirectory "simplecal" contains a regular Perl package like the ones you will find on the CPAN. You should first try to build and use the package: cd simplecal perl Makefile.PL make If you see a warning that the prerequisite Locale::TextDomain is not found, then you have to install libintl-perl first. You should never "make install", the package is only a stupid example and you will not really want to install it. You can simply try it out from the installation directory itself: perl -Ilib bin/simplecal.pl It should print a crude calendar representation in English, or even in your preferred language, depending on your system settings. The Programming --------------- Now we should dig into the sources. All relevant files are commented and should give you a pretty good idea of what's going on. Change your directory to the package directory "simplecal" and inspect the source files. The heart of the library is found in the file lib/SimpleCal.pm. This Perl module defines functions that map numeric values to month names or abbreviated week day names. You will find nothing unusual in this module except for a line at the beginning of the file that reads: use Locale::TextDomain qw (com.cantanea.simplecal); In case you are not familiar with the operator "qw", this is an equivalent writing of use Locale::TextDomain ('com.cantanea.simplecal'); That line in the code does three things: It imports the module Locale::TextDomain, *and* it states that the text domain (or identifier) for this package is "com.cantanea.simplecal", *and* it says that the translations for this package can be found in the subdirectory "LocaleDate" of any component of @INC (unless it can be found in one of the system locations). See the POD in Locale::TextDomain for more information. You may also find out that some strings have a "__" or a "N__" in front of them. The explanation to these funny things has two sides: First, they mark the following strings as being translatable, so that the parser "xgettext" included in GNU gettext can find them. Yet, at runtime both "__" and "N__" are really function names, and they will look up their argument in the translation database. There is more documentation available on this. Guess where! Yepp, in the POD of Locale::TextDomain. The library is used by a Perl script "bin/simplecal.pl". Let's have a look at that script now. The first remarkable line is the one that calls POSIX::setlocale(): setlocale (LC_MESSAGES, ''); The POD of the POSIX module gives additional information on the function setlocale(). In brief, that call initializes the locale settings for the category "LC_MESSAGES" to the pre-selected user settings (this is indicated by the empty second argument). The constant LC_MESSAGES is exported by Locale::Messages, which is always a safe choice. If your script is only intended to run with Perl 5.8 or better, you can also import LC_MESSAGES from the POSIX module. The rest of the program only prints a calendar for the current month. It retrieves the name of the month and the abbreviated weekday names from our little SimpleCal.pm module which provides this information in a localized form. A Dutch Calendar ---------------- We want to see the calendar in Dutch now. All you have to do is to set the environment variable LANGUAGE to the value "nl". If you don't know how to do this, add the following line somewhere at the top of "bin/simplecal.pl": $ENV{LANGUAGE} = "nl"; Now run the script again: perl -Ilib bin/simplecal.pl It should print out the calendar in Dutch. Look at the *.po files in the subdirectory "po" for a list of other translations I have prepared. You can try them out in a similar manner. Please see the file "README-NLS" in subdirectory "sample/simplecal" for details on how to set the language via environment variables. The Subdirectory "po" --------------------- This directory contains the raw translations and a Makefile that will compile and install them. If you enter this directory and type "make" you will see a list of the available Makefile targets. The first one is the target "pot", a so-called phony target, i. e. it is not related to a file with the name of "pot". The command "make pot" will remake the master catalog of the package and place the result in the file "com.cantanea.simplecal.pot" ("com.cantanea.simplecal" is the text domain resp. identifier for our package). Type the command "make pot" now to see how the master catalog is actually generated. If the output says something like "nothing to be done for `pot'", then delete the file "com.cantanea.simplecal.pot" and try again. You should see now that the target file "com.cantanea.simplecal.pot" is generated by the program xgettext with a plethora of options: xgettext --output=./com.cantanea.simplecal.pox --from-code=utf-8 \ --add-comments=TRANSLATORS: --files-from=./POTFILES \ --copyright-holder="Imperia AG Huerth/Germany" \ --keyword --keyword='$__' --keyword=__ --keyword=__x \ --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn \ --keyword=N__ --language=perl && \ rm -f com.cantanea.simplecal.pot && \ mv com.cantanea.simplecal.pox com.cantanea.simplecal.pot Type "xgettext --help" for a detailled explanation of the command line options. In brief this invocation causes xgettext to read a list of files from the file "POTFILES", extract all messages from these source files and place the result in the output file "com.cantanea.simplecal.pox". If the command succeeds, the old ".pot" file is replaced by the new ".pox" file. Yes, this is complicated, and that is why this skeleton Makefile is provided here. You can copy it without any modification into your package to use it. The file POTFILES contains a list of source files to be scanned for translatable strings. Have a look at it, and you will understand it. The Makefile also includes a file called "PACKAGE". This file contains all package-dependent information in a couple of Makefile variables: - TEXTDOMAIN This Makefile variable should contain the text domain/identifier for your package. Please see the POD of Locale::TextDomain for advice on a reasonable naming. - LINGUAS The language codes of all languages supported by your package. Each entry corresponds to a po file in the po subdirectory. - COPYRIGHT_HOLDER Usually your name. Whatever you put here will be included as the copyright holder in the header of the po files. - MSGID_BUGS_ADDRESS Usually your name and e-mail address. It will also be included in the po header and translators will check this entry when they come across a bug in a msgid, or when they have difficulties to translate a certain message because of awkward coding on your side. Okay, after "make pot" we have updated the master message catalog TEXTDOMAIN.pot, in our case "com.cantanea.simplecal.pot". Have a look into the file now. It contains the original English messages that xgettext has extracted from our source files and blank translations. The po files (the files the names of which end with ".po") contain previous translations provided by our package translators. Whenever you change the Perl sources, the list of messages may change. This results in a maybe new .pot file and requires an update of all po files. Try that now and type "make update-po" You will see confusing output from "make" but you may get the idea that every single po file (every language that the package supports) gets updated, and the new strings are inserted into the po files. Since nothing really changed here (we did not change the source files yet) you can now try to update the compiled po files which end in ".gmo" (for GNU mo format) with "make update-mo". Again, you will see maybe cryptic output from "make" that signifies that all compiled files are re-generated now by a program called "msgfmt". The last step requires that you copy the (possibly changed) mo files into your package by "make install". This will copy the gmo files as ".mo" files into the subdirectory "LocaleData" of your package so that libintl-perl is able to find them at runtime. You can perform all these steps at once by typing "make all" although this is mostly useful for testing purposes. In reality the workflow is different: - You change your source files, messages may have been added, deleted or modified. You will have to update the master message catalog by typing "make pot". - Since the translations may have gotten out-of-date, you will have to merge your changes into all po files by "make update-po". - Your translators will get copies of the po files, reflect your changes in the po files and send them back to you. - When you have received the updates, it is time to compile the po files into a binary representation with "make update-mo". - These binary mo files have to be installed under "LocaleData", and you have to "make install". Note that "make install" installs the mo files in your source package, not in the system location! - Now that you have updated the translations for your package, you will want to upload a new version to the CPAN. Note that all these steps are *only* necessary for package maintainers. As a user of the package, you will only see the resulting mo files under "LocaleData". End users do *not* need any of the gettext tools, and they do not have to perform any of the above steps theirselves! Changing the Sources -------------------- You may wonder whether your translators have to re-translate everything from scratch whenever you change your Perl sources. This is, of course, not the case. Let's say, you want to add a welcome and a good-bye message to the program output. Have a look into "bin/simplecal.pl" and you will see that this is already prepared but commented out (search for "Welcome to" and "Bye" if you can't find it). Uncomment these lines and see what happens to the po files in that case. Before you proceed, you should have a look at the Dutch translation file "nl.po". At the bottom you will find some lines that are commented out with "#~" and that proove that I have already prepared that case. The comment sign "#~" in po files signifies that a particular translation is obsoleted, i. e. no longer needed because it is no longer present in the source files. Say, that you have really changed your mind, and you want to re-introduce the welcome and good-bye messages to your program and you uncomment the corresponding lines in "bin/simplecal.pl". You will have to re-make the master catalog "com.cantanea.simplecal.pot" by "make pot", and then "make update-po" to update the po files. In fact, "make update-po" is sufficient because it will also update the pot file if it is out-of-date (i. e. if any of the source files have changed in the meantime). Type "make update-po" now, and look again at "po/nl.po". You will see that the previously translated welcome and good-bye messages have been re-activated from the obsoleted entries. In fact your translators will have nothing to do, because their old translations are still valid. Type "make install" and then re-run "perl -Ilib bin/simplecal.pl", set the environment variable "LANG" to any of the available languages, and things will still work perfectly. Of course, it is a rare case that messages are discarded and later re-activated in programming sources. It is more likely that you will modify a message, or maybe add a message that is similar to former ones. Let's say that you want to change the exclamation mark in the good-bye message at the bottom of the script to a simple full stop. Look for the line that reads print __"Bye!\n"; and change it into print __"Bye.\n"; Change into the directory "po", update the translation files with "make update-po" and inspect the file "nl.po". At first glance, you may not see any change. But then: The entry for the good-bye message has an additional comment "#, fuzzy". The fuzzy mark signifies that the msgerge program has found that a message is very similar to a previous message (even obsoleted ones are taken into account), and that it proposes an old translation here. The translator will normally modify the translation accordingly (without having to re-type everything), remove the fuzzy mark and send back the translation to you. In fact you could also install translations that have not been revised by the translator and are still marked as fuzzy. This is not recommended however! The algorithm used in msgmerge is quite smart and seldom fails to detect minimal changes in the source message and propose the old translation. However, it often proposes translations from other valid or obsoleted entries that are only vaguely related to the real meaning. You should understand the fuzzy merging mechanism as a helpful feature to the translator only and never install fuzzy translations unless you absolutely know what you are doing. Pass Comments to Translators ---------------------------- The po files contain references for every message to the corresponding source files as comments. But you still may feel a need for giving hints to the translators. You may want to tell the translators, that the good-bye message can be somewhat sloppy (or whatever you like). This is simple to do. Have a look at the good-bye message in "bin/simplecal.pl" and you will see that it is preceded by a comment introduced with the string "TRANSLATORS:". If you start your Perl comment like this, it will end up as a comment for translators in the resulting po (resp. pot) file and may serve as a hint for translators. In fact, the string "TRANSLATORS:" is arbitrarily chosen. If you prefer another string, change it in the invocation of "xgettext" in the skeleton Makefile provided here. Informational Files ------------------- You should put two additional files in your distribution. The first one is "README-NLS". It should be a verbatim copy of the most recent version found in the "simplecal" sample package. Please send corrections or improvements to this file to the maintainer Guido Flohr , and add package-specific notes to your documentation instead. Users expect this file to have a standard contents, and they will not check it for changes on a regular basis. The file "TRANSLATIONS" should reflect the current translation status of your package. It should list all currently availabe translations, their completeness, and it should also inform your user which translations are actively maintained, and which are not. You can find a sample in the "simplecal" sample package. Bringing It All Together ------------------------ The above sounds definitely more complicated than it is. In practice you code as before but mark all your strings with "__" and friends like described in the POD of Locale::TextDomain. Before a new release you change into the directory "po" of your distribution and type "make update-po" to update the available translations. Distribute the modified po files to your translators, and once you have collected them all, type "make install" to add them to your distribution. That's all, all translations will be available in your package now. Internationalizing Existing Packages ------------------------------------ Internationalizing an already existing package with libintl-perl is less painful than you think. The following roadmap should do it with minimal effort. First create a subdirectory "po" in your sources, copy the "Makefile" from this sample, and copy and edit the files "TEXTDOMAIN" and "LINGUAS" (LINGUAS can set the Makefile variable "LINGUAS" to the empty string and TEXTDOMAIN should set "TEXTDOMAIN" to a name as advised in the POD of Locale::TextDomain). Next you have to mark the translatable strings in your sources with "__" and friends. You can do that by hand, but isn't that the kind of job that you have bought a computer for? List your source files in "po/POTFILES" and then try xgettext -a --files-from=POTFILES -o all.pot The option "-a" instructs xgettext to extract *all* strings from your sources. This option may miss a few strings (consider a bug report in that case), it will issue a lot of warnings about "illegal variable interpolations" (see the POD of Locale::TextDomain for workarounds) and will put a lot of strings extracted from your sources into the file "all.pot". Now, load the file "all.pot" into an editor of your choice. If your choice is "GNU emacs" you will have maximum comfort: Select an entry, type "s" and you can cycle through the source files that this particular entry originates from. Other PO editors like KBabel or PO-Edit provide similar functionality. But even with the "Notepad" on MS-DOS you will be able to navigate to the corresponding source file. Once you have found the origin in your sources, you have to decide whether this is a false positive, and you simply ignore it. If it is a translatable string you either simply mark it with "__" or you "repair" it. What does "repair" mean? Again, the POD of Locale::TextDomain... In brief: Your Perl sources will be full of stuff like: die "Cannot open file '$filename': $!\n"; This string is not suitable for translation, because it is not constant. It may change depending on the value of the variable $filename and the value of $!. You will have to change that into something like: die __x ("Cannot open file '{filename}': {err}\n", filename => $filename, err => $err); Once you are done with marking the strings, you can try to run your scripts/modules and you will see a lot of complaints by Perl that it doesn't know about "__" (in various incarnations). Remember that "__" is really a function call and you have to import the function "__" and its relatives into your namespace. What you have to do is to invent an identifier for your package (see Locale::TextDomain for hints) and then add the following line to all of your source files that produced errors: use Locale::TextDomain ('Name-Of-My-Package'); You will be happy if "Name-Of-My-Package" is the same as the Makefile variable "TEXTDOMAIN" in the file "po/TEXTDOMAIN" that you have created in the beginning. For the common case of a pure library: Is that really all I have to do? Yes! What about POSIX::setlocale(), don't I have to make a call somewhere? No, not for a library! And what about calls to textdomain() and bindtextdomain() that I know from C or other languages? No, this is all hidden in "use TextDomain (PACKAGENAME)" for Perl. To make it clear again: A library should NEVER change the locale settings. The script that uses a library (or multiple libraries) should do that, and this boils down to three lines of Perl: use POSIX qw (setlocale); use Locale::Messages (LC_MESSAGES); setlocale (LC_MESSAGES, ""); That means: The *calling* Perl script, the one that uses possibly internationalized libraries, should initialize the locale settings to the user preferences. Libraries should honor that setting but should never change it. If a script misses a call to setlocale(), your internationalized library will happily continue to work flawlessly with the original English messages, it is up to the client programmer to reveal the i18n features in your code! Good luck! Guido libintl-perl-1.26/sample/simplecal/000755 000765 000024 00000000000 12727473405 017556 5ustar00guidostaff000000 000000 libintl-perl-1.26/sample/simplecal/bin/000755 000765 000024 00000000000 12727473405 020326 5ustar00guidostaff000000 000000 libintl-perl-1.26/sample/simplecal/lib/000755 000765 000024 00000000000 12727473405 020324 5ustar00guidostaff000000 000000 libintl-perl-1.26/sample/simplecal/Makefile.PL000644 000765 000024 00000003404 12507434022 021515 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # -*- perl -*- # vim: tabstop=4 # Makefile generator for libintl-perl. # Copyright (C) 2002-2015 Guido Flohr , # all rights reserved. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( NAME => 'simplecal', VERSION_FROM => 'bin/simplecal.pl', PREREQ_PM => { Locale::TextDomain => 0, }, EXE_FILES => [ 'bin/simplecal.pl' ], AUTHOR => 'Guido Flohr ', ABSTRACT => 'Demonstration package for libintl-perl', ); __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/sample/simplecal/MANIFEST000644 000765 000024 00000001631 12507434022 020674 0ustar00guidostaff000000 000000 MANIFEST Makefile.PL bin/simplecal.pl lib/SimpleCal.pm po/Makefile po/PACKAGE po/POTFILES.in po/ar.po po/ar_SA.po po/cs.po po/de.po po/de_AT.po po/fr.po po/ga.po po/it.po po/nl.po po/com.cantanea.simplecal.pot po/pt.po po/pt_BR.po po/ru.po lib/LocaleData/de/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/fr/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/ar/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/ar_SA/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/de_AT/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/ga/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/it/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/pt/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/pt_BR/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/nl/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/ru/LC_MESSAGES/com.cantanea.simplecal.mo lib/LocaleData/cs/LC_MESSAGES/com.cantanea.simplecal.mo libintl-perl-1.26/sample/simplecal/po/000755 000765 000024 00000000000 12727473405 020174 5ustar00guidostaff000000 000000 libintl-perl-1.26/sample/simplecal/README-NLS000644 000765 000024 00000022304 12507434022 021055 0ustar00guidostaff000000 000000 Notes on National Language Support (NLS) **************************************** This package is internationalized with libintl-perl, a free internationalization library for Perl, you will need to install a copy of libintl-perl in order to use the package. You can get libintl-perl from the Comprehensive Perl Archive Network CPAN at http://www.cpan.org/. The following notes are meant to be a quick start guide for somewhat experienced users and system administrators and many important details had to be omitted for brevity. Feel free to include this document in your own Perl packages internationalized with libintl-perl, no severe copyright restrictions apply. You should send corrections or improvements to the author Guido Flohr , so that others can benefit from your changes. The End User's View =================== The installation routine for this package will automatically take care that your system has a sufficient version of libintl-perl installed. This is basically sufficient for proper operation, but - especially if internationalized software is new to you - you should read on carefully in order to fully benefit from the internationalization (I18N) features of this package. Perl Setup ---------- The I18N library libintl-perl will run with a wide range of Perl versions (at least from Perl version 5.005_03 to Perl 5.8.0) but you will experience slight difference in features and performance depending on the version of Perl you use. With Perl versions prior to 5.7.3 you can use the package for all European scripts (including those with Greek or Cyrillic scripts), and also for many scripts used outside Europe, like Arabic, Hebrew, Georgian, Vietnamese or Thai, more general all scripts using 8 bit charsets. Other scripts are only available if the translations in this package are provided in Unicode and they can only be output in Unicode. Beginning with Perl 5.7.3 the module Encode became part of the Perl core, and it offers you a much wider range of possible scripts. If you plan to use some of the lesser used scripts for Chinese, Japanese, and Korean, you should also install the module Encode::HanExtra. Setting Your Language --------------------- Most modern systems are already prepared and configured for internationalization, and the user interface of the software you have installed will already be configured for your preferred language. Packages internationalized with libintl-perl will honor these configuration settings and will also operate in your preferred language if the necessary translations are available. The environment variable "LANGUAGE" has the highest precedence for translations. The most common format for this environment variable is a (lowercase) two-letter language code and an (uppercase) two-letter country code separated by an underscore "_", for example: LANGUAGE=fr_BE export LANGUAGE This will set your language preferences to French ("fr") for Belgium ("BE"). Other examples are French for France ("fr_FR"), German for Austria ("de_AT"), and so on. You can also omit the country part ("FR", "DE", "IT", "RU", ...) in which case a default setting for the country will be assumed. If there are no translations available for your selected languages, the original message (normally in English) will be displayed. You can also define a chain of languages to be tried separated by a colon: LANGUAGE=fr_BE:fr_FR:fr:it Read this as: "I want translations in French for Belgium. If they are not available try French for France, then any French translation, and finally Italian". Please note that this chain notation is only allowed for the environment variable "LANGUAGE", it is not valid for any of the following variables. If "LANGUAGE" is not set, the library checks the variable "LANG". It has the same syntax as "LANGUAGE" but does not allow the preferences chain with the colon syntax. After "LANG" the variable "LC_ALL" is tried, and finally "LC_MESSAGES" (think "locale category messages"). IMPORTANT! The environment variable "LANGUAGE" is ignored, if neither the environment variable "LC_ALL" or "LC_MESSAGES" is set to a valid locale on your system. It is also ignored, if the resulting locale is the fallback locale "C" or "POSIX". Note for Microsoft Windows users: The locale preferences you have configured for your system cannot yet be evaluated by libintl-perl. This may change for future versions of libintl-perl but for the moment you have to make do with the instructions given above. In order to set environment variables, you have to right-click on the icon "My Computer" on your desktop, select "Properties" in the context menu, and then click the tab labelled "Environment variables". Setting the Output Charset -------------------------- Even if you have managed to properly select your preferred language, you may still have difficulties reading the program languages, because libintl-perl was unable to determine the correct charset to use for messages. For example, it may assume Unicode ("UTF-8") but you really need ISO-Latin-1 (also known as "Latin-1" or "ISO-8859-1"). If this is the case, please set the environment variable "OUTPUT_CHARSET" to the appropriate value, for example: OUTPUT_CHARSET=iso-8859-1 export OUTPUT_CHARSET Charset names are case-insensitive, i. e. "LATIN-1" is the equivalent to "Latin-1" or even "lAtIn-1". Note: The output charset "utf8" is NOT recognized. Please use the correct abbreviation "utf-8" (with a hyphen) instead. The Translator's View ===================== If you want to contribute a new translation to this package, please contact the author first. Somebody may have already started this translation, and furthermore the package author will be able to give you detailled instructions and help. Translating a Perl package is not much work and it does not require any technical skills. If you are able to use the software itself, you will also be able to contribute a translation for your language. But why should you do that? You are able to read and understand this text and you will also be able to understand the English messages that the software spits out by default. Computers are an integral part of today's society. Computers are used to explore new sources of information, forbidding computers would be a modern form of censorship. Computers may also improve social life, the internet helps people to find contacts in their area and all over the world, even if they would otherwise be deprived from that because of a handicap, lack of money for traveling, or other reasons. In many societies, the ability to use and handle a computer also has a strong impact on your perspectives in life, you may not be able to find an adequate job because of your lack of computer experience, or you may even lose your job because of that. Everybody should benefit from computers, regardless of cultural background. Computers are expansive goods, and their price is already a high barrier to cross. If computers speak in a foreign language, the learning curve gets steeper and the barrier gets even higher. You can help the people that share your native language by contributing a translation. The author of this package has already prepared everything, the rest is up to you! The Programmer's View ===================== You have downloaded this package because you want to use it in your own project(s). The fact that the package is internationalized with libintl-perl does not affect its usability in any way. But you should keep in mind that textual messages produced by the package may change according to the locale settings at run-time. This can lead to errors. For example, if you parse error messages produced by the package, you will most probably fail to detect what you are looking for, if these error messages are suddenly presented in another language or another output charset. It is probably needless to say that this is bad practice and an indicator for a poorly written interface. Either you have missed the correct method for determining the substance of the message in a locale-independent manner, or the author of the package has mis-designed the package interface. In any case, this is a technical problem that should be solved by technicians. You should not put that burden on the shoulders of your users but rather solve the problem in cooperation with the author of the module that causes it. If this is absolutely impossible, as a temporary workaround you can completely switch off the native language support of the package by setting the environment variable "LANGUAGE" to the special value "C": BEGIN { $ENV{LANGUAGE} = $ENV{LANG} = "C"; } The value "C" instructs libintl-perl to leave all messages untouched, and you can use the package as if it was not internationalized at all. If the project you are working on is not yet internationalized, you should consider to prepare it for internationalization now. Doing so is only little work for yourself, but results in a large benefit for the users of your software. The package "libintl-perl" ships with exhaustive documentation for programmers and a sample package that you can use as a skeleton for your own project(s). Internationalizing Perl software with libintl-perl is easy, the package that this file is a part of, prooves that. Guido Flohr libintl-perl-1.26/sample/simplecal/TRANSLATIONS000644 000765 000024 00000003660 12507434022 021413 0ustar00guidostaff000000 000000 This package is internationalized with libintl-perl. It can be configured to speak in different languages. If your language is still missing, you should take a look into the file "README-NLS" (section "The Translator's View") where you will find instructions for contributing a translation into your language to this package. You can see the translation status of this package for various languages in the following table. If your language is completely missing in the table, your translation will be welcomed as a contribution to the project. Translation Status for "simplecal" ================================== Language | Code | Status | Current Translator --------------------+-------+---+----+--------------------------------- Arabic | ar | O | C | Guido Flohr Arabic/Saudi Arabia | ar_SA | O | C | Guido Flohr Dutch | nl | O | C | Guido Flohr French | fr | O | C | Guido Flohr German | de | A | C | Guido Flohr German/Austria | de_AT | O | C | Guido Flohr Irish | ga | O | C | Guido Flohr Italian | it | O | C | Guido Flohr Portuguese | pt | O | C | Guido Flohr Portuguese/Brazil | pt_BR | O | C | Guido Flohr Russian | ru | O | C | Guido Flohr Legend: The status is displayed in two columns. The left column informs you whether somebody is already in charge of that translation, the right columns reflects the status of the translation itself. Left: (O) - Orphaned: The translation needs a new maintainer. You? (A) - Assigned: The translation already has a maintainer. Right: (C) - Complete: All messages are translated. (M) - Mostly: Most (all important) messages are translated. (P) - Partially: The translation is only partially done. (-) - Missing: No translation is currently available. Messages for missing translations will be displayed in English. libintl-perl-1.26/sample/simplecal/po/ar.po000644 000765 000024 00000003145 12507504322 021126 0ustar00guidostaff000000 000000 # Arabic translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-27 18:56+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-6\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "" #~ msgid "Welcome to {package}!\n" #~ msgstr " {package} \n" #~ msgid "Bye.\n" #~ msgstr "! \n" libintl-perl-1.26/sample/simplecal/po/ar_SA.po000644 000765 000024 00000002773 12507504322 021517 0ustar00guidostaff000000 000000 # Arabic translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-27 18:56+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-6\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr " " #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr " " #: ../lib/SimpleCal.pm:46 msgid "November" msgstr " " #: ../lib/SimpleCal.pm:48 msgid "December" msgstr " " #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "" libintl-perl-1.26/sample/simplecal/po/com.cantanea.simplecal.pot000644 000765 000024 00000003073 12507434022 025206 0ustar00guidostaff000000 000000 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Edit the file PACKAGE to change this. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "" libintl-perl-1.26/sample/simplecal/po/cs.po000644 000765 000024 00000003166 12507504322 021134 0ustar00guidostaff000000 000000 # Czech translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:21+0200\n" "Last-Translator: Jan Tomášek \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "Leden" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "Únor" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "Březen" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "Duben" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "Květen" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "Červen" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "Červenec" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "Září" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "Říjen" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "Listopad" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "Prosinec" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "Prosinec" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "Ne" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "Po" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "Út" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "St" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "Čt" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "Pá" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "So" #~ msgid "Welcome to {package}!\n" #~ msgstr "Vítejte v {package}!\n" #~ msgid "Bye.\n" #~ msgstr "Nashledanou!\n" libintl-perl-1.26/sample/simplecal/po/de.po000644 000765 000024 00000003245 12507504322 021115 0ustar00guidostaff000000 000000 # German translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:06+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "Januar" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "Februar" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "Mrz" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "April" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "Mai" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "Juni" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "Juli" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "August" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "September" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "Oktober" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "November" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "Dezember" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "So" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "Mo" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "Di" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "Mi" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "Do" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "Fr" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "Sa" #~ msgid "Welcome to {package}!\n" #~ msgstr "Willkommen bei {package}!\n" #~ msgid "Bye.\n" #~ msgstr "Tschss!\n" libintl-perl-1.26/sample/simplecal/po/de_AT.po000644 000765 000024 00000002757 12507504322 021510 0ustar00guidostaff000000 000000 # German (Austria) translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-27 18:47+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "Jnner" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "Feber" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "" libintl-perl-1.26/sample/simplecal/po/fr.po000644 000765 000024 00000003176 12507504322 021137 0ustar00guidostaff000000 000000 # French translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:07+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "janvier" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "fvrier" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "mars" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "avril" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "mai" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "juin" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "juillet" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "aot" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "septembre" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "octobre" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "novembre" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "dcembre" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "di" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "lu" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "ma" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "me" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "je" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "ve" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "sa" #~ msgid "Welcome to {package}!\n" #~ msgstr "Bienvenu {package}!\n" #~ msgid "Bye.\n" #~ msgstr " toute l'heure!\n" libintl-perl-1.26/sample/simplecal/po/ga.po000644 000765 000024 00000003262 12507504322 021113 0ustar00guidostaff000000 000000 # Irish translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:10+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Irish \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "Eanir" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "Feabhra" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "Mrta" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "Aibren" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "M na Bealtaine" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "Meith" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "Iil" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "Lnasa" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "Men Fmhair" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "Deireadh Fmhair" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "M na Samhna" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "M na Nollag" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "Domh" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "Luan" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "Mirt" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "Cad" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "Dar" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "Aoine" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "Sath" #~ msgid "Welcome to {package}!\n" #~ msgstr "Bidh {package} agat agus filte!\n" #~ msgid "Bye.\n" #~ msgstr "Sln leat!\n" libintl-perl-1.26/sample/simplecal/po/it.po000644 000765 000024 00000003206 12507504322 021136 0ustar00guidostaff000000 000000 # Italian translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:10+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "gennaio" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "febbraio" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "marzo" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "aprile" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "maggio" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "giugno" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "luglio" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "agosto" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "settembre" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "ottobre" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "novembre" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "dicembre" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "dom" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "lun" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "mar" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "mer" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "gio" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "ven" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "sab" #~ msgid "Welcome to {package}!\n" #~ msgstr "Benvenuti in {package}!\n" #~ msgid "Bye.\n" #~ msgstr "Ciao!\n" libintl-perl-1.26/sample/simplecal/po/Makefile000644 000765 000024 00000004437 12507434022 021630 0ustar00guidostaff000000 000000 # Makefile for various po files. srcdir = . libdir = ../lib CATALOGS = $(LINGUAS) MO_FILES = $(addsuffix .gmo, $(LINGUAS)) MSGMERGE = msgmerge MSGFMT = msgfmt XGETTEXT = xgettext CATOBJEXT = .po include PACKAGE TD = $(strip $(TEXTDOMAIN)) default: help all: $(TD).pot update-po update-mo install help: @echo "Available targets:" @echo " pot - remake master catalog" @echo " update-po - merge po files" @echo " update-mo - regenerate mo files" @echo " install - install mo files" @echo " all - all of the above" POTFILES = $(srcdir)/POTFILES \ $(shell cat $(srcdir)/POTFILES) pot: $(TD).pot clean: rm -f *~ *.bak *.gmo $(TD).pot: $(POTFILES) $(XGETTEXT) --output=$(srcdir)/$(TD).pox --from-code=utf-8 \ --add-comments=TRANSLATORS: --files-from=$(srcdir)/POTFILES \ --copyright-holder="$(COPYRIGHT_HOLDER)" \ --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \ --keyword --keyword='$$__' --keyword=__ --keyword=__x \ --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \ --keyword=__p:1c,2 --keyword=__np:1c,2,3 \ --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \ --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ && \ rm -f $@ && mv $(TD).pox $@ install: $(MO_FILES) cd $(srcdir); \ targetdir='$(libdir)/LocaleData'; \ languages='$(LINGUAS)'; \ for lang in $$languages; do \ mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \ dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \ cat="$$lang.gmo"; \ echo "installing $$cat as $$dest"; \ cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \ done update-mo: $(MO_FILES) update-po: $(MAKE) $(TD).pot cd $(srcdir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ mv $$lang.po $$lang.old.po; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.old.po $(TD).pot -o $$lang.po; then \ rm -f $$lang.old.po; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$lang.po; \ mv $$lang.old.po $$lang.po; \ fi; \ done .SUFFIXES: .SUFFIXES: .po .gmo .po.gmo: $(MSGFMT) --check --statistics --verbose -o $@ $< libintl-perl-1.26/sample/simplecal/po/nl.po000644 000765 000024 00000003164 12507504322 021136 0ustar00guidostaff000000 000000 # Dutch translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:08+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "januari" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "februari" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "maart" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "april" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "mei" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "juni" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "juli" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "augustus" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "september" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "oktober" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "november" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "december" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "zo" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "ma" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "di" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "wo" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "do" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "vr" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "za" #~ msgid "Welcome to {package}!\n" #~ msgstr "Welkom bij {package}!\n" #~ msgid "Bye.\n" #~ msgstr "Tot zo!\n" libintl-perl-1.26/sample/simplecal/po/PACKAGE000644 000765 000024 00000001215 12507434022 021135 0ustar00guidostaff000000 000000 # Makefile snippet that holds all package-dependent information. # Add more languages here! Beware that this is a makefile snippet and # you have to adhere to make syntax. LINGUAS = de \ de_AT \ it \ ru \ fr \ ar \ ar_SA \ ga \ pt \ pt_BR \ nl \ cs # Textdomain for our package. TEXTDOMAIN = com.cantanea.simplecal # Initial copyright holder added to pot and po files. #COPYRIGHT_HOLDER = Guido Flohr COPYRIGHT_HOLDER = Edit the file PACKAGE to change this. # Where to send msgid bugs? #MSGID_BUGS_ADDRESS = Guido Flohr MSGID_BUGS_ADDRESS = Edit the file PACAKGE to change this. libintl-perl-1.26/sample/simplecal/po/POTFILES000644 000765 000024 00000000050 12507434022 021323 0ustar00guidostaff000000 000000 ../bin/simplecal.pl ../lib/SimpleCal.pm libintl-perl-1.26/sample/simplecal/po/pt.po000644 000765 000024 00000003215 12507504322 021145 0ustar00guidostaff000000 000000 # Portuguese translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:24+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "Janeiro" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "Fevereiro" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "Maro" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "Abril" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "Maio" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "Junho" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "Julho" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "Agosto" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "Setembro" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "Outubro" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "Novembro" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "Dezembro" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "Dom" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "Seg" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "Ter" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "Qua" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "Qui" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "Sex" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "Sb" #~ msgid "Welcome to {package}!\n" #~ msgstr "Bem-vindo ao {package}!\n" #~ msgid "Bye.\n" #~ msgstr "At a vista!\n" libintl-perl-1.26/sample/simplecal/po/pt_BR.po000644 000765 000024 00000003054 12507504322 021531 0ustar00guidostaff000000 000000 # Brazilian Portuguese translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-27 18:56+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "janeiro" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "fevereiro" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "maro" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "abril" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "maio" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "junho" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "julho" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "agosto" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "setembro" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "outubro" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "novembro" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "dezembro" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "Dom" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "Seg" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "Ter" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "Qua" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "Qui" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "Sex" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "Sb" libintl-perl-1.26/sample/simplecal/po/ru.po000644 000765 000024 00000003177 12507504322 021157 0ustar00guidostaff000000 000000 # Russian translations for SimpleCal. # msgid "" msgstr "" "Project-Id-Version: SimpleCal\n" "Report-Msgid-Bugs-To: Edit the file PACAKGE to change this.\n" "POT-Creation-Date: 2013-01-14 18:14+0200\n" "PO-Revision-Date: 2003-07-28 04:21+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-5\n" "Content-Transfer-Encoding: 8bit\n" #: ../lib/SimpleCal.pm:26 msgid "January" msgstr "" #: ../lib/SimpleCal.pm:28 msgid "February" msgstr "" #: ../lib/SimpleCal.pm:30 msgid "March" msgstr "" #: ../lib/SimpleCal.pm:32 msgid "April" msgstr "" #: ../lib/SimpleCal.pm:34 msgid "May" msgstr "" #: ../lib/SimpleCal.pm:36 msgid "June" msgstr "" #: ../lib/SimpleCal.pm:38 msgid "July" msgstr "" #: ../lib/SimpleCal.pm:40 msgid "August" msgstr "" #: ../lib/SimpleCal.pm:42 msgid "September" msgstr "" #: ../lib/SimpleCal.pm:44 msgid "October" msgstr "" #: ../lib/SimpleCal.pm:46 msgid "November" msgstr "" #: ../lib/SimpleCal.pm:48 msgid "December" msgstr "" #: ../lib/SimpleCal.pm:70 msgid "Sun" msgstr "" #: ../lib/SimpleCal.pm:71 msgid "Mon" msgstr "" #: ../lib/SimpleCal.pm:72 msgid "Tue" msgstr "" #: ../lib/SimpleCal.pm:73 msgid "Wed" msgstr "" #: ../lib/SimpleCal.pm:74 msgid "Thu" msgstr "" #: ../lib/SimpleCal.pm:75 msgid "Fri" msgstr "" #: ../lib/SimpleCal.pm:76 msgid "Sat" msgstr "" #~ msgid "Welcome to {package}!\n" #~ msgstr " {package}!\n" #~ msgid "Bye.\n" #~ msgstr "!\n" libintl-perl-1.26/sample/simplecal/lib/SimpleCal.pm000644 000765 000024 00000007170 12507434022 022524 0ustar00guidostaff000000 000000 #! /bin/false # vim: tabstop=4 package SimpleCal; use strict; # The text domain (identifier) of our package is 'com.cantanea.simplecal', # following the advice in the pod of Locale::TextDomain. use Locale::TextDomain qw (com.cantanea.simplecal); use base qw (Exporter); use vars qw (@EXPORT); @EXPORT = qw (month_name abbr_week_day is_leap_year); sub month_name ($) { my $month = shift; $month = 0 unless $month; $month %= 12; # This is of course stupid but explains things best. See the # function abbr_week_day() for a smarter approach. if ($month == 0) { return __"January"; } elsif ($month == 1) { return __"February"; } elsif ($month == 2) { return __"March"; } elsif ($month == 3) { return __"April"; } elsif ($month == 4) { return __"May"; } elsif ($month == 5) { return __"June"; } elsif ($month == 6) { return __"July"; } elsif ($month == 7) { return __"August"; } elsif ($month == 8) { return __"September"; } elsif ($month == 9) { return __"October"; } elsif ($month == 10) { return __"November"; } else { return __"December"; } } # This is smarter. We initialize an array with the English names first. # The function N__() is exported by Locale::TextDomain and returns # its argument unmodified. Its sole purpose is to mark the string as # being translatable, so that it will make it into the pot file for # our package. # # It is dangerous to use __() here! Why? Then the array will be translated # only once, at compile time. It is very likely that the locale settings # have not yet been initialized to the user preferences at this point # of time, and since the array is already created, the translation # will not produce the correct results. # # This should become clearer if you imagine that our library would be # part of a daemon that is running for days or even years. The array # would be initialized with the language that was set at program startup # and would then never change again, because you actually cache the # translations. my @abbr_week_days = ( N__"Sun", N__"Mon", N__"Tue", N__"Wed", N__"Thu", N__"Fri", N__"Sat", ); sub abbr_week_day ($) { my $wday = shift; $wday = 0 unless $wday; $wday %= 7; # The argument to __() is simply a string, not necessarily a string # constant. The following line will look up the English name in the # array, and then translates that string on the fly into the current # user language. return __($abbr_week_days[$wday]); # This can still be suboptimal because it translates the string again # and again. In situations where you are absolutely sure that the # user language will not change again, you may prefer to cache the # translations despite of the above hints, especially if you # call the function very many times. In a library you can usually # not be sure whether the user language can change or not and you # should avoid that. The message lookup is quite fast. # Instead of the above return directive we could also have written: # # return $__{$abbr_week_days[$wday]}; # # resp. # # return $__->{$abbr_week_days[$wday]}; # # It is basically a matter of taste whether you prefer the tied # hash lookup or the function call. } # Check whether the argument is a leap year. sub is_leap_year { my $year = shift; $year = 0 unless $year; return 1 if $year % 4 == 0 && ($year % 100 != 0 || $year % 400 == 0); return; } 1; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/sample/simplecal/bin/simplecal.pl000644 000765 000024 00000004725 12507434022 022630 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # vim: tabstop=4 use strict; # Include our little library. use SimpleCal; # For setlocale. use POSIX qw (setlocale); use Locale::Messages qw (LC_MESSAGES); # Our script contains translatable messages. We have to assign # it a text domain. Note that this is only needed here because the # script *itself* contains translatable messages from the text domain # "com.cantanea.simplecal". use Locale::TextDomain ('com.cantanea.simplecal'); use vars qw ($VERSION); $VERSION = '1.0'; # Set the locale according to the environment. setlocale (LC_MESSAGES, ""); # Print a greeting message. We want to be flexible with the package # name, and so we will make this a placeholder. my $package_name = "SimpleCal"; #print __x("Welcome to {package}!\n", package => $package_name); # Inquire current date and time. my @now = localtime; my $year = $now[5] + 1900; # Current year. my $month = $now[4]; # Current month in the range of 0-11. # Print the header for our calendar. my $month_name = SimpleCal::month_name ($month); print "\t$month_name $year\n"; # And now print the abbreviation for every day of the week. foreach my $i (0 .. 6) { # This makes the (insecure!) assumption that the abbreviated # week day is no longer than 5 characters. printf "%6s", abbr_week_day ($i); } # And a final newline. print "\n"; # The rest of the program only prints out the day numbers and is not # particularly interesting. # We will start at a Sunday where month day <= 0 and suppress negative dates # later. my $first_day = $now[3] - $now[6]; if ($first_day > 0) { $first_day %= 7; $first_day -= 7; } my $last_day; if ($month == 1) { if (SimpleCal::is_leap_year ($year)) { $last_day = 29; } else { $last_day = 28; } } elsif ($month == 3 || $month == 5 || $month == 8 || $month == 10) { $last_day = 30; } else { $last_day = 31; } my $day_of_week = 0; # Sunday. foreach my $mday ($first_day .. $last_day) { if ($mday <= 0) { printf "%6s", ' '; } else { printf "% 6d", $mday; } ++$day_of_week; if ($day_of_week == 7) { $day_of_week = 0; print "\n"; } } print "\n" if $day_of_week; # Say good bye. # TRANSLATORS: This may be a colloquial way of saying good bye to the user. #print __"Bye.\n"; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/lib/Locale/000755 000765 000024 00000000000 12727473405 016271 5ustar00guidostaff000000 000000 libintl-perl-1.26/lib/Locale/gettext_dumb.pm000755 000765 000024 00000030020 12716422333 021310 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Pure Perl implementation of Uniforum message translation. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::gettext_dumb; use Locale::gettext_pp; use vars qw (%EXPORT_TAGS @EXPORT_OK @ISA $VERSION); %EXPORT_TAGS = (locale_h => [ qw (gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset )], libintl_h => [ qw (LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL)], ); @EXPORT_OK = qw (gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset nl_putenv setlocale LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL); @ISA = qw (Exporter); *Locale::gettext_dumb::textdomain = \&Locale::gettext_pp::textdomain; *Locale::gettext_dumb::bindtextdomain = \&Locale::gettext_pp::bindtextdomain; *Locale::gettext_dumb::bind_textdomain_codeset = \&Locale::gettext_pp::bind_textdomain_codeset; *Locale::gettext_dumb::nl_putenv = \&Locale::gettext_pp::nl_putenv; *Locale::gettext_dumb::LC_CTYPE = \&Locale::gettext_pp::LC_CTYPE; *Locale::gettext_dumb::LC_NUMERIC = \&Locale::gettext_pp::LC_NUMERIC; *Locale::gettext_dumb::LC_TIME= \&Locale::gettext_pp::LC_TIME; *Locale::gettext_dumb::LC_COLLATE = \&Locale::gettext_pp::LC_COLLATE; *Locale::gettext_dumb::LC_MONETARY = \&Locale::gettext_pp::LC_MONETARY; *Locale::gettext_dumb::LC_MESSAGES = \&Locale::gettext_pp::LC_MESSAGES; *Locale::gettext_dumb::LC_ALL = \&Locale::gettext_pp::LC_ALL; sub gettext ($) { my ($msgid) = @_; return dcnpgettext ('', undef, $msgid, undef, undef, undef); } sub dgettext ($$) { my ($domainname, $msgid) = @_; return dcnpgettext ($domainname, undef, $msgid, undef, undef, undef); } sub dcgettext ($$$) { my ($domainname, $msgid, $category) = @_; return dcnpgettext ($domainname, undef, $msgid, undef, undef, undef); } sub ngettext ($$$) { my ($msgid, $msgid_plural, $n) = @_; return dcnpgettext ('', undef, $msgid, $msgid_plural, $n, undef); } sub dngettext ($$$$) { my ($domainname, $msgid, $msgid_plural, $n) = @_; return dcnpgettext ($domainname, undef, $msgid, $msgid_plural, $n, undef); } sub dcngettext ($$$$$) { my ($domainname, $msgid, $msgid_plural, $n, $category) = @_; return dcnpgettext ($domainname, undef, $msgid, $msgid_plural, $n, , $category); } sub pgettext ($$) { my ($msgctxt, $msgid) = @_; return dcnpgettext ('', $msgctxt, $msgid, undef, undef, undef); } sub dpgettext ($$$) { my ($domainname, $msgctxt, $msgid) = @_; return dcnpgettext ($domainname, $msgctxt, $msgid, undef, undef, undef); } sub dcpgettext($$$$) { my ($domainname, $msgctxt, $msgid, $category) = @_; return dcnpgettext ($domainname, $msgctxt, $msgid, undef, undef, undef); } sub npgettext ($$$$) { my ($msgctxt, $msgid, $msgid_plural, $n) = @_; return dcnpgettext ('', $msgctxt, $msgid, $msgid_plural, $n, undef); } sub dnpgettext ($$$$$) { my ($domainname, $msgctxt, $msgid, $msgid_plural, $n) = @_; return dcnpgettext ($domainname, $msgctxt, $msgid, $msgid_plural, $n, undef); } sub dcnpgettext ($$$$$$) { my ($domainname, $msgctxt, $msgid, $msgid_plural, $n, $category) = @_; my $locale; if (exists $ENV{LANGUAGE} && length $ENV{LANGUAGE}) { $locale = $ENV{LANGUAGE}; $locale =~ s/:.*//s; } elsif (exists $ENV{LC_ALL} && length $ENV{LC_ALL}) { $locale = $ENV{LC_ALL}; } elsif (exists $ENV{LANG} && length $ENV{LANG}) { $locale = $ENV{LANG}; } elsif (exists $ENV{LC_MESSAGES} && length $ENV{LC_MESSAGES}) { $locale = $ENV{LC_MESSAGES}; } else { $locale = 'C'; } return Locale::gettext_pp::_dcnpgettext_impl ($domainname, $msgctxt, $msgid, $msgid_plural, $n, $category, $locale); } sub setlocale($;$) { &POSIX::setlocale; } 1; __END__ =head1 NAME Locale::gettext_dumb - Locale unaware Implementation of Uniforum Message Translation =head1 SYNOPSIS use Locale::gettext_dumb (:locale_h :libintl_h); # Normally, you will not want to include this module directly but this way: use Locale::Messages; my $selected = Locale::Messages->select_package ('gettext_dumb'); gettext $msgid; dgettext $domainname, $msgid; dcgettext $domainname, $msgid, LC_MESSAGES; ngettext $msgid, $msgid_plural, $count; dngettext $domainname, $msgid, $msgid_plural, $count; dcngettext $domainname, $msgid, $msgid_plural, $count, LC_MESSAGES; pgettext $msgctxt, $msgid; dpgettext $domainname, $msgctxt, $msgid; dcpgettext $domainname, $msgctxt, $msgid, LC_MESSAGES; npgettext $msgctxt, $msgid, $msgid_plural, $count; dnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count; dcnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES; textdomain $domainname; bindtextdomain $domainname, $directory; bind_textdomain_codeset $domainname, $encoding; my $category = LC_CTYPE; my $category = LC_NUMERIC; my $category = LC_TIME; my $category = LC_COLLATE; my $category = LC_MONETARY; my $category = LC_MESSAGES; my $category = LC_ALL; =head1 DESCRIPTION B This module is experimental. It may not work as described! The module B does exactly the same as Locale::gettext_xs(3pm) or Locale::gettext_pp(3pm). While both other modules use POSIX::setlocale() to determine the currently selected locale, this backend only checks the environment variables LANGUAGE, LANG, LC_ALL, LC_MESSAGES (in that order), when it tries to locate a message catalog (a .mo file). This class was introduced in libintl-perl 1.22. =head1 USAGE This module should not be used for desktop software or scripts run locally. Why? If you use a message catalog for example in Danish in UTF-8 (da_DA.UTF8) but the system locale is set to Russian with KOI8-R (ru_RU.KOI8-R) you may produce invalid output, either invalid multi-byte sequences or invalid text, depending on how you look at it. That will happen, when you mix output from B with locale-dependent output from the operating system like the contents of the variable "$!", date and time formatting functions (localtime(), gmtime(), POSIX::strftime() etc.), number formatting with printf() and friends, and so on. A typical usage scenario looks like this: You have a server application (for example a web application) that is supposed to display a fixed set of messages in many languages. If you want to do this with Locale::gettext_xs(3pm) or Locale::gettext_pp(3pm), you have to install the locale data for all of those languages. Otherwise, translating the messages will not work. With Locale::gettext_dumb(3pm) you can relax these requirements, and display messages for all languages that you have mo files for. On the other hand, you will soon reach limits with this approach. Almost any application requires more than bare translation of messages for localisation. You want to formatted dates and times, you want to display numbers in the correct formatting for the selected languages, and you may want to display system error messages ("$!"). In practice, Locale::gettext_dumb(3pm) is still useful in these scenarios. Your users will have to live with the fact that the presented output is in different languages resp. for different locales, when "their" locale is not installed on your system. More dangerous is mixing output in different character sets but that can be easily avoided. Simply make sure that B uses UTF-8 (for example by setting the environment variable OUTPUT_CHARSET or by calling bind_textdomain_codeset()) and make sure that the system locale also uses UTF-8, for example "en_US.UTF8". If that fails, switch to a locale that uses a subset of UTF-8. In practice that will be US-ASCII, the character set used by the default locale "C" resp. "POSIX". Your application will then to a certain extent mix output for different localisations resp. languages. But this is completely under your control. =head1 EXAMPLE See above! Normally you should not use this module! However, let us assume you have read the warnings. In a web application you would do something like this: use Locale::TextDomain qw (com.example.yourapp); use Locale::Messages qw (nl_putenv LC_ALL bindtextdomain bind_textdomain_codeset); use Locale::Util qw (web_set_locale); use POSIX qw (setlocale); # First try to switch to the locale requested by the user. If you # know it you can try to pass it to setlocale like this: # # my $hardcoded_locale = 'fr_FR.UTF-8'; # my $success = POSIX::setlocale (LC_ALL, $hardcoded_locale); # # However, we try to let libintl-perl do a better job for us: my $success = web_set_locale $ENV{HTTP_ACCEPT_LANGUAGE}, $ENV{HTTP_ACCEPT_CHARSET}; # Note: If your application forces the use of UTF-8 for its output # you should pass 'UTF-8' as the second argument to web_set_locale # instead of $ENV{HTTP_ACCEPT_CHARSET}. if (!$success) { # Did not work. Switch to the dumb interface of # Locale::Messages. Locale::Messages->select_package ('gettext_dumb'); # And try to switch to a default locale: if (!setlocale (LC_ALL, 'en_US.UTF-8')) { # Still no luck. Enforce at least US-ASCII: setlocale (LC_ALL, 'C'); } bind_textdomain_codeset 'com.example.yourapp', 'utf-8'; } If your application forces the usage of UTF-8 you should ignore the environment variable =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::TextDomain(3pm), Locale::Messages(3pm), Encode(3pm), perllocale(3pm), POSIX(3pm), perl(1), gettext(1), gettext(3) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: libintl-perl-1.26/lib/Locale/gettext_pp.pm000755 000765 000024 00000065765 12716422333 021030 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Pure Perl implementation of Uniforum message translation. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::gettext_pp; use strict; require 5.004; use vars qw ($__gettext_pp_default_dir $__gettext_pp_textdomain $__gettext_pp_domain_bindings $__gettext_pp_domain_codeset_bindings $__gettext_pp_domains $__gettext_pp_recoders $__gettext_pp_unavailable_dirs $__gettext_pp_domain_cache $__gettext_pp_alias_cache $__gettext_pp_context_glue); use locale; use File::Spec; BEGIN { $__gettext_pp_textdomain = 'messages'; $__gettext_pp_domain_bindings = {}; $__gettext_pp_domain_codeset_bindings = {}; $__gettext_pp_domains = {}; $__gettext_pp_recoders = {}; $__gettext_pp_unavailable_dirs = {}; $__gettext_pp_domain_cache = {}; $__gettext_pp_alias_cache = {}; # The separator between msgctxt and msgid in a .mo file. */ $__gettext_pp_context_glue = "\004"; $__gettext_pp_default_dir = ''; for my $dir (qw (/usr/share/locale /usr/local/share/locale)) { if (-d $dir) { $__gettext_pp_default_dir = $dir; last; } } } BEGIN { require POSIX; require Exporter; use IO::Handle; require Locale::Recode; local $@; my ($has_messages, $five_ok); $has_messages = eval '&POSIX::LC_MESSAGES'; unless (defined $has_messages && length $has_messages) { $five_ok = ! grep {my $x = eval "&POSIX::$_" || 0; $x eq '5';} qw (LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL); if ($five_ok) { $five_ok = POSIX::setlocale (5, ''); } } if (defined $has_messages && length $has_messages) { eval <<'EOF'; sub LC_MESSAGES() { local $!; # Do not clobber errno! return &POSIX::LC_MESSAGES; } EOF } elsif ($five_ok) { eval <<'EOF'; sub LC_MESSAGES() { local $!; # Do not clobber errno! # Hack: POSIX.pm deems LC_MESSAGES an invalid macro until # Perl 5.8.0. However, on LC_MESSAGES should be 5 ... return 5; } EOF } else { eval <<'EOF'; sub LC_MESSAGES() { local $!; # Do not clobber errno! # This fallback value is widely used, # when LC_MESSAGES is not available. return 1729; } EOF } } use vars qw (%EXPORT_TAGS @EXPORT_OK @ISA $VERSION); %EXPORT_TAGS = (locale_h => [ qw ( gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset ) ], libintl_h => [ qw (LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL) ], ); @EXPORT_OK = qw (gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset nl_putenv setlocale LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL); @ISA = qw (Exporter); my $has_nl_langinfo; sub __load_catalog; sub __load_domain; sub __locale_category; sub __untaint_plural_header; sub __compile_plural_function; sub LC_NUMERIC() { &POSIX::LC_NUMERIC; } sub LC_CTYPE() { &POSIX::LC_CTYPE; } sub LC_TIME() { &POSIX::LC_TIME; } sub LC_COLLATE() { &POSIX::LC_COLLATE; } sub LC_MONETARY() { &POSIX::LC_MONETARY; } sub LC_ALL() { &POSIX::LC_ALL; } sub textdomain(;$) { my $new_domain = shift; $__gettext_pp_textdomain = $new_domain if defined $new_domain && length $new_domain; return $__gettext_pp_textdomain; } sub bindtextdomain($;$) { my ($domain, $directory) = @_; my $retval; if (defined $domain && length $domain) { if (defined $directory && length $directory) { $retval = $__gettext_pp_domain_bindings->{$domain} = $directory; } elsif (exists $__gettext_pp_domain_bindings->{$domain}) { $retval = $__gettext_pp_domain_bindings->{$domain}; } else { $retval = $__gettext_pp_default_dir; } $retval = '/usr/share/locale' unless defined $retval && length $retval; return $retval; } else { return; } } sub bind_textdomain_codeset($;$) { my ($domain, $codeset) = @_; if (defined $domain && length $domain) { if (defined $codeset && length $codeset) { return $__gettext_pp_domain_codeset_bindings->{$domain} = $codeset; } elsif (exists $__gettext_pp_domain_codeset_bindings->{$domain}) { return $__gettext_pp_domain_codeset_bindings->{$domain}; } } return; } sub gettext($) { my ($msgid) = @_; return dcnpgettext ('', undef, $msgid, undef, undef, undef); } sub dgettext($$) { my ($domainname, $msgid) = @_; return dcnpgettext ($domainname, undef, $msgid, undef, undef, undef); } sub dcgettext($$$) { my ($domainname, $msgid, $category) = @_; return dcnpgettext ($domainname, undef, $msgid, undef, undef, undef); } sub ngettext($$$) { my ($msgid, $msgid_plural, $n) = @_; return dcnpgettext ('', undef, $msgid, $msgid_plural, $n, undef); } sub dngettext($$$$) { my ($domainname, $msgid, $msgid_plural, $n) = @_; return dcnpgettext ($domainname, undef, $msgid, $msgid_plural, $n, undef); } sub dcngettext($$$$$) { my ($domainname, $msgid, $msgid_plural, $n, $category) = @_; return dcnpgettext ($domainname, undef, $msgid, $msgid_plural, $n, , $category); } sub pgettext($$) { my ($msgctxt, $msgid) = @_; return dcnpgettext ('', $msgctxt, $msgid, undef, undef, undef); } sub dpgettext($$$) { my ($domainname, $msgctxt, $msgid) = @_; return dcnpgettext ($domainname, $msgctxt, $msgid, undef, undef, undef); } sub dcpgettext($$$$) { my ($domainname, $msgctxt, $msgid, $category) = @_; return dcnpgettext ($domainname, $msgctxt, $msgid, undef, undef, undef); } sub npgettext($$$$) { my ($msgctxt, $msgid, $msgid_plural, $n) = @_; return dcnpgettext ('', $msgctxt, $msgid, $msgid_plural, $n, undef); } sub dnpgettext($$$$$) { my ($domainname, $msgctxt, $msgid, $msgid_plural, $n) = @_; return dcnpgettext ($domainname, $msgctxt, $msgid, $msgid_plural, $n, undef); } # This is the actual implementation of dncpgettext. It is also used by the # corresponding function in Locale::gettext_dumb. sub _dcnpgettext_impl { my ($domainname, $msgctxt, $msgid, $msgid_plural, $n, $category, $locale) = @_; return unless defined $msgid; my $plural = defined $msgid_plural; my $msg_ctxt_id = defined $msgctxt ? join($__gettext_pp_context_glue, ($msgctxt, $msgid)) : $msgid; local $!; # Do not clobber errno! # This is also done in __load_domain but we need a proper value. $domainname = $__gettext_pp_textdomain unless defined $domainname && length $domainname; # Category is always LC_MESSAGES (other categories are ignored). my $category_name = 'LC_MESSAGES'; $category = LC_MESSAGES; my $domains = __load_domain ($domainname, $category, $category_name, $locale); my @trans = (); my $domain; my $found; foreach my $this_domain (@$domains) { if ($this_domain && defined $this_domain->{messages}->{$msg_ctxt_id}) { @trans = @{$this_domain->{messages}->{$msg_ctxt_id}}; shift @trans; $domain = $this_domain; $found = 1; last; } } @trans = ($msgid, $msgid_plural) unless @trans; my $trans = $trans[0]; if ($plural) { if ($domain) { my $nplurals = 0; ($nplurals, $plural) = &{$domain->{plural_func}} ($n); $plural = 0 unless defined $plural; $nplurals = 0 unless defined $nplurals; $plural = 0 if $nplurals <= $plural; } else { $plural = $n != 1 || 0; } $trans = $trans[$plural] if defined $trans[$plural]; } if ($found && defined $domain->{po_header}->{charset}) { my $input_codeset = $domain->{po_header}->{charset}; # Convert into output charset. my $output_codeset = $__gettext_pp_domain_codeset_bindings->{$domainname}; $output_codeset = $ENV{OUTPUT_CHARSET} unless defined $output_codeset; $output_codeset = __get_codeset ($category, $category_name, $domain->{locale_id}) unless defined $output_codeset; unless (defined $output_codeset) { # Still no point. my $lc_ctype = __locale_category (POSIX::LC_CTYPE(), 'LC_CTYPE'); $output_codeset = $1 if $lc_ctype =~ /^[a-z]{2}(?:_[A-Z]{2})?\.([^@]+)/; } # No point. :-( $output_codeset = $domain->{po_header}->{charset} unless defined $output_codeset; if (exists $__gettext_pp_domain_cache->{$output_codeset}) { $output_codeset = $__gettext_pp_domain_cache->{$output_codeset}; } else { $output_codeset = 'utf-8' if lc $output_codeset eq 'utf8'; $output_codeset = $__gettext_pp_domain_cache->{$output_codeset} = Locale::Recode->resolveAlias ($output_codeset); } if (defined $output_codeset && $output_codeset ne $domain->{po_header}->{charset}) { # We have to convert. my $recoder; if (exists $__gettext_pp_recoders->{$input_codeset}->{$output_codeset}) { $recoder = $__gettext_pp_recoders->{$input_codeset}->{$output_codeset}; } else { $recoder = $__gettext_pp_recoders->{$input_codeset}->{$output_codeset} = Locale::Recode->new (from => $input_codeset, to => $output_codeset, ); } $recoder->recode ($trans); } } return $trans; } sub dcnpgettext ($$$$$$) { return &_dcnpgettext_impl; } sub nl_putenv ($) { my ($envspec) = @_; return unless defined $envspec; return unless length $envspec; return if substr ($envspec, 0, 1) eq '='; my ($var, $value) = split /=/, $envspec, 2; # In Perl we *could* set empty environment variables even under # MS-DOS, but for compatibility reasons, we implement the # brain-damaged behavior of the Microsoft putenv(). if ($^O eq 'MSWin32') { $value = '' unless defined $value; if (length $value) { $ENV{$var} = $value; } else { delete $ENV{$var}; } } else { if (defined $value) { $ENV{$var} = $value; } else { delete $ENV{$var}; } } return 1; } sub setlocale($;$) { require POSIX; &POSIX::setlocale; } sub __load_domain { my ($domainname, $category, $category_name, $locale) = @_; # If no locale was selected for the requested locale category, # l10n is disabled completely. This matches the behavior of GNU # gettext. if ($category != LC_MESSAGES) { # Not supported. return []; } if (!defined $locale && $category != 1729) { $locale = POSIX::setlocale ($category); if (!defined $locale || 'C' eq $locale || 'POSIX' eq $locale) { return []; } } $domainname = $__gettext_pp_textdomain unless defined $domainname && length $domainname; my $dir = bindtextdomain ($domainname, ''); $dir = $__gettext_pp_default_dir unless defined $dir && length $dir; return [] unless defined $dir && length $dir; my @locales; my $cache_key; if (defined $ENV{LANGUAGE} && length $ENV{LANGUAGE}) { @locales = split /:/, $ENV{LANGUAGE}; $cache_key = $ENV{LANGUAGE}; } elsif (!defined $locale) { # The system does not have LC_MESSAGES. Guess the value. @locales = $cache_key = __locale_category ($category, $category_name); } else { @locales = $cache_key = $locale; } # Have we looked that one up already? my $domains = $__gettext_pp_domain_cache->{$dir}->{$cache_key}->{$category_name}->{$domainname}; return $domains if defined $domains; return [] unless @locales; my @dirs = ($dir); my @tries = (@locales); my %locale_lookup = map { $_ => $_ } @tries; foreach my $locale (@locales) { if ($locale =~ /^([a-z][a-z]) (?:(_[A-Z][A-Z])? (\.[-_A-Za-z0-9]+)? )? (\@[-_A-Za-z0-9]+)?$/x) { if (defined $3) { defined $2 ? push @tries, $1 . $2 . $3 : push @tries, $1 . $3; } if (defined $2) { push @tries, $1 . $2; $locale_lookup{$1 . $2} = $locale; } if (defined $1) { push @tries, $1 if defined $1; $locale_lookup{$1} = $locale; } } } push @dirs, $__gettext_pp_default_dir if $__gettext_pp_default_dir && $dir ne $__gettext_pp_default_dir; my %seen = (); foreach my $basedir (@dirs) { foreach my $try (@tries) { my $fulldir = "$basedir/$try/$category_name"; next if $seen{$fulldir}++; # If the cache for unavailable directories is removed, # the three lines below should be replaced by: # 'next unless -d $fulldir;' next if $__gettext_pp_unavailable_dirs->{$fulldir}; ++$__gettext_pp_unavailable_dirs->{$fulldir} and next unless -d $fulldir; my $filename = File::Spec->catfile ($fulldir, "$domainname.mo"); my $domain = __load_catalog ($filename, $try); next unless $domain; $domain->{locale_id} = $locale_lookup{$try}; push @$domains, $domain; } } $__gettext_pp_domain_cache->{$dir} ->{$cache_key} ->{$category_name} ->{$domainname} = $domains; $domains = [] unless defined $domains; return $domains; } sub __load_catalog { my ($filename, $locale) = @_; # Alternatively we could check the filename for evil characters ... # (Important for CGIs). return unless -f $filename && -r $filename; local $/; local *HANDLE; open HANDLE, "<$filename" or return; binmode HANDLE; my $raw = ; close HANDLE; # Corrupted? return if ! defined $raw || length $raw < 28; my $filesize = length $raw; # Read the magic number in order to determine the byte order. my $domain = {}; my $unpack = 'N'; $domain->{potter} = unpack $unpack, substr $raw, 0, 4; if ($domain->{potter} == 0xde120495) { $unpack = 'V'; } elsif ($domain->{potter} != 0x950412de) { return; } my $domain_unpack = $unpack x 6; my ($revision, $num_strings, $msgids_off, $msgstrs_off, $hash_size, $hash_off) = unpack (($unpack x 6), substr $raw, 4, 24); return unless $revision == 0; # Invalid revision number. $domain->{revision} = $revision; $domain->{num_strings} = $num_strings; $domain->{msgids_off} = $msgids_off; $domain->{msgstrs_off} = $msgstrs_off; $domain->{hash_size} = $hash_size; $domain->{hash_off} = $hash_off; return if $msgids_off + 4 * $num_strings > $filesize; return if $msgstrs_off + 4 * $num_strings > $filesize; my @orig_tab = unpack (($unpack x (2 * $num_strings)), substr $raw, $msgids_off, 8 * $num_strings); my @trans_tab = unpack (($unpack x (2 * $num_strings)), substr $raw, $msgstrs_off, 8 * $num_strings); my $messages = {}; for (my $count = 0; $count < 2 * $num_strings; $count += 2) { my $orig_length = $orig_tab[$count]; my $orig_offset = $orig_tab[$count + 1]; my $trans_length = $trans_tab[$count]; my $trans_offset = $trans_tab[$count + 1]; return if $orig_offset + $orig_length > $filesize; return if $trans_offset + $trans_length > $filesize; my @origs = split /\000/, substr $raw, $orig_offset, $orig_length; my @trans = split /\000/, substr $raw, $trans_offset, $trans_length; # The singular is the key, the plural plus all translations is the # value. my $msgid = $origs[0]; $msgid = '' unless defined $msgid && length $msgid; my $msgstr = [ $origs[1], @trans ]; $messages->{$msgid} = $msgstr; } $domain->{messages} = $messages; # Try to find po header information. my $po_header = {}; my $null_entry = $messages->{''}->[1]; if ($null_entry) { my @lines = split /\n/, $null_entry; foreach my $line (@lines) { my ($key, $value) = split /:/, $line, 2; $key =~ s/-/_/g; $po_header->{lc $key} = $value; } } $domain->{po_header} = $po_header; if (exists $domain->{po_header}->{content_type}) { my $content_type = $domain->{po_header}->{content_type}; if ($content_type =~ s/.*=//) { $domain->{po_header}->{charset} = $content_type; } } my $code = $domain->{po_header}->{plural_forms} || ''; # Whitespace, locale-independent. my $s = '[ \t\r\n\013\014]'; # Untaint the plural header. # Keep line breaks as is (Perl 5_005 compatibility). $code = $domain->{po_header}->{plural_forms} = __untaint_plural_header $code; $domain->{plural_func} = __compile_plural_function $code; unless (defined $domain->{po_header}->{charset} && length $domain->{po_header}->{charset} && $locale =~ /^(?:[a-z][a-z]) (?:(?:_[A-Z][A-Z])? (\.[-_A-Za-z0-9]+)? )? (?:\@[-_A-Za-z0-9]+)?$/x) { $domain->{po_header}->{charset} = $1; } if (defined $domain->{po_header}->{charset}) { $domain->{po_header}->{charset} = Locale::Recode->resolveAlias ($domain->{po_header}->{charset}); } return $domain; } sub __locale_category { my ($category, $category_name) = @_; local $@; my $value = eval {POSIX::setlocale ($category)}; # We support only XPG syntax, i. e. # language[_territory[.codeset]][@modifier]. undef $value unless (defined $value && length $value && $value =~ /^[a-z][a-z] (?:_[A-Z][A-Z] (?:\.[-_A-Za-z0-9]+)? )? (?:\@[-_A-Za-z0-9]+)?$/x); unless ($value) { $value = $ENV{LC_ALL}; $value = $ENV{$category_name} unless defined $value && length $value; $value = $ENV{LANG} unless defined $value && length $value; return 'C' unless defined $value && length $value; } return $value if $value ne 'C' && $value ne 'POSIX'; } sub __get_codeset { my ($category, $category_name, $locale_id) = @_; local $@; unless (defined $has_nl_langinfo) { eval { require I18N::Langinfo; }; $has_nl_langinfo = !$@; } if ($has_nl_langinfo) { # Try to set the locale via the specified id. my $saved_locale = eval { POSIX::setlocale (LC_ALL) }; my $had_lc_all = exists $ENV{LC_ALL}; my $saved_lc_all = $ENV{LC_ALL} if $had_lc_all; # Now try to set the locale via the environment. There is no # point in calling the langinfo routines if this fails. $ENV{LC_ALL} = $locale_id; my $codeset; my $lc_all = eval { POSIX::setlocale (LC_ALL, $locale_id); }; $codeset = I18N::Langinfo::langinfo (I18N::Langinfo::CODESET()) if defined $lc_all; # Restore environment. if ($saved_locale) { eval { POSIX::setlocale (LC_ALL, $saved_locale); } } if ($had_lc_all) { $ENV{LC_ALL} = $saved_lc_all if $had_lc_all; } else { delete $ENV{LC_ALL}; } return $codeset; } return; } sub __untaint_plural_header { my ($code) = @_; # Whitespace, locale-independent. my $s = '[ \t\r\n\013\014]'; if ($code =~ m{^($s* nplurals$s*=$s*[0-9]+ $s*;$s* plural$s*=$s*(?:$s|[-\?\|\&=!<>+*/\%:;a-zA-Z0-9_\(\)])+ )}xms) { return $1; } return ''; } sub __compile_plural_function { my ($code) = @_; # The leading and trailing space is necessary to be able to match # against word boundaries. my $plural_func; if (length $code) { my $code = ' ' . $code . ' '; $code =~ s/(?<=[^_a-zA-Z0-9])[_a-z][_A-Za-z0-9]*(?=[^_a-zA-Z0-9])/\$$&/gs; $code = "sub { my \$n = shift || 0; my (\$plural, \$nplurals); $code; return (\$nplurals, \$plural ? \$plural : 0); }"; # Now try to evaluate the code. There is no need to run the code in # a Safe compartment. The above substitutions should have destroyed # all evil code. Corrections are welcome! #warn $code; $plural_func = eval $code; #warn $@ if $@; undef $plural_func if $@; } # Default is Germanic plural (which is incorrect for French). $plural_func = eval "sub { (2, 1 != shift || 0) }" unless $plural_func; return $plural_func; } 1; __END__ =head1 NAME Locale::gettext_pp - Pure Perl Implementation of Uniforum Message Translation =head1 SYNOPSIS use Locale::gettext_pp (:locale_h :libintl_h); gettext $msgid; dgettext $domainname, $msgid; dcgettext $domainname, $msgid, LC_MESSAGES; ngettext $msgid, $msgid_plural, $count; dngettext $domainname, $msgid, $msgid_plural, $count; dcngettext $domainname, $msgid, $msgid_plural, $count, LC_MESSAGES; pgettext $msgctxt, $msgid; dpgettext $domainname, $msgctxt, $msgid; dcpgettext $domainname, $msgctxt, $msgid, LC_MESSAGES; npgettext $msgctxt, $msgid, $msgid_plural, $count; dnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count; dcnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES; textdomain $domainname; bindtextdomain $domainname, $directory; bind_textdomain_codeset $domainname, $encoding; my $category = LC_CTYPE; my $category = LC_NUMERIC; my $category = LC_TIME; my $category = LC_COLLATE; my $category = LC_MONETARY; my $category = LC_MESSAGES; my $category = LC_ALL; =head1 DESCRIPTION The module B is the low-level interface to message translation according to the Uniforum approach that is for example used in GNU gettext and Sun's Solaris. Normally you should not use this module directly, but the high level interface Locale::TextDomain(3) that provides a much simpler interface. This description is therefore deliberately kept brief. Please refer to the GNU gettext documentation available at L for in-depth and background information on the topic. =head1 FUNCTIONS The module exports by default nothing. Every function has to be imported explicitely or via an export tag (L<"EXPORT TAGS">). =over 4 =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B See L. =item B =item B See L. =item B See L. =back =head1 CONSTANTS You can (maybe) get the same constants from POSIX(3); see there for a detailed description =over 4 =item B =item B =item B =item B =item B =item B =item B See L for more information. =back =head1 EXPORT TAGS This module does not export anything unless explicitely requested. You can import groups of functions via two tags: =over 4 =item B Imports the functions that are normally defined in the C include file F: =over 8 =item B =item B =item B =item B =item B =item B =item B Introduced with libintl-perl 1.17. =item B Introduced with libintl-perl 1.17. =item B Introduced with libintl-perl 1.17. =item B Introduced with libintl-perl 1.17. =item B Introduced with libintl-perl 1.17. =item B Introduced with libintl-perl 1.17. =item B =item B =item B =back =item B Imports the locale category constants: =over 8 =item B =item B =item B =item B =item B =item B =item B =back =back =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::TextDomain(3pm), Locale::Messages(3pm), Encode(3pm), perllocale(3pm), POSIX(3pm), perl(1), gettext(1), gettext(3) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/gettext_xs.pod000755 000765 000024 00000007073 12716422333 021175 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Pure Perl implementation of Uniforum message translation. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. =head1 NAME Locale::gettext_xs - XS Implementation of Uniforum Message Translation =head1 SYNOPSIS use gettext_xs (:locale_h :libintl_h); gettext $msgid; dgettext $domainname, $msgid; dcgettext $domainname, $msgid, LC_MESSAGES; ngettext $msgid, $msgid_plural, $count; dngettext $domainname, $msgid, $msgid_plural, $count; dcngettext $domainname, $msgid, $msgid_plural, $count, LC_MESSAGES; pgettext $msgctxt, $msgid; dpgettext $domainname, $msgctxt, $msgid; dcpgettext $domainname, $msgctxt, $msgid, LC_MESSAGES; npgettext $msgctxt, $msgid, $msgid_plural, $count; dnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count; dcnpgettext $domainname, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES; textdomain $domainname; bindtextdomain $domainname, $directory; bind_textdomain_codeset $domainname, $encoding; my $category = LC_CTYPE; my $category = LC_NUMERIC; my $category = LC_TIME; my $category = LC_COLLATE; my $category = LC_MONETARY; my $category = LC_MESSAGES; my $category = LC_ALL; =head1 DESCRIPTION The module B is the low-level interface to message translation according to the Uniforum approach that is for example used in GNU gettext and Sun's Solaris. The module does not necessarily work on your system. It depends on the presence of shared libraries that are not always available. The higher-level modules Locale::TextDomain::(3), resp. Locale::Messages(3) will fall back to a pure Perl version if boostrapping B fails. The interface of B is mostly identical to the pure Perl version as described in Locale::gettext_pp(3), see there for details. Differences are outlined below. B is downwards compatible to Locale::gettext(3) by Phillip Vandry . You can use it as replacement for Locale::gettext(3). Please note that directory names passed to the function bindtextdomain() are automatically converted from Perl semantics (slash as directory separator) to local semantics (for example the backslash for MS-DOS). =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! The module is based on the work of Phillip Vandry in Locale::gettext(3). =head1 SEE ALSO Locale::TextDomain(3pm), Locale::gettext_pp(3pm), Locale::gettext(3pm), Locale::Messages(3pm), File::Spec(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/libintlFAQ.pod000644 000765 000024 00000024251 12716420335 020756 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # High-level interface to Perl i18n. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. =head1 NAME Locale::TextDomain::FAQ - Frequently asked questions for libintl-perl =head1 DESCRIPTION This FAQ =head1 QUESTIONS AND ANSWERS =head2 Why is libintl-perl so big? Why don't you use Encode(3pm) for character set conversion instead of rolling your own version? Encode(3pm) requires at least Perl 5.7.x, whereas libintl-perl needs to be operational on Perl 5.004. Internally, libintl-perl uses Encode(3pm) if it is available. =head2 Why do the gettext functions always unset the utf-8 flag on the strings it returns? Because the gettext functions do not know whether the string is encoded in utf-8 or not. Instead of taking guesses, it rather unsets the flag. =head2 Can I set the utf-8 flag on strings returned by the gettext family of functions? Yes, but it is not recommended. If you absolutely want to do it, use the function bind_textdomain_filter in Locale::Messages for it. The strings returned by gettext and friends are by default encoded in the preferred charset for the user's locale, but there is no portable way to find out, whether this is utf-8 or not. That means, you either have to enforce utf-8 as the output character set (by means of bind_textdomain_codeset() and/or the environment variable OUTPUT_CHARSET) and override the user preference, or you run the risk of marking strings as utf-8 which really aren't utf-8. The whole concept behind that utf-8 flag introduced in Perl 5.6 is seriously broken, and the above described dilemma is a proof for that. The best thing you can do with that flag is get rid of it, and turn it off. Your code will benefit from it and become less error prone, more portable and faster. =head2 Why do non-ASCII characters in my Gtk2 application look messed up? The Perl binding of Gtk2 has a design flaw. It expects all UI messages to be in UTF-8 and it also expects messages to be flagged as utf-8. The only solution for you is to enforce all your po files to be encoded in utf-8 (convert them manually, if you need to), and also enforce that charset in your application, regardless of the user's locale settings. Assumed that your textdomain is "org.bar.foo", you have to code the following into your main module or script: BEGIN { bind_textdomain_filter 'org.bar.foo', \&turn_utf_8_on; bind_textdomain_codeset 'org.bar.foo', 'utf-8'; } See the File GTestRunner.pm of Test::Unit::GTestRunner(3pm) for details. =head2 How do I interface Glade2 UI definitions with libintl-perl? Gtk2::GladeXML(3pm) seems to ignore calls to bind_textdomain(). See the File GTestRunner.pm of Test::Unit::GTestRunner(3pm) for a possible solution. =head2 Why does Locale::TextDomain use a double underscore? I am used to a single underscore from C or other languages. Function names that consist of exactly one non-alphanumerical character make the function automatically global in Perl. Besides, in Perl 6 the concatenation operator will be the underscore instead of the dot. =head2 How do I switch languages or force a certain language independently from user settings read from the environment? The simple answer is: use POSIX qw (setlocale LC_ALL); my $language = 'fr'; my $country = 'FR'; my $charset = 'iso-8859-1'; setlocale LC_ALL, "${language}_$country.$charset"; Sadly enough, this will fail in many cases. The problem is that locale identifiers are not standardized and are completely system-dependent. Not only their overall format, but also other details like case-sensitivity. Some systems are very forgiving about the system - for example normalizing charset descriptions - others very strict. In order to be reasonably platform independent, you should try a list of possible locale identifiers for your desired settings. This is about what I would try for achieving the above: my @tries = qw ( fr_FR.iso-8859-1 fr_FR.iso8859-1 fr_FR.iso88591 fr_FR.ISO-8859-1 fr_FR.ISO8859-1 fr_FR.ISO88591 fr.iso-8859-1 fr.iso8859-1 fr.iso88591 fr.ISO-8859-1 fr.ISO8859-1 fr.ISO88591 fr_FR French_France.iso-8859-1 French_France.iso8859-1 French_France.iso88591 French_France.ISO-8859-1 French_France.ISO8859-1 French_France.ISO88591 French.iso-8859-1 French.iso8859-1 French.iso88591 French.ISO-8859-1 French.ISO8859-1 French.ISO88591 ); foreach my $try (@tries) { last if setlocale LC_ALL, $try; } Set Locale::Util(3pm) for functions that help you with this. Alternatively, you can force a certain language by setting the environment variables LANGUAGE, LANG and OUTPUT_CHARSET, but this is only guaranteed to work, if you use the pure Perl implementation of gettext (see the documentation for select_package() in Locale::Messages(3pm)). You would do the above like this: use Locale::Messages qw (nl_putenv); # LANGUAGE is a colon separated list of languages. nl_putenv("LANGUAGE=fr_FR"); # If LANGUAGE is set, LANG should be set to the primary language. # This is not needed for gettext, but for other parts of the system # it is. nl_putenv("LANG=fr_FR"); # Force an output charset like this: nl_putenv("OUTPUT_CHARSET=iso-8859-1"); setlocale (LC_MESSAGES, 'C'); These environment variables are GNU extensions, and they are also honored by libintl-perl. Still, you should always try to set the locale with setlocale for the catch-all category LC_ALL. If you miss to do so, your program's output maybe cluttered, mixing languages and charsets, if the system runs in a locale that is not compatible with your own language settings. Remember that these environment variables are not guaranteed to work, if you use an XS version of gettext. In order to force usage of the pure Perl implementation, do the following: Locale::Messages->select_package ('gettext_pp'); If you think, this is brain-damaged, you are right, but I cannot help you. Actually there should be a more flexible API than setlocale, but at the time of this writing there isn't. Until then, the recommentation goes like this: 1) Try setting LC_ALL with Locale::Util. 2) If that does not succeed, either give up or ... 3) Reset LC_MESSAGES to C/POSIX. 4) Switch to pure Perl for gettext. 5) Set the environment variables LANGUAGE, LANG, and OUTPUT_CHARSET to your desired values. =head2 What is the advantage of libintl-perl over Locale::Maketext? Of course, I can only give my personal opinion as an answer. Locale::Maketext claims to fix design flaws in gettext. These alleged design flaws, however, boil down to one pathological case which always has a workaround. But both programmers and translators pay this fix with an unnecessarily complicated interface. The paramount advantage of libintl-perl is that it uses an approved technology and concept. Except for Java(tm) programs, this is the state-of-the-art concept for localizing Un*x software. Programmers that have already localized software in C, C++, C#, Python, PHP, or a number of other languages will feel instantly at home, when localizing software written in Perl with libintl-perl. The same holds true for the translators, because the files they deal with have exactly the same format as those for other programming languages. They can use the same set of tools, and even the commands they have to execute are the same. With libintl-perl refactoring of the software is painless, even if you modify, add or delete translatable strings. The gettext tools are powerful enough to reduce the effort of the translators to the bare minimum. Maintaining the message catalogs of Locale::Maketext in larger scale projects, is IMHO unfeasible. Editing the message catalogs of Locale::Maketext - they are really Perl modules - asks too much from most translators, unless they are programmers. The portable object (po) files used by libintl-perl have a simple syntax, and there are a bunch of specialized GUI editors for these files, that facilitate the translation process and hide most complexity from the user. Furthermore, libintl-perl makes it possible to mix programming languages without a paradigm shift in localization. Without any special efforts, you can write a localized software that has modules written in C, modules in Perl, and builds a Gtk user interface with Glade. All translatable strings end up in one single message catalog. Last but not least, the interface used by libintl-perl is plain simple: Prepend translatable strings with a double underscore, and you are done in most cases. =head2 Why do single-quoted strings not work? You probably write something like this: print __'Hello'; And you get an error message like "Can't find string terminator "'" anywhere before EOF at ...", or even "Bareword found where operator expected at ... Might be a runaway multi-line '' string starting on". The above line is (really!) essentially the same as writing: print __::Hello'; A lesser know feature of Perl is that you can use a single quote ("'") as the separator in packages instead of the double colon (":"). What the Perl parser sees in the first example is a valid package name ("__") followed by the separator ("'"), then another valid package name ("Hello") followed by a lone single quote. It is therefore not a problem in libintl-perl but simple wrong Perl syntax. You have to correct alternatives: print __ 'Hello'; # Insert a space to disambiguate. Or use double-quotes: print __"Hello"; Thanks to Slavi Agafonkin for pointing me to the solution of this mystery. libintl-perl-1.26/lib/Locale/Messages.pm000755 000765 000024 00000074656 12727472042 020417 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::Messages; use strict; use vars qw ($package @EXPORT_OK %EXPORT_TAGS @ISA $VERSION); $VERSION = '1.26'; # Try to load the C version first. $package = 'gettext_xs'; eval <<'EOF'; require Locale::gettext_xs; my $version = Locale::gettext_xs::__gettext_xs_version(); die "Version: version mismatch ($VERSION vs. $version)" unless $version eq $VERSION; EOF my $no_xs = $@; # There are systems where setlocale() and the LC_ constants are not # defined at all, see https://rt.cpan.org/Ticket/Display.html?id=98109 # # On such systems, we always fall back to gettext_dumb. if ($no_xs) { eval { require POSIX; # void POSIX::setlocale(POSIX::LC_ALL()); }; if ($@) { $package = 'gettext_dumb'; require Locale::gettext_dumb; } else { $package = 'gettext_pp'; require Locale::gettext_pp; } } require Exporter; @ISA = qw (Exporter); %EXPORT_TAGS = (locale_h => [ qw (gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset ) ], libintl_h => [ qw (LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL) ], ); @EXPORT_OK = qw (select_package turn_utf_8_on turn_utf_8_off gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset bind_textdomain_filter nl_putenv setlocale LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL); BEGIN { my ($has_encode, $has_bytes); if ($] >= 5.006) { unless (defined $has_encode) { eval "require Encode"; $has_encode = !$@; } unless ($has_encode || defined $has_bytes) { eval "use bytes"; $has_bytes = !$@; } } # Turn the UTF-8 flag on or off unconditionally. The prototypes # allow an optional second parameter, so that you can use the # functions as callbacks to bind_textdomain_filter. if ($has_encode) { eval <<'EOF'; sub turn_utf_8_on($;$) { Encode::_utf8_on ($_[0]); return $_[0]; } sub turn_utf_8_off($;$) { Encode::_utf8_off ($_[0]); return $_[0]; } EOF } elsif ($has_bytes) { eval <<'EOF'; sub turn_utf_8_on($;$) { $_[0] = pack "U0C*", unpack "C*", $_[0]; } sub turn_utf_8_off($;$) { use bytes; $_[0] = join "", split //, $_[0]; } EOF } else { eval <<'EOF'; sub turn_utf_8_on($;$) { return $_[0]; } sub turn_utf_8_off($;$) { return $_[0]; } EOF } } # The textdomain could be undef. We avoid a warning by specifying # a filter for the undefined textdomain. my %filters = (undef => \&turn_utf_8_off); sub select_package { my ($pkg, $compatibility) = @_; # Compatibility quirk for a bug pre 1.17: if (__PACKAGE__ eq $pkg && defined $compatibility) { $pkg = $compatibility; } if ($no_xs && 'gettext_xs' eq $pkg) { $pkg = 'gettext_pp'; } if (defined $pkg && 'gettext_pp' eq $pkg) { # This branch is not unnecessary. The next (elsif) branch does # essentially the same but catches compilation errors. require Locale::gettext_pp; $package = 'gettext_pp'; } elsif (defined $pkg) { my $filename = "Locale::$pkg"; $filename =~ s{::|\'}{/}; $filename .= '.pm'; eval { require $filename }; $package = $pkg unless $@; } else { eval "require Locale::gettext_xs"; $package = 'gettext_xs' unless $@; } return $package; } sub bind_textdomain_filter ($;$$) { my ($textdomain, $coderef, $data) = @_; $filters{$textdomain} = [ $coderef, $data ]; return 1; } sub textdomain (;$) { my $function = "Locale::${package}::textdomain"; no strict 'refs'; &$function; } sub bindtextdomain ($;$) { my $function = "Locale::${package}::bindtextdomain"; no strict 'refs'; &$function; } sub bind_textdomain_codeset ($;$) { my $function = "Locale::${package}::bind_textdomain_codeset"; no strict 'refs'; &$function; } sub gettext ($) { my $textdomain = textdomain; $filters{$textdomain} ||= [ \&turn_utf_8_off ]; my $cb = $filters{$textdomain}; my $function = "Locale::${package}::gettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dgettext($$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dcgettext($$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dcgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub ngettext($$$) { my $textdomain = textdomain; $filters{$textdomain} ||= [ \&turn_utf_8_off ]; my $cb = $filters{$textdomain}; my $function = "Locale::${package}::ngettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dngettext($$$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dngettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dcngettext($$$$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dcngettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub pgettext($$) { my $textdomain = textdomain; $filters{$textdomain} ||= [ \&turn_utf_8_off ]; my $cb = $filters{$textdomain}; my $function = "Locale::${package}::pgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dpgettext($$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dpgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dcpgettext($$$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dcpgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub npgettext($$$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::npgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dnpgettext($$$$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dnpgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub dcnpgettext($$$$$$) { my $cb = $filters{$_[0]} ||= [ \&turn_utf_8_off ]; my $function = "Locale::${package}::dcnpgettext"; no strict 'refs'; $cb->[0] (&$function, $cb->[1]); } sub setlocale($;$) { my $function = "Locale::${package}::setlocale"; no strict 'refs'; &$function; } sub nl_putenv($) { my $function = "Locale::${package}::nl_putenv"; no strict 'refs'; &$function; } sub LC_NUMERIC { my $function = "Locale::${package}::LC_NUMERIC"; no strict 'refs'; &$function; } sub LC_CTYPE { my $function = "Locale::${package}::LC_CTYPE"; no strict 'refs'; &$function; } sub LC_TIME { my $function = "Locale::${package}::LC_TIME"; no strict 'refs'; &$function; } sub LC_COLLATE { my $function = "Locale::${package}::LC_COLLATE"; no strict 'refs'; &$function; } sub LC_MONETARY { my $function = "Locale::${package}::LC_MONETARY"; no strict 'refs'; &$function; } sub LC_MESSAGES { my $function = "Locale::${package}::LC_MESSAGES"; no strict 'refs'; &$function; } sub LC_ALL { my $function = "Locale::${package}::LC_ALL"; no strict 'refs'; &$function; } 1; __END__ =head1 NAME Locale::Messages - Gettext Like Message Retrieval =head1 SYNOPSIS use Locale::Messages (:locale_h :libintl_h); gettext $msgid; dgettext $textdomain, $msgid; dcgettext $textdomain, $msgid, LC_MESSAGES; ngettext $msgid, $msgid_plural, $count; dngettext $textdomain, $msgid, $msgid_plural, $count; dcngettext $textdomain, $msgid, $msgid_plural, $count, LC_MESSAGES; pgettext $msgctxt, $msgid; dpgettext $textdomain, $msgctxt, $msgid; dcpgettext $textdomain, $msgctxt, $msgid, LC_MESSAGES; npgettext $msgctxt, $msgid, $msgid_plural, $count; dnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count; dcnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count, LC_MESSAGES; textdomain $textdomain; bindtextdomain $textdomain, $directory; bind_textdomain_codeset $textdomain, $encoding; bind_textdomain_filter $textdomain, \&filter, $data; turn_utf_8_on ($variable); turn_utf_8_off ($variable); nl_putenv ('OUTPUT_CHARSET=koi8-r'); my $category = LC_CTYPE; my $category = LC_NUMERIC; my $category = LC_TIME; my $category = LC_COLLATE; my $category = LC_MONETARY; my $category = LC_MESSAGES; my $category = LC_ALL; =head1 DESCRIPTION The module B is a wrapper around the interface to message translation according to the Uniforum approach that is for example used in GNU gettext and Sun's Solaris. It is intended to allow Locale::Messages(3) to switch between different implementations of the lower level libraries but this is not yet implemented. Normally you should not use this module directly, but the high level interface Locale::TextDomain(3) that provides a much simpler interface. This description is therefore deliberately kept brief. Please refer to the GNU gettext documentation available at L for in-depth and background information on the topic. The lower level module Locale::gettext_pp(3) provides the Perl implementation of gettext() and related functions. =head1 FUNCTIONS The module exports by default nothing. Every function has to be imported explicitely or via an export tag (L). =over 4 =item B Returns the translation for B. Example: print gettext "Hello World!\n"; If no translation can be found, the unmodified B is returned, i. e. the function can I fail, and will I mess up your original message. Note for Perl 5.6 and later: The returned string will I have the UTF-8 flag off by default. See the documentation for function bind_textdomain_filter() for a way to change this behavior. One common mistake is this: print gettext "Hello $name!"; Perl will interpolate the variable C<$name> I the function will see the string. Unless the corresponding message catalog contains a message "Hello Tom!", "Hello Dick!" or "Hello Harry!", no translation will be found. Using printf() and friends has its own problems: print sprintf (gettext ("This is the %s %s."), $color, $thing); (The example is stupid because neither color nor thing will get translated here ...). In English the adjective (the color) will precede the noun, many other languages (for example French or Italian) differ here. The translator of the message may therefore have a hard time to find a translation that will still work and not sound stupid in the target language. Many C implementations of printf() allow to change the order of the arguments, and a French translator could then say: "C'est le %2$s %1$s." Perl printf() implements this feature as of version 5.8 or better. Consequently you can only use it, if you are sure that your software will run with Perl 5.8 or a later version. Another disadvantage of using printf() is its cryptic syntax (maybe not for you but translators of your software may have their own opinion). See the description of the function C<__x()> in Locale::TextDomain(3) for a much better way to get around this problem. Non-ASCII message ids ... You should note that the function (and all other similar functions in this module) does a bytewise comparison of the B for the lookup in the translation catalog, no matter whether obscure utf-8 flags are set on it, whether the string looks like utf-8, whether the utf8(3pm) pragma is used, or whatever other weird method past or future perl(1) versions invent for guessing character sets of strings. Using other than us-ascii characters in Perl source code is a call for trouble, a compatibility nightmare. Furthermore, GNU gettext only lately introduced support for non-ascii character sets in sources, and support for this feature may not be available everywhere. If you absolutely want to use Bs in non-ascii character sets, it is wise to choose utf-8. This will minimize the risk that perl(1) itself will mess with the strings, and it will also be a guaranty that you can later translate your project into arbitrary target languages. Other character sets can theoretically work. Yet, using another character set in the Perl source code than the one used in your message catalogs will B work, since the lookup is done bytewise, and all strings with non-ascii characters will not be found. Even if you have solved all these problems, there is still one show stopper left: The gettext runtime API lacks a possibility to specify the character set of the source code (including the original strings). Consequently - in absence of a hint for the input encoding - strings without a translation are not subject to output character set conversion. In other words: If the (non-determinable) output character set differs from the character set used in the source code, output can be a mixture of two character sets. There is no point in trying to address this problem in the pure Perl version of the gettext functions. because breaking compatibilty between the Perl and the C version is a price too high to pay. This all boils down to: Only use ASCII characters in your translatable strings! =item B Like gettext(), but retrieves the message for the specified B instead of the default domain. In case you wonder what a textdomain is, you should really read on with Locale::TextDomain(3). =item B Like dgettext() but retrieves the message from the specified B instead of the default category C. =item B Retrieves the correct translation for B items. In legacy software you will often find something like: print "$count file(s) deleted.\n"; or printf "$count file%s deleted.\n", $count == 1 ? '' : 's'; The first example looks awkward, the second will only work in English and languages with similar plural rules. Before ngettext() was introduced, the best practice for internationalized programs was: if ($count == 1) { print gettext "One file deleted.\n"; } else { printf gettext "%d files deleted.\n"; } This is a nuisance for the programmer and often still not sufficient for an adequate translation. Many languages have completely different ideas on numerals. Some (French, Italian, ...) treat 0 and 1 alike, others make no distinction at all (Japanese, Korean, Chinese, ...), others have two or more plural forms (Russian, Latvian, Czech, Polish, ...). The solution is: printf (ngettext ("One file deleted.\n", "%d files deleted.\n", $count), # argument to ngettext! $count); # argument to printf! In English, or if no translation can be found, the first argument (B) is picked if C<$count> is one, the second one otherwise. For other languages, the correct plural form (of 1, 2, 3, 4, ...) is automatically picked, too. You don't have to know anything about the plural rules in the target language, ngettext() will take care of that. This is most of the time sufficient but you will have to prove your creativity in cases like printf "%d file(s) deleted, and %d file(s) created.\n"; =item B Like ngettext() but retrieves the translation from the specified textdomain instead of the default domain. =item B Like dngettext() but retrieves the translation from the specified category, instead of the default category C. =item B Returns the translation of MSGID, given the context of MSGCTXT. Both items are used as a unique key into the message catalog. This allows the translator to have two entries for words that may translate to different foreign words based on their context. For example, the word "View" may be a noun or a verb, which may be used in a menu as File->View or View->Source. pgettext "Verb: To View", "View\n"; pgettext "Noun: A View", "View\n"; The above will both lookup different entries in the message catalog. A typical usage are GUI programs. Imagine a program with a main menu and the notorious "Open" entry in the "File" menu. Now imagine, there is another menu entry Preferences->Advanced->Policy where you have a choice between the alternatives "Open" and "Closed". In English, "Open" is the adequate text at both places. In other languages, it is very likely that you need two different translations. Therefore, you would now write: pgettext "File|", "Open"; pgettext "Preferences|Advanced|Policy", "Open"; In English, or if no translation can be found, the second argument (MSGID) is returned. The function was introduced with libintl-perl version 1.17. =item B Like pgettext(), but retrieves the message for the specified B instead of the default domain. The function was introduced with libintl-perl version 1.17. =item B Like dpgettext() but retrieves the message from the specified B instead of the default category C. The function was introduced with libintl-perl version 1.17. =item B Like ngettext() with the addition of context as in pgettext(). In English, or if no translation can be found, the second argument (MSGID) is picked if $count is one, the third one otherwise. The function was introduced with libintl-perl version 1.17. =item B Like npgettext() but retrieves the translation from the specified textdomain instead of the default domain. The function was introduced with libintl-perl version 1.17. =item B Like dnpgettext() but retrieves the translation from the specified category, instead of the default category C. The function was introduced with libintl-perl version 1.17. =item B Sets the default textdomain (initially 'messages'). =item B Binds B to B. Huh? An example: bindtextdomain "my-package", "./mylocale"; Say, the selected locale (actually the selected locale for category C) of the program is 'fr_CH', then the message catalog will be expected in F<./mylocale/fr_CH/LC_MESSAGES/my-package.mo>. =item B Sets the output encoding for B to B. =item B =item B By default, Locale::Messages will turn the utf-8 flag of all returned messages off. If you want to change this behavior, you can pass a reference to a subroutine that does different things - for example turn the utf-8 flag on, or leave it untouched. The callback function will be called with B as the first, and the possibly translated string as the second argument. It should return the possibly modified string. If you want an object method to be called, pass the object itself in the data parameter and write a wrapper function. Example: sub wrapper { my ($string, $obj) = @_; $obj->filterMethod ($string); } my $obj = MyPackage->new; bind_textdomain_filter ('mydomain', \&wrapper, $obj); The function cannot fail and always returns a true value. B If you use the function for setting the utf-8 flag, it is B responsability to ensure that the output is really utf-8. You should only use it, if you have set the environment variable B to "utf-8". Additionally you should call bind_textdomain_codeset() with "utf-8" as the second argument. Steven Haryanto has written a module Locale::TextDomain::UTF8(3pm) that addresses the same problem. This function has been introduced in libintl-perl 1.16 and it is B part of the standard gettext API. =item B Returns VARIABLE but with the UTF-8 flag (only known in Perl >=5.6) guaranteed to be turned on. This function does not really fit into the module, but it is often handy nevertheless. The flag does B mean that the string is in fact valid utf-8! The function was introduced with libintl-perl version 1.16. =item B Returns VARIABLE but with the UTF-8 flag (only known in Perl >=5.6) guaranteed to be turned off. This function does not really fit into the module, but it is often handy nevertheless. The function was introduced with libintl-perl version 1.07. =item B By default, B will try to load the XS version of the gettext implementation, i. e. Locale::gettext_xs(3) and will fall back to the pure Perl implementation Locale::gettext_pp(3). You can override this behavior by passing the string "gettext_pp" or "gettext_xs" to the function select_package(). Passing "gettext_pp" here, will prefer the pure Perl implementation. You will normally want to use that in a BEGIN block of your main script. The function was introduced with libintl-perl version 1.03 and is not part of the standard gettext API. Beginning with version 1.22 you can pass other package names than "gettext_pp" or "gettext_xs" and use a completely different backend. It is the caller's responsability to make sure that the selected package offers the same interface as the two standard packages. One package that offers that functionality is Locale::gettext_dumb(3pm). =item B Resembles the ANSI C putenv(3) function. The sole purpose of this function is to work around some ideosyncrasies in the environment processing of Windows systems. If you want to portably set or unset environment variables, use this function instead of directly manipulating C<%ENV>. The argument B may have three different forms. =over 8 =item B This would set the environment variable C to "fr_CH". =item B Normally, this will set the environment variable C to an empty string. Under Windows, however, the environment variable will be deleted instead (and is no longer present in C<%ENV>). Since within libintl-perl empty environment variables are useless, consider this usage as deprecated. =item B This will delete the environment variable B. If you are familiar with the brain-damaged implementation of putenv(3) (resp. _putenv()) in the so-called standard C library of MS-Windows, you may suspect that this is an invalid argument. This is not the case! Passing a variable name not followed by an equal sign will always delete the variable, no matter which operating system you use. =back The function returns true for success, and false for failure. Possible reasons for failure are an invalid syntax or - only under Windows - failure to allocate space for the new environment entry ($! will be set accordingly in this case). Why all this hassle? The 32-bit versions of MS-DOS (currently Windows 95/98/ME/NT/2000/XP/CE/.NET) maintain two distinct blocks of environment variables per process. Which block is considered the "correct" environment is a compile-time option of the Perl interpreter. Unfortunately, if you have build the XS version Locale::gettext_xs(3) under Windows, the underlying library may use a different environment block, and changes you make to C<%ENV> may not be visible to the library. The function nl_putenv() is mostly a funny way of saying LANGUAGE=some_value but it does its best, to pass this information to the gettext library. Under other operating systems than Windows, it only operates on C<%ENV>, under Windows it will call the C library function _putenv() (after doing some cleanup to its arguments), before manipulating C<%ENV>. Please note, that your C<%ENV> is updated by nl_putenv() automatically. The function has been introduced in libintl-perl version 1.10. =item setlocale Modifies and queries program's locale, see the documentation for setlocale() in POSIX(3pm) instead. On some systems, when using GNU gettext, a call from C to setlocale() is - with the help of the C preprocessor - really a call to libintl_setlocale(), which is in turn a wrapper around the system setlocale(3). Failure to call libintl_setlocale() may lead to certain malfunctions. On such systems, B will call the wrapper libintl_setlocale(). If you want to avoid problems, you should therefore always call the setlocale() implementation in Locale::Messages(3pm). See L or L, and L for a discussion of the problem. The function has been introduced in libintl-perl version 1.24. =back =head1 CONSTANTS You can (maybe) get the same constants from POSIX(3); see there for a detailed description =over 4 =item B =item B =item B =item B =item B =item B This locale category was the reason that these constants from POSIX(3) were included here. Even if it was present in your systems C include file F, it was not provided by POSIX(3). Perl 5.8 and later seems to export the constant if available, although it is not documented in POSIX(3). Locale::Messages(3) makes an attempt to guess the value of this category for all systems, and assumes the arbitrary value 1729 otherwise. =item B If you specify the category B as the first argument to POSIX::setlocale(), I locale categories will be affected at once. =back =head1 EXPORT TAGS The module does not export anything unless explicitely requested. You can import groups of functions via two tags: =over 4 =item B Imports the functions that are normally defined in the C include file F: =over 8 =item B =item B =item B =item B =item B =item B =item B =item B =item B =item B =item B =item B =item B =item B =item B =back =item B Imports the locale category constants: =over 8 =item B =item B =item B =item B =item B =item B =item B =back =back =head1 OTHER EXPORTS =item B =head1 USAGE A complete example: 1: use Locale::Messages qw (:locale_h :libintl_h); 2: use POSIX qw (setlocale); 3: setlocale (LC_MESSAGES, ''); 4: textdomain ('my-package'); 5: bindtextdomain ('my-package' => '/usr/local/share/locale'); 6: 7: print gettext ("Hello world!\n"); Step by step: Line 1 imports the necessary functions and constants. In line 3 we set the locale for category LC_MESSAGES to the default user settings. For C programs you will often read that LC_ALL is the best category here but this will also change the locale for LC_NUMERIC and many programs will not work reliably after changing that category in Perl; choose your own poison! In line 4 we say that all messages (translations) without an explicit domain specification should be retrieved from the message catalog for the domain 'my-package'. Line 5 has the effect that the message catalog will be searched under the directory F. If the user has selected the locale 'fr_CH', and if the file F exists, and if it contains a GNU message object file with a translation for the string "Hello world!\n", then line 7 will print the French translation (for Switzerland CH) to STDOUT. The documentation for GNU gettext explains how to extract translatable strings from your Perl files and how to create message catalogs. Another less portable example: If your system uses the GNU libc you should be able to find various files with the name F, the message catalog for the library itself. If you have found these files under F, then you can try the following: use Locale::Messages qw (:locale_h :libintl_h); use POSIX qw (setlocale); setlocale LC_MESSAGES, ""; textdomain "libc"; # The following is actually not needed, since this is # one of the default search directories. bindtextdomain libc => '/usr/share/locale'; bind_textdomain_codeset libc => 'iso-8859-1'; print gettext ("No such file or directory"); See Locale::TextDomain(3) for much simpler ways. =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::TextDomain(3pm), Locale::gettext_pp(3pm), Encode(3pm), Locale::TextDomain::UTF8(3pm), perllocale(3pm), POSIX(3pm), perl(1), gettext(1), gettext(3) =cut __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: libintl-perl-1.26/lib/Locale/Recode/000755 000765 000024 00000000000 12727473405 017472 5ustar00guidostaff000000 000000 libintl-perl-1.26/lib/Locale/Recode.pm000644 000765 000024 00000023502 12716422333 020022 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Portable character conversion for Perl. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::Recode; use strict; require Locale::Recode::_Conversions; my $loaded = {}; my $has_encode; sub new { my $class = ref($_[0]) || $_[0]; shift; my %args = @_; my $self = bless {}, $class; my ($from_codeset, $to_codeset) = @args{qw (from to)}; unless ($from_codeset && $to_codeset) { require Carp; Carp::croak (<new (from => FROM_CODESET, to => TO_CODESET); EOF } # Find a conversion path. my $path = Locale::Recode::_Conversions->findPath ($from_codeset, $to_codeset); unless ($path) { $self->{__error} = 'EINVAL'; return $self; } my @conversions = (); foreach (@$path) { my ($module, $from, $to) = @$_; unless ($loaded->{$module}) { eval "require Locale::RecodeData::$module"; if ($@) { $self->{__error} = $@; return $self; } $loaded->{$module} = 1; } my $module_name = "Locale::RecodeData::$module"; my $method = 'new'; my $object = $module_name->$method (from => $from, to => $to); push @conversions, $object; } $self->{__conversions} = \@conversions; return $self; } sub resolveAlias { my ($class, $alias) = @_; return Locale::Recode::_Conversions->resolveAlias ($alias); } sub getSupported { return [ Locale::Recode::_Conversions->listSupported ]; } sub getCharsets { my $self = shift; my %all = map { $_ => 1 } @{&getSupported}; require Locale::Recode::_Aliases; my $conversions = Locale::Recode::_Conversions->listSupported; foreach my $charset (keys %{Locale::Recode::_Aliases::ALIASES()}) { my $mime_name = $self->resolveAlias ($charset); next unless exists $all{$mime_name}; $all{$charset} = 1; } return [ keys %all ]; } sub recode { my $self = $_[0]; return if $self->{__error}; return 1 unless defined $_[1]; my $chain = $self->{__conversions}; foreach my $module (@$chain) { my $success = $module->_recode ($_[1]); unless ($success) { $self->{__error} = $module->_getError; return; } } return 1; } sub getError { my $self = shift; my $error = $self->{__error} or return; if ('EINVAL' eq $error) { return 'Invalid conversion'; } else { return $error; } } 1; __END__ =head1 NAME Locale::Recode - Object-Oriented Portable Charset Conversion =head1 SYNOPSIS use Locale::Recode; $cd = Locale::Recode->new (from => 'UTF-8', to => 'ISO-8859-1'); die $cd->getError if $cd->getError; $cd->recode ($text) or die $cd->getError; $mime_name = Locale::Recode->resolveAlias ('latin-1'); $supported = Locale::Recode->getSupported; $complete = Locale::Recode->getCharsets; =head1 DESCRIPTION This module provides routines that convert textual data from one codeset to another in a portable way. The module has been started before Encode(3) was written. It's main purpose today is to provide charset conversion even when Encode(3) is not available on the system. It should also work for older Perl versions without Unicode support. Internally Locale::Recode(3) will use Encode(3) whenever possible, to allow for a faster conversion and for a wider range of supported charsets, and will only fall back to the Perl implementation when Encode(3) is not available or does not support a particular charset that Locale::Recode(3) does. Locale::Recode(3) is part of libintl-perl, and it's main purpose is actually to implement a portable charset conversion framework for the message translation facilities described in Locale::TextDomain(3). =head1 CONSTRUCTOR The constructor C requires two named arguments: =over 4 =item B The encoding of the original data. Case doesn't matter, aliases are resolved. =item B The target encoding. Again, case doesn't matter, and aliases are resolved. =back The constructor will never fail. In case of an error, the object's internal state is set to bad and it will refuse to do any conversions. You can inquire the reason for the failure with the method getError(). =head1 OBJECT METHODS The following object methods are available. =over 4 =item B Converts B from the source encoding into the destination encoding. In case of success, a truth value is returned, false otherwise. You can inquire the reason for the failure with the method getError(). =item B Returns either false if the object is not in an error state or an error message. =back =head1 CLASS METHODS The object provides some additional class methods: =over 4 =item B Returns a reference to a list of all supported charsets. This may implicitely load additional Encode(3) conversions like Encode::HanExtra(3) which may produce considerable load on your system. The method is therefore not intended for regular use but rather for getting resp. displaying I a list of available encodings. The members of the list are all converted to uppercase! =item B Like getSupported() but also returns all available aliases. =back =head1 SUPPORTED CHARSETS The range of supported charsets is system-dependent. The following somewhat special charsets are always available: =over 4 =item B UTF-8 is available independently of your Perl version. For Perl 5.6 or better or in the presence of Encode(3), conversions are not done in Perl but with the interfaces provided by these facilities which are written in C, hence much faster. Encoding data I UTF-8 is fast, even if it is done in Perl. Decoding it in Perl may become quite slow. If you frequently have to decode UTF-8 with B you will probably want to make sure that you do that with Perl 5.6 or beter, or install Encode(3) to speed up things. =item B UTF-8 is fast to write but hard to read for applications. It is therefore not the worst for internal string representation but not far from that. Locale::Recode(3) stores strings internally as a reference to an array of integer values like most programming languages (Perl is an exception) do, trading memory for performance. The integer values are the UCS-4 codes of the characters in host byte order. The encoding B is directly availabe via Locale::Recode(3) but of course you should not really use it for data exchange, unless you know what you are doing. =back Locale::Recode(3) has native support for a plethora of other encodings, most of them 8 bit encodings that are fast to decode, including most encodings used on popular micros like the ISO-8859-* series of encodings, most Windows-* encodings (also known as CP*), Macintosh, Atari, etc. =head1 NAMES AND ALIASES Each charset resp. encoding is available internally under a unique name. Whenever the information was available, the preferred MIME name (see L) was chosen as the internal name. Alias handling is quite strict. The module does not make wild guesses at what you mean ("What's the meaning of the acronym JIS" is a valid alias for "7bit-jis" in Encode(3) ....) but aims at providing common aliases only. The same applies to so-called aliases that are really mistakes, like "utf8" for UTF-8. The module knows all aliases that are listed with the IANA character set registry (L), plus those known to libiconv version 1.8, and a bunch of additional ones. =head1 CONVERSION TABLES The conversion tables have either been taken from official sources like the IANA or the Unicode Consortium, from Bruno Haible's libiconv, or from the sources of the GNU libc and the regression tests for libintl-perl will check for conformance here. For some encodings this data differs from Encode(3)'s data which would cause these tests to fail. In these cases, the module will not invoke the Encode(3) methods, but will fall back to the internal implementation for the sake of consistency. The few encodings that are affected are so simple that you will not experience any real performance penalty unless you convert large chunks of data. But the package is not really intended for such use anyway, and since Encode(3) is relatively new, I rather think that the differences are bugs in Encode which will be fixed soon. =head1 BUGS The module should provide fall back conversions for other Unicode encoding schemes like UCS-2, UCS-4 (big- and little-endian). The pure Perl UTF-8 decoder will not always handle corrupt UTF-8 correctly, especially at the end and at the beginning of the string. This is not likely to be fixed, since the module's intention is not to be a consistency checker for UTF-8 data. =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Encode(3), iconv(3), iconv(1), recode(1), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/000755 000765 000024 00000000000 12727473405 020264 5ustar00guidostaff000000 000000 libintl-perl-1.26/lib/Locale/RecodeData.pm000644 000765 000024 00000010065 12716422333 020614 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Virtual base class for Locale::Recode converters. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData; use strict; sub new { my ($class, %args) = @_; bless { _from => $args{from}, _to => $args{to}, }, $class; } sub _getError { shift->{_error}; } 1; __END__ =head1 NAME Locale::RecodeData - Abstract Base Class for Charset Converters =head1 SYNOPSIS # For compatibility with Perl 5.005 and earlier, you must # *use* the module before inheriting from it! use qw (Locale::RecodeData); use base qw (Locale::RecodeData); =head1 DESCRIPTION The module B serves as an abstract base class to all converters used by Locale::Recode(3). Adding new conversion modules is currently not straightforward, and you will have to edit the sources of some modules for that purpose. First, you have to add your new converter class to the list found in Locale::_Conversions(3), so that Locale::Recode(3) knows about its presence. If there are valid aliases for the codeset of your converter, you will also have to edit Locale::_Aliases(3). Finally, you have to implement the (protected) conversion routine _recode(). See below (L<"INTERFACE")> for details. =head1 CONSTRUCTOR =over 4 =item B FROM_CODESET, to =E TO_CODESET)> The constructor takes two (named) arguments: =over 8 =item B The canonical name of the source codeset. Aliases have already been resolved and the name is converted to uppercase. =item B The canonical name of the destination codeset. Aliases have already been resolved and the name is converted to uppercase. =back You normally don't have to implement the constructor. The default constructor implemented here will store the source and destination codesets in the protected members C<_from> and C<_to>. =back =head1 METHODS The class implements one method: =over 4 =item B<_getError> Returns the (protected) member C<_error>. =back =head1 INTERFACE New conversion classes must provide the following interface: =over 4 =item B FROM_CODESET, to =E TO_CODESET)> The constructor takes two (named) arguments: =over 8 =item B The canonical name of the source codeset. Aliases have already been resolved and the name is converted to uppercase. =item B The canonical name of the destination codeset. Aliases have already been resolved and the name is converted to uppercase. =back =item B<_getError> Should return the last error (as a string) or false if there was no error. This method is implemented in the base class already. =item B<_recode STRINGREF> Should convert the argument C in-place. In case of failure, return false, and make provisions that the method C<_getError()> returns an informative error message. =back =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::Recode::_Aliases(3pm), Locale::Recode::_Conversions(3pm), Locale::Recode(3pm), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/TextDomain.pm000755 000765 000024 00000101360 12727471653 020712 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # High-level interface to Perl i18n. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package __TiedTextDomain; use strict; sub TIEHASH { my ($class, $function) = @_; bless { __function => $function, }, $class; } sub FETCH { my ($self, $msg) = @_; &{$self->{__function}} ($msg); } sub FIRSTKEY { my $self = shift; my $reset_iterator = keys %$self; return scalar each %$self; } sub NEXTKEY { my $self = shift; return scalar each %$self; } sub CLEAR {} sub STORE {} sub DELETE {} 1; package Locale::TextDomain; use strict; use Locale::Messages qw (textdomain bindtextdomain dgettext dngettext dpgettext dnpgettext); use Cwd qw (abs_path); use vars qw ($VERSION); $VERSION = '1.26'; require Exporter; use vars qw (@ISA @EXPORT %__ $__); @ISA = ('Exporter'); @EXPORT = qw (__ __x __n __nx __xn __p __px __np __npx $__ %__ N__ N__n N__p N__np); my %textdomains = (); my %bound_dirs = (); my @default_dirs = (); sub __ ($); sub __find_domain ($); sub __expand ($%); sub __tied_gettext ($$); BEGIN { # Tie the hash to gettext(). tie %__, '__TiedTextDomain', \&__tied_gettext; $__ = \%__; # Add default search directories, but only if they exist. for my $dir (qw (/usr/share/locale /usr/local/share/locale)) { if (-d $dir) { @default_dirs = ($dir); last; } } } # Normal gettext. sub __ ($) { my $msgid = shift; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return dgettext $textdomain => $msgid; } # Called from tied hash. sub __tied_gettext ($$) { my ($msgid) = @_; my ($package) = caller (1); my $textdomain = $textdomains{$package}; unless (defined $textdomain) { my ($maybe_package, $filename, $line) = caller (2); if (exists $textdomains{$maybe_package}) { warn < $msgid; } # With interpolation. sub __x ($@) { my ($msgid, %vars) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return __expand ((dgettext $textdomain => $msgid), %vars); } # Plural. sub __n ($$$) { my ($msgid, $msgid_plural, $count) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return dngettext $textdomain, $msgid, $msgid_plural, $count; } # Plural with interpolation. sub __nx ($$$@) { my ($msgid, $msgid_plural, $count, %args) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return __expand ((dngettext $textdomain, $msgid, $msgid_plural, $count), %args); } # Plural with interpolation. sub __xn ($$$@) { my ($msgid, $msgid_plural, $count, %args) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return __expand ((dngettext $textdomain, $msgid, $msgid_plural, $count), %args); } # Context. (p is for particular or special) sub __p ($$) { my $msgctxt = shift; my $msgid = shift; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return dpgettext $textdomain => $msgctxt, $msgid; } # With interpolation. sub __px ($$@) { my ($msgctxt, $msgid, %vars) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return __expand ((dpgettext $textdomain => $msgctxt, $msgid), %vars); } # Context + Plural. sub __np ($$$$) { my ($msgctxt, $msgid, $msgid_plural, $count) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return dnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count; } # Plural with interpolation. sub __npx ($$$$@) { my ($msgctxt, $msgid, $msgid_plural, $count, %args) = @_; my $package = caller; my $textdomain = $textdomains{$package}; __find_domain $textdomain if defined $textdomain && defined $bound_dirs{$textdomain}; return __expand ((dnpgettext $textdomain, $msgctxt, $msgid, $msgid_plural, $count), %args); } # Dummy functions for string marking. sub N__($) { return shift; } sub N__n($$$) { return @_; } sub N__p($$) { return @_; } sub N__np($$$$) { return @_; } sub import { my ($self, $textdomain, @search_dirs) = @_; # Check our caller. my $package = caller; return if exists $textdomains{$package}; # Was a textdomain specified? $textdomain = textdomain unless defined $textdomain && length $textdomain; # Remember the textdomain of that package. $textdomains{$package} = $textdomain; # Remember that we still have to bind that textdomain to # a directory. unless (exists $bound_dirs{$textdomain}) { unless (@search_dirs) { @search_dirs = ((map $_ . '/LocaleData', @INC), @default_dirs) unless @search_dirs; if (my $share = eval { require File::ShareDir; File::ShareDir::dist_dir ($textdomain); }) { unshift @search_dirs, map { "$share/$_" } qw (locale LocaleData); } } $bound_dirs{$textdomain} = [grep { -d $_ } @search_dirs]; } Locale::TextDomain->export_to_level (1, $package, @EXPORT); return; } # Private functions. sub __find_domain ($) { my $domain = shift; my $try_dirs = $bound_dirs{$domain}; if (defined $try_dirs) { my $found_dir = ''; TRYDIR: foreach my $dir (map { abs_path $_ } grep { -d $_ } @$try_dirs) { # Is there a message catalog? We have to search recursively # for it. Since globbing is reported to be buggy under # MS-DOS, we roll our own version. local *DIR; if (opendir DIR, $dir) { my @files = map { "$dir/$_/LC_MESSAGES/$domain.mo" } grep { ! /^\.\.?$/ } readdir DIR; foreach my $file (@files) { if (-f $file || -l $file) { # If we find a non-readable file on our way, # we access has been disabled on purpose. # Therefore no -r check here. $found_dir = $dir; last TRYDIR; } } } } # If there was no success, this will fall back to the default search # directories. bindtextdomain $domain => $found_dir; } # The search has completed. undef $bound_dirs{$domain}; return 1; } sub __expand ($%) { my ($translation, %args) = @_; my $re = join '|', map { quotemeta $_ } keys %args; $translation =~ s/\{($re)\}/defined $args{$1} ? $args{$1} : "{$1}"/ge; return $translation; } 1; __END__ =head1 NAME Locale::TextDomain - Perl Interface to Uniforum Message Translation =head1 SYNOPSIS use Locale::TextDomain ('my-package', @locale_dirs); use Locale::TextDomain qw (my-package); my $translated = __"Hello World!\n"; my $alt = $__{"Hello World!\n"}; my $alt2 = $__->{"Hello World!\n"}; my @list = (N__"Hello", N__"World"); printf (__n ("one file read", "%d files read", $num_files), $num_files); print __nx ("one file read", "{num} files read", $num_files, num => $num_files); my $translated_context = __p ("Verb, to view", "View"); printf (__np ("Files read from filesystems", "one file read", "%d files read", $num_files), $num_files); print __npx ("Files read from filesystems", "one file read", "{num} files read", $num_files, num => $num_files); =head1 DESCRIPTION The module Locale::TextDomain(3pm) provides a high-level interface to Perl message translation. =head2 Textdomains When you request a translation for a given string, the system used in libintl-perl follows a standard strategy to find a suitable message catalog containing the translation: Unless you explicitely define a name for the message catalog, libintl-perl will assume that your catalog is called 'messages' (unless you have changed the default value to something else via Locale::Messages(3pm), method textdomain()). You might think that his default strategy leaves room for optimization and you are right. It would be a lot smarter if multiple software packages, all with their individual message catalogs, could be installed on one system, and it should also be possible that third-party components of your software (like Perl modules) can load their message catalogs, too, without interfering with yours. The solution is clear, you have to assign a unique name to your message database, and you have to specify that name at run-time. That unique name is the so-called I of your software package. The name is actually arbitrary but you should follow these best-practice guidelines to ensure maximum interoperability: =over 8 =item File System Safety In practice, textdomains get mapped into file names, and you should therefore make sure that the textdomain you choose is a valid filename on every system that will run your software. =item Case-sensitivity Textdomains are always case-sensitive (i. e. 'Package' and 'PACKAGE' are not the same). However, since the message catalogs will be stored on file systems, that may or may not distinguish case when looking up file names, you should avoid potential conflicts here. =item Textdomain Should Match CPAN Name If your software is listed as a module on CPAN, you should simply choose the name on CPAN as your textdomain. The textdomain for libintl-perl is hence 'libintl-perl'. But please replace all periods ('.') in your package name with an underscore because ... =item Internet Domain Names as a Fallback ... if your software is I a module listed on CPAN, as a last resort you should use the Java(tm) package scheme, i. e. choose an internet domain that you are owner of (or ask the owner of an internet domain) and concatenate your preferred textdomain with the reversed internet domain. Example: Your company runs the web-site 'www.foobar.org' and is the owner of the domain 'foobar.org'. The textdomain for your company's software 'barfoos' should hence be 'org.foobar.barfoos'. =back If your software is likely to be installed in different versions on the same system, it is probably a good idea to append some version information to your textdomain. Other systems are less strict with the naming scheme for textdomains but the phenomena known as Perl is actually a plethora of small, specialized modules and it is probably wisest to postulate some namespace model in order to avoid chaos. =head2 Binding textdomains to directories Once the system knows the I of the message that you want to get translated into the user's language, it still has to find the correct message catalog. By default, libintl-perl will look up the string in the translation database found in the directories F and F (in that order). It is neither guaranteed that these directories exist on the target machine, nor can you be sure that the installation routine has write access to these locations. You can therefore instruct libintl-perl to search other directories prior to the default directories. Specifying a differnt search directory is called I a textdomain to a directory. Beginning with version 1.20, B extends the default strategy by a Perl-specific approach. If L is installed, it will look in the subdirectories named F and F (in that order) in the directory returned by C (if L is installed), and check for a database containing the message for your textdomain there. This allows you to install your database in the Perl-specific shared directory using L's C directive or the Dist::Zilla L. If L is not availabe, or if Locale::TextDomain fails to find the translation files in the L directory, it will next look in every directory found in the standard include path C<@INC>, and check for a database containing the message for your textdomain there. Example: If the path F is in your C<@INC>, you can install your translation files in F, and they will be found at run-time. =head1 USAGE It is crucial to remember that you use Locale::TextDomain(3) as specified in the section L, that means you have to B it, not B it. The module behaves quite differently compared to other modules. The most significant difference is the meaning of the list passed as an argument to the use() function. It actually works like this: use Locale::TextDomain (TEXTDOMAIN, DIRECTORY, ...) The first argument (the first string passed to use()) is the textdomain of your package, optionally followed by a list of directories to search I of the Perl-specific directories (see above: F appended to a F directory and every path in C<@INC>). If you are the author of a package 'barfoos', you will probably put the line use Locale::TextDomain 'barfoos'; resp. for non-CPAN modules use Locale::TextDomain 'org.foobar.barfoos'; in every module of your package that contains translatable strings. If your module has been installed properly, including the message catalogs, it will then be able to retrieve these translations at run-time. If you have not installed the translation database in a directory F in the L directory or the standard include path C<@INC> (or in the system directories F resp. F), you have to explicitely specify a search path by giving the names of directories (as strings!) as additional arguments to use(): use Locale::TextDomain qw (barfoos ./dir1 ./dir2); Alternatively you can call the function bindtextdomain() with suitable arguments (see the entry for bindtextdomain() in L). If you do so, you should pass C as an additional argument in order to avoid unnecessary lookups: use Locale::TextDomain ('barfoos', undef); You see that the arguments given to use() have nothing to do with what is imported into your namespace, but they are rather arguments to textdomain(), resp. bindtextdomain(). Does that mean that B exports nothing into your namespace? Umh, not exactly ... in fact it imports I functions listed below into your namespace, and hence you should not define conflicting functions (and variables) yourself. So, why has Locale::TextDomain to be different from other modules? If you have ever written software in C and prepared it for internationalization (i18n), you will probably have defined some preprocessor macros like: #define _(String) dgettext ("my-textdomain", String) #define N_(String) String You only have to define that once in C, and the textdomain for your package is automatically inserted into all gettext functions. In Perl there is no such mechanism (at least it is not portable, option -P) and using the gettext functions could become quite cumbersome without some extra fiddling: print dgettext ("my-textdomain", "Hello world!\n"); This is no fun. In C it would merely be a printf (_("Hello world!\n")); Perl has to be more concise and shorter than C ... see the next section for how you can use B to end up in Perl with a mere print __"Hello World!\n"; =head1 EXPORTED FUNCTIONS All functions have quite funny names on purpose. In fact the purpose for that is quite clear: They should be short, operator-like, and they should not yell for conflicts with existing functions in I namespace. You will understand it, when you internationalize your first Perl program or module. Preparing it is more like marking strings as being translatable than inserting function calls. Here we go: =over 4 =item B<__ MSGID> B This is a I underscore! The basic and most-used function. It is a short-cut for a call to gettext() resp. dgettext(), and simply returns the translation for B. If your old code reads like this: print "permission denied"; You will now write: print __"permission denied"; That's all, the string will be output in the user's preferred language, provided that you have installed a translation for it. Of course you can also use parentheses: print __("permission denied"); Or even: print (__("permission denied")); In my eyes, the first version without parentheses looks best. =item B<__x MSGID, ID1 =E VAL1, ID2 =E VAL2, ...> One of the nicest features in Perl is its capability to interpolate variables into strings: print "This is the $color $thing.\n"; This nice feature might con you into thinking that you could now write print __"This is the $color $thing.\n"; Alas, that would be nice, but it is not possible. Remember that the function __() serves both as an operator for translating strings I as a mark for translatable strings. If the above string would get extracted from your Perl code, the un-interpolated form would end up in the message catalog because when parsing your code it is unpredictable what values the variables C<$thing> and C<$color> will have at run-time (this fact is most probably one of the reasons you have written your program for). However, at run-time, Perl will have interpolated the values already I __() (resp. the underlying gettext() function) has seen the original string. Consequently something like "This is the red car.\n" will be looked up in the message catalog, it will not be found (because only "This is the $color $thing.\n" is included in the database), and the original, untranslated string will be returned. Honestly, because this is almost always an error, the xgettext(1) program will bail out with a fatal error when it comes across that string in your code. There are two workarounds for that: printf __"This is the %s %s.\n", $color, $thing; But that has several disadvantages: Your translator will only see the isolated string, and without the surrounding code it is almost impossible to interpret it correctly. Of course, GNU emacs and other software capable of editing PO translation files will allow you to examine the context in the source code, but it is more likely that your translator will look for a less challenging translation project when she frequently comes across such messages. And even if she does understand the underlying programming, what if she has to reorder the color and the thing like in French: msgid "This is the red car.\n"; msgstr "Cela est la voiture rouge.\n" Zut alors! While it is possible to reorder the arguments to printf() and friends, it requires a syntax that is is nothing that you want to learn. So what? The Perl backend to GNU gettext has defined an alternative format for interpolatable strings: "This is the {color} {thing}.\n"; Instead of Perl variables you use place-holders (legal Perl variables are also legal place-holders) in curly braces, and then you call print __x ("This is the {color} {thing}.\n", thing => $thang, color => $color); The function __x() will take the additional hash and replace all occurencies of the hash keys in curly braces with the corresponding values. Simple, readable, understandable to translators, what else would you want? And if the translator forgets, misspells or otherwise messes up some "variables", the msgfmt(1) program, that is used to compile the textual translation file into its binary representation will even choke on these errors and refuse to compile the translation. =item B<__n MSGID, MSGID_PLURAL, COUNT> Whew! That looks complicated ... It is best explained with an example. We'll have another look at your vintage code: if ($files_deleted > 1) { print "All files have been deleted.\n"; } else { print "One file has been deleted.\n"; } Your intent is clear, you wanted to avoid the cumbersome "1 files deleted". This is okay for English, but other languages have more than one plural form. For example in Russian it makes a difference whether you want to say 1 file, 3 files or 6 files. You will use three different forms of the noun 'file' in each case. [Note: Yep, very smart you are, the Russian word for 'file' is in fact the English word, and it is an invariable noun, but if you know that, you will also understand the rest despite this little simplification ...]. That is the reason for the existance of the function ngettext(), that __n() is a short-cut for: print __n"One file has been deleted.\n", "All files have been deleted.\n", $files_deleted; Alternatively: print __n ("One file has been deleted.\n", "All files have been deleted.\n", $files_deleted); The effect is always the same: libintl-perl will find out which plural form to pick for your user's language, and the output string will always look okay. =item B<__nx MSGID, MSGID_PLURAL, COUNT, VAR1 =E VAL1, VAR2 =E VAL2, ...> Bringing it all together: print __nx ("One file has been deleted.\n", "{count} files have been deleted.\n", $num_files, count => $num_files); The function __nx() picks the correct plural form (also for English!) I it is capable of interpolating variables into strings. Have a close look at the order of arguments: The first argument is the string in the singular, the second one is the plural string. The third one is an integer indicating the number of items. This third argument is I used to pick the correct translation. The optionally following arguments make up the hash used for interpolation. In the beginning it is often a little confusing that the variable holding the number of items will usually be repeated somewhere in the interpolation hash. =item B<__xn MSGID, MSGID_PLURAL, COUNT, VAR1 =E VAL1, VAR2 =E VAL2, ...> Does exactly the same thing as __nx(). In fact it is a common typo promoted to a feature. =item B<__p MSGCTXT, MSGID> This is much like __. The "p" stands for "particular", and the MSGCTXT is used to provide context to the translator. This may be neccessary when your string is short, and could stand for multiple things. For example: print __p"Verb, to view", "View"; print __p"Noun, a view", "View"; The above may be "View" entries in a menu, where View->Source and File->View are different forms of "View", and likely need to be translated differently. A typical usage are GUI programs. Imagine a program with a main menu and the notorious "Open" entry in the "File" menu. Now imagine, there is another menu entry Preferences->Advanced->Policy where you have a choice between the alternatives "Open" and "Closed". In English, "Open" is the adequate text at both places. In other languages, it is very likely that you need two different translations. Therefore, you would now write: __p"File|", "Open"; __p"Preferences|Advanced|Policy", "Open"; In English, or if no translation can be found, the second argument (MSGID) is returned. This function was introduced in libintl-perl 1.17. =item B<__px MSGCTXT, MSGID, VAR1 =E VAL1, VAR2 =E VAL2, ...> Like __p(), but supports variable substitution in the string, like __x(). print __px("Verb, to view", "View {file}", file => $filename); See __p() and __x() for more details. This function was introduced in libintl-perl 1.17. =item B<__np MSGCTXT, MSGID, MSGID_PLURAL, COUNT> This adds context to plural calls. It should not be needed very often, if at all, due to the __nx() function. The type of variable substitution used in other gettext libraries (using sprintf-like sybols, like %s or %1) sometimes required context. For a (bad) example of this: printf (__np("[count] files have been deleted", "One file has been deleted.\n", "%s files have been deleted.\n", $num_files), $num_files); NOTE: The above usage is discouraged. Just use the __nx() call, which provides inline context via the key names. This function was introduced in libintl-perl 1.17. =item B<__npx MSGCTXT, MSGID, MSGID_PLURAL, COUNT, VAR1 =E VAL1, VAR2 =E VAL2, ...> This is provided for comleteness. It adds the variable interpolation into the string to the previous method, __np(). It's usage would be like so: print __npx ("Files being permenantly removed", "One file has been deleted.\n", "{count} files have been deleted.\n", $num_files, count => $num_files); I cannot think of any situations requiring this, but we can easily support it, so here it is. This function was introduced in libintl-perl 1.17. =item B A no-op function that simply echoes its arguments to the caller. Take the following piece of Perl: my @options = ( "Open", "Save", "Save As", ); ... my $option = $options[1]; Now say that you want to have this translatable. You could sometimes simply do: my @options = ( __"Open", __"Save", __"Save As", ); ... my $option = $options[1]; But often times this will not be what you want, for example when you also need the unmodified original string. Sometimes it may not even work, for example, when the preferred user language is not yet determined at the time that the list is initialized. In these cases you would write: my @options = ( N__"Open", N__"Save", N__"Save As", ); ... my $option = __($options[1]); # or: my $option = dgettext ('my-domain', $options[1]); Now all the strings in C<@options> will be left alone, since N__() returns its arguments (one ore more) unmodified. Nevertheless, the string extractor will be able to recognize the strings as being translatable. And you can still get the translation later by passing the variable instead of the string to one of the above translation functions. =item B Does exactly the same as N__(). You will use this form if you have to mark the strings as having plural forms. =item B Marks B as N__() does, but in the context B. =item B Marks B as N__n() does, but in the context B. =back =head1 EXPORTED VARIABLES The module exports several variables into your namespace: =over 4 =item B<%__> A tied hash. Its keys are your original messages, the values are their translations: my $title = "

$__{'My Homepage'}

"; This is much better for your translation team than my $title = __"

My Homepage

"; In the second case the HTML code will make it into the translation database and your translators have to be aware of HTML syntax when translating strings. B Do I use this hash outside of double-quoted strings! The code in the tied hash object relies on the correct working of the function caller() (see "perldoc -f caller"), and this function will report incorrect results if the tied hash value is the argument to a function from another package, for example: my $result = Other::Package::do_it ($__{'Some string'}); The tied hash code will see "Other::Package" as the calling package, instead of your own package. Consequently it will look up the message in the wrong text domain. There is no workaround for this bug. Therefore: Never use the tied hash interpolated strings! =item B<$__> A reference to C<%__>, in case you prefer: my $title = "

$__->{'My Homepage'}

"; =back =head1 PERFORMANCE Message translation can be a time-consuming task. Take this little example: 1: use Locale::TextDomain ('my-domain'); 2: use POSIX (:locale_h); 3: 4: setlocale (LC_ALL, ''); 5: print __"Hello world!\n"; This will usually be quite fast, but in pathological cases it may run for several seconds. A worst-case scenario would be a Chinese user at a terminal that understands the codeset Big5-HKSCS. Your translator for Chinese has however chosen to encode the translations in the codeset EUC-TW. What will happen at run-time? First, the library will search and load a (maybe large) message catalog for your textdomain 'my-domain'. Then it will look up the translation for "Hello world!\n", it will find that it is encoded in EUC-TW. Since that differs from the output codeset Big5-HKSCS, it will first load a conversion table containing several ten-thousands of codepoints for EUC-TW, then it does the same with the smaller, but still very large conversion table for Big5-HKSCS, it will convert the translation on the fly from EUC-TW into Big5-HKSCS, and finally it will return the converted translation. A worst-case scenario but realistic. And for these five lines of codes, there is not much you can do to make it any faster. You should understand, however, I the different steps will take place, so that you can arrange your code for it. You have learned in the section L that line 1 is responsible for locating your message database. However, the use() will do nothing more than remembering your settings. It will not search any directories, it will not load any catalogs or conversion tables. Somewhere in your code you will always have a call to POSIX::setlocale(), and the performance of this call may be time-consuming, depending on the architecture of your system. On some systems, this will consume very little time, on others it will only consume a considerable amount of time for the first call, and on others it may always be time-consuming. Since you cannot know, how setlocale() is implemented on the target system, you should reduce the calls to setlocale() to a minimum. Line 5 requests the translation for your string. Only now, the library will actually load the message catalog, and only now will it load eventually needed conversion tables. And from now on, all this information will be cached in memory. This strategy is used throughout libintl-perl, and you may describe it as 'load-on-first-access'. Getting the next translation will consume very little resources. However, although the translation retrieval is somewhat obfuscated by an operator-like function call, it is still a function call, and in fact it even involves a chain of function calls. Consequently, the following example is probably bad practice: foreach (1 .. 100_000) { print __"Hello world!\n"; } This example introduces a lot of overhead into your program. Better do this: my $string = __"Hello world!\n"; foreach (1 .. 100_000) { print $string; } The translation will never change, there is no need to retrieve it over and over again. Although libintl-perl will of course cache the translation read from the file system, you can still avoid the overhead for the function calls. =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::Messages(3pm), Locale::gettext_pp(3pm), perl(1), gettext(1), gettext(3) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/Util.pm000644 000765 000024 00000104751 12716422334 017545 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Portable methods for locale handling. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::Util; use strict; use constant DEBUG => 0; use base qw (Exporter); use vars qw (@EXPORT_OK); @EXPORT_OK = qw (parse_http_accept_language parse_http_accept_charset set_locale set_locale_cache get_locale_cache web_set_locale); # The following list maps languages to a rough guess of the country that # is most likely to be meant if no locale info for the country alone is # found. I have assembled the list to the best of my knowledge, preferring # the country that has the language as its official language, and in doubt # listing the country that has the most speakers of that language. Corrections # are welcome. use constant LANG2COUNTRY => { aa => 'ET', # Afar => Ethiopia ab => 'AB', # Abkhazian => Georgia # ae => '??', # Avestan => ??, Iran? af => 'za', # Afrikaans => South Africa am => 'ET', # Amharic => Ethiopia ar => 'EG', # Arabic => Egypt as => 'IN', # Assamese => India ay => 'BO', # Aymara => Bolivia az => 'AZ', # Azerbaijani => Azerbaijan ba => 'RU', # Bashkir => Russia be => 'BY', # Belarusian => Belarus bg => 'BG', # Bulgarian => Bulgaria bh => 'IN', # Bihari => India bi => 'VU', # Bislama => Vanuatu bn => 'BD', # Bengali => Bangladesh bo => 'CN', # Tibetan => China br => 'FR', # Breton => France bs => 'BA', # Bosnian => Bosnia and Herzegovina ca => 'ES', # Catalan => Spain ce => 'RU', # Chechen => Russia ch => '??', # Chamorro => Guam (or mp?) co => 'FR', # Corsican => France cs => 'CZ', # Czech => Czech Republic cu => 'BG', # Church Slavic => Bulgaria cv => 'RU', # Chuvash => Russia cy => 'GB', # Welsh => United Kingdom da => 'DK', # Danish => Denmark de => 'DE', # German => Germany dz => 'BT', # Dzongkha => Bhutan el => 'GR', # Greek => Greece en => 'US', # English => United States es => 'ES', # Actually Mexico and the US have more Spanish speakers # than Spain. But it can be assumed that they either add # the country to their browser settings or will not care # to much. et => 'EE', # Estonian => Estonia fa => 'IR', # Iran, Islamic Republic of fi => 'FI', # Finnish => Finland fj => 'FJ', # Fijian => Fiji fo => 'FO', # Faeroese => Faroe Islands fr => 'FR', # French => France fy => 'FY', # Frisian => Netherlands ga => 'IE', # Irish => Ireland gd => 'GB', # Gaelic (Scots) => United Kingdom gl => 'ES', # Gallegan => Spain gn => 'PY', # Guarani => Paraguay gu => 'IN', # Gujarati => IN gv => 'GB', # Manx => United Kingdom ha => 'NE', # Hausa => Niger (ng?) he => 'IL', # Hebrew => Israel hi => 'IN', # Hindi => India ho => 'PG', # Hiri Motu => Papua New Guinea hr => 'HR', # Croatian hu => 'HU', # Hungarian => Hungary hy => 'AM', # Armenian => Armenia hz => 'NA', # Herero => Namibia # ia => '??', # Interlingua (aka "latino sine flexione") => ?? id => 'ID', # Indonesian => Indonesia # ie => '??', # Interlingue => ??? ik => 'US', # Inupiaq => United States is => 'IS', # Icelandic => Iceland it => 'IT', # Italian => Italy iu => 'CA', # Inuktitut => Canada iw => 'IL', # Hebrew => Israel ja => 'JP', # Japanese => Japan jw => 'ID', # Javanese => Indonesia ka => 'GE', # Georgian => Georgia ki => 'KE', # Kikuyu => Kenya kj => 'AO', # Kuanyama => Angola (na?) kk => 'KZ', # Kazakh => Kazakhstan kl => 'GL', # Kalaallisut => Greenland km => 'KH', # Khmer => Cambodia kn => 'IN', # Kannada => India ko => 'KR', # Korean => Korea, Republic of (more speakers than North Korea) ks => 'IN', # Kashmiri => India ku => 'TR', # Kurdish => Turkey kv => 'RU', # Komi => Russia kw => 'GB', # Cornish => United Kingdom ky => 'KG', # Kirghyz => Kyrgyzstan la => 'VA', # Latin => Holy See (Vatican City State) lb => 'LU', # Letzeburgesch => Luxembourg ln => 'CG', # Lingala => Republic of the Congo (cd?) lo => 'LA', # Lao => Lao People's Democratic Republic lt => 'LT', # Lithuanian => Lithuania lv => 'LV', # Latvian => Latvia mg => 'MG', # Malagasy => Madagascar mh => 'MH', # Marshall => Marshall Islands mi => 'NZ', # Maori => New Zealand mk => 'MK', # Macedonian => Macedonia, the Former Yugoslav Republic of ml => 'IN', # Malayalam => India mn => 'MN', # Mongolian => Mongolia mr => 'IN', # Marathi => India ms => 'MY', # Malay => Malaysia (FIXME: not really sure ...) mt => 'MT', # Maltese => Malta my => 'MM', # Burmese => Myanmar na => 'NR', # Nauru => Nauru nb => 'NO', # Norwegian Bokmål => Norway nd => 'ZA', # Ndebele, North => South Africa ne => 'NP', # Nepali => Nepal ng => 'NA', # Ndonga => Namibia nl => 'NL', # Dutch => Netherlands nn => 'NO', # Norwegian Nynorsk => Norway no => 'NO', # Norwegian => Norway nr => 'ZA', # Ndebele, South => South Africa nv => 'US', # Navajo => United States ny => 'MW', # Chichewa; Nyanja => Malawi oc => 'FR', # Occitan (post 1500) => France om => 'ET', # Oromo => Ethiopia or => 'IN', # Oriya => India os => 'RU', # Ossetian; Ossetic => Russia (FIXME: Or Georgia?) pa => 'IN', # Panjabi => India pi => 'IN', # Pali => India (FIXME: Or Thailand, Sri Lanka, Myanmar, # Cambodia) pl => 'PL', # Polish => Poland ps => 'PK', # Pushto => Pakistan pt => 'PT', # Portuguese => Portugal (following our rules this should # actually be Brazil but that would be to unrealistic, # people from Brazil set their locale to pt_BR). qu => 'PE', # Quechua => Peru rm => 'CH', # Rhaeto-Romance => Switzerland rn => 'RW', # Rundi => Rwanda ro => 'RO', # Romanian => Romania ru => 'RU', # Russian => Russia rw => 'RW', # Kinyarwanda => Rwanda sa => 'IN', # Sanskrit => India sc => 'IT', # Sardinian => Italy sd => 'IN', # Sindhi => India se => 'SE', # Sami => Sweden (Totally unsure here. The Sami languages # are also spoken in Norway, Finland and Russia, but the # largest part of the area seems to be in Sweden. sg => '??', # Sango => Central African Republic si => 'LK', # Sinhalese => Sri Lanka sk => 'SK', # Slovakian => Slovakia sl => 'SI', # Slovenian => Slovenia sm => 'WS', # Samoan => Samoa sh => 'ZW', # Shona => Zimbabwe (FIXME: Rather Mozambique?) so => 'SO', # Somali => Somalia sq => 'AL', # Albanian => Albania sr => 'YU', # Serbian => Yugoslavia ss => '??', # Swati => Swaziland (za?) st => 'LS', # Sotho => Lesotho su => 'IN', # Sundanese => Indonesia sv => 'SE', # Swedish => Sweden sw => 'TZ', # Suaheli => Tanzania, United Republic of ta => 'LK', # Tamil => Sri Lanka te => 'IN', # Telugu => India tg => 'TJ', # Tajik => Tajikistan th => 'TH', # Thai => Thailand ti => 'ER', # Tigrinya => Eritrea tk => 'TM', # Turkmen => Turkmenistan tl => 'PH', # Tagalog => Philippines tn => 'BW', # Tswana => Botswana to => 'TO', # Tonga => Tonga tr => 'TR', # Turkish => Turkish tt => 'RU', # Tatar => Russia tw => 'GH', # Twi => Ghana ug => 'CN', # Uighur => China uk => 'UA', # Ukrainian => Ukraine ur => 'PK', # Urdu => Pakistan uz => 'UZ', # Uzbek => Uzbekistan vi => 'VN', # Vietnamese => Vietnam # vo => '??', # Volapuk => Nowhere wo => 'SN', # Wolof => Senegal xh => 'ZA', # Xhosa => South Africa yi => 'IL', # Yiddish => Israel (FIXME: Rather United States?) yo => 'NG', # Yoruba => Nigeria za => 'CN', # Zhuang => China zh => 'CN', # Chinese => China zu => 'ZA', # Zulu => South Africa }; use constant WIN32LANGUAGE => { aa => "Afar", ab => "Abkhazian", ae => "Avestan", af => "Afrikaans", am => "Amharic", ar => "Arabic", as => "Assamese", ay => "Aymara", az => "Azerbaijani", ba => "Bashkir", be => "Belarusian", bg => "Bulgarian", bh => "Bihari", bi => "Bislama", bn => "Bengali", bo => "Tibetan", br => "Breton", bs => "Bosnian", ca => "Catalan", ce => "Chechen", ch => "Chamorro", co => "Corsican", cs => "Czech", cu => "Church Slavic", cv => "Chuvash", cy => "Welsh", da => "Danish", de => "German", dz => "Dzongkha", el => "Greek", en => "English", eo => "Esperanto", es => "Spanish", et => "Estonian", eu => "Basque", fa => "Persian", fi => "Finnish", fj => "Fijian", fo => "Faeroese", fr => "French", fy => "Frisian", ga => "Irish", gd => "Gaelic (Scots)", gl => "Gallegan", gn => "Guarani", gu => "Gujarati", gv => "Manx", ha => "Hausa", he => "Hebrew", hi => "Hindi", ho => "Hiri Motu", hr => "Croatian", hu => "Hungarian", hy => "Armenian", hz => "Herero", ia => "Interlingua", id => "Indonesian", ie => "Interlingue", ik => "Inupiaq", is => "Icelandic", it => "Italian", iu => "Inuktitut", ja => "Japanese", jw => "Javanese", ka => "Georgian", ki => "Kikuyu", kj => "Kuanyama", kk => "Kazakh", kl => "Kalaallisut", km => "Khmer", kn => "Kannada", ko => "Korean", ks => "Kashmiri", ku => "Kurdish", kv => "Komi", kw => "Cornish", ky => "Kirghiz", la => "Latin", lb => "Letzeburgesch", ln => "Lingala", lo => "Lao", lt => "Lithuanian", lv => "Latvian", mg => "Malagasy", mh => "Marshall", mi => "Maori", # Sorry, lads, but that is what M$ calls your language ... mk => "FYRO Macedonian", ml => "Malayalam", mn => "Mongolian", mo => "Moldavian", mr => "Marathi", ms => "Malay", mt => "Maltese", my => "Burmese", na => "Nauru", nb => "Norwegian (Bokmål)", nd => "Ndebele, North", ne => "Nepali", ng => "Ndonga", nl => "Dutch", nn => "Norwegian-Nynorsk", no => "Norwegian-Nynorsk", nr => "Ndebele, South", nv => "Navajo", ny => "Chichewa", oc => "Occitan (post 1500)", om => "Oromo", or => "Oriya", os => "Ossetian", pa => "Panjabi", pi => "Pali", pl => "Polish", ps => "Pushto", pt => "Portuguese", qu => "Quechua", rm => "Rhaeto-Romance", rn => "Rundi", ro => "Romanian", ru => "Russian", rw => "Kinyarwanda", sa => "Sanskrit", sc => "Sardinian", sd => "Sindhi", se => "Sami", sg => "Sango", si => "Sinhalese", sk => "Slovak", sl => "Slovenian", sm => "Samoan", sn => "Shona", so => "Somali", sq => "Albanian", sr => "Serbian", ss => "Swati", st => "Sotho", su => "Sundanese", sv => "Swedish", sw => "Swahili", ta => "Tamil", te => "Telugu", tg => "Tajik", th => "Thai", ti => "Tigrinya", tk => "Turkmen", tl => "Tagalog", tn => "Tswana", to => "Tonga", tr => "Turkish", ts => "Tsonga", tt => "Tatar", tw => "Twi", ug => "Uighur", uk => "Ukrainian", ur => "Urdu", uz => "Uzbek", vi => "Vietnamese", vo => "Volapuk", wo => "Wolof", xh => "Xhosa", yi => "Yiddish", yo => "Yoruba", za => "Zhuang", zh => "Chinese", zu => "Zulu", }; use constant WIN32COUNTRY => { ad => "Andorra", ae => "United Arab Emirates", af => "Afghanistan", ag => "Antigua and Barbuda", ai => "Anguilla", al => "Albania", am => "Armenia", an => "Netherlands Antilles", ao => "Angola", aq => "Antarctica", ar => "Argentina", as => "American Samoa", at => "Austria", au => "Australia", aw => "Aruba", ax => "Aland Islands", az => "Azerbaijan", ba => "Bosnia and Herzegovina", bb => "Barbados", bd => "Bangladesh", be => "Belgium", bf => "Burkina Faso", bg => "Bulgaria", bh => "Bahrain", bi => "Burundi", bj => "Benin", bm => "Bermuda", bn => "Brunei Darussalam", bo => "Bolivia", br => "Brazil", bs => "Bahamas", bt => "Bhutan", bv => "Bouvet Island", bw => "Botswana", by => "Belarus", bz => "Belize", ca => "Canada", cc => "Cocos (Keeling) Islands", cd => "Congo, The Democratic Republic of the", cf => "Central African Republic", cg => "Congo", ch => "Switzerland", ci => "Cote D'Ivoire", ck => "Cook Islands", cl => "Chile", cm => "Cameroon", cn => "China", co => "Colombia", cr => "Costa Rica", cs => "Serbia and Montenegro", cu => "Cuba", cv => "Cape Verde", cx => "Christmas Island", cy => "Cyprus", cz => "Czech Republic", de => "Germany", dj => "Djibouti", dk => "Denmark", dm => "Dominica", do => "Dominican Republic", dz => "Algeria", ec => "Ecuador", ee => "Estonia", eg => "Egypt", eh => "Western Sahara", er => "Eritrea", es => "Spain", et => "Ethiopia", fi => "Finland", fj => "Fiji", fk => "Falkland Islands (Malvinas)", fm => "Micronesia, Federated States of", fo => "Faroe Islands", fr => "France", fx => "France, Metropolitan", ga => "Gabon", gb => "United Kingdom", gd => "Grenada", ge => "Georgia", gf => "French Guiana", gh => "Ghana", gi => "Gibraltar", gl => "Greenland", gm => "Gambia", gn => "Guinea", gp => "Guadeloupe", gq => "Equatorial Guinea", gr => "Greece", gs => "South Georgia and the South Sandwich Islands", gt => "Guatemala", gu => "Guam", gw => "Guinea-Bissau", gy => "Guyana", hk => "Hong Kong", hm => "Heard Island and McDonald Islands", hn => "Honduras", hr => "Croatia", ht => "Haiti", hu => "Hungary", id => "Indonesia", ie => "Ireland", il => "Israel", in => "India", io => "British Indian Ocean Territory", iq => "Iraq", ir => "Iran", is => "Iceland", it => "Italy", jm => "Jamaica", jo => "Jordan", jp => "Japan", ke => "Kenya", kg => "Kyrgyzstan", kh => "Cambodia", ki => "Kiribati", km => "Comoros", kn => "Saint Kitts and Nevis", kp => "North-Korea", kr => "Korea", kw => "Kuwait", ky => "Cayman Islands", kz => "Kazakhstan", la => "Laos", lb => "Lebanon", lc => "Saint Lucia", li => "Liechtenstein", lk => "Sri Lanka", lr => "Liberia", ls => "Lesotho", lt => "Lithuania", lu => "Luxembourg", lv => "Latvia", ly => "Libyan", ma => "Morocco", mc => "Monaco", md => "Moldova", mg => "Madagascar", mh => "Marshall Islands", mk => "Former Yugoslav Republic of Macedonia", ml => "Mali", mm => "Myanmar", mn => "Mongolia", mo => "Macao", mp => "Northern Mariana Islands", mq => "Martinique", mr => "Mauritania", ms => "Montserrat", mt => "Malta", mu => "Mauritius", mv => "Maldives", mw => "Malawi", mx => "Mexico", my => "Malaysia", mz => "Mozambique", na => "Namibia", nc => "New Caledonia", ne => "Niger", nf => "Norfolk Island", ng => "Nigeria", ni => "Nicaragua", nl => "Netherlands", no => "Norway", np => "Nepal", nr => "Nauru", nu => "Niue", nz => "New Zealand", om => "Oman", pa => "Panama", pe => "Peru", pf => "French Polynesia", pg => "Papua New Guinea", ph => "Philippines", pk => "Pakistan", pl => "Poland", pm => "Saint Pierre and Miquelon", pn => "Pitcairn", pr => "Puerto Rico", ps => "Palestinian Territory, Occupied", pt => "Portugal", pw => "Palau", py => "Paraguay", qa => "Qatar", re => "Reunion", ro => "Romania", ru => "Russian Federation", rw => "Rwanda", sa => "Saudi Arabia", sb => "Solomon Islands", sc => "Seychelles", sd => "Sudan", se => "Sweden", sg => "Singapore", sh => "Saint Helena", si => "Slovenia", sj => "Svalbard and Jan Mayen", sk => "Slovakia", sl => "Sierra Leone", sm => "San Marino", sn => "Senegal", so => "Somalia", sr => "Suriname", st => "Sao Tome and Principe", sv => "El Salvador", sy => "Syrian Arab Republic", sz => "Swaziland", tc => "Turks and Caicos Islands", td => "Chad", tf => "French Southern Territories", tg => "Togo", th => "Thailand", tj => "Tajikistan", tk => "Tokelau", tl => "Timor-Leste", tm => "Turkmenistan", tn => "Tunisia", to => "Tonga", tr => "Turkey", tt => "Trinidad and Tobago", tv => "Tuvalu", tw => "Taiwan, Province of China", tz => "Tanzania, United Republic of", ua => "Ukraine", ug => "Uganda", um => "United States Minor Outlying Islands", us => "United States", uy => "Uruguay", uz => "Uzbekistan", va => "Holy See (Vatican City State)", vc => "Saint Vincent and the Grenadines", ve => "Venezuela", vg => "Virgin Islands, British", vi => "Virgin Islands, U.S.", vn => "Vietnam", vu => "Vanuatu", wf => "Wallis and Futuna", ws => "Samoa", ye => "Yemen", yt => "Mayotte", za => "South Africa", zm => "Zambia", zw => "Zimbabwe", }; my $locale_cache; sub parse_http_accept_language { my ($string) = @_; my @tokens = split / *, */, $string; my %retval; foreach my $token (@tokens) { my $quality = 1; # This RE is more forgiving than the standard. It accepts # values greater than 1.0 and with more fractional digits # than 3. if ($token =~ s/ *; *q *= *([0-9]+(?:\.([0-9]+))?)$//) { $quality = $1; } $retval{$token} = $quality; } # RFC 2616 only allows 1-8 characters for language and country # but we are more forgiving. return grep { /^[A-Za-z]+(?:-[A-Za-z]+)?$/ } map { $_ = 'C' if $_ eq '*'; $_ } sort { $retval{$b} <=> $retval{$a} } keys %retval; } sub parse_http_accept_charset { my ($string) = @_; my @tokens = split / *, */, $string; my %retval; foreach my $token (@tokens) { my $quality = 1; # This RE is more forgiving than the standard. It accepts # values greater than 1.0 and with more fractional digits # than 3. if ($token =~ s/ *; *q *= *([0-9]+(?:\.([0-9]+))?)$//) { $quality = $1; } $retval{$token} = $quality; } return grep { # This is really allowed in character set names ... /^[-!\#\$\%\&\'\+\.0-9A-Z_\`a-z\|\~]+$/ } map { $_ = undef if $_ eq '*'; $_ } sort { $retval{$b} <=> $retval{$a} } keys %retval; } sub set_locale { my ($category, $language, $country, $charset) = @_; require POSIX; $country = '' unless defined $country; $charset = '' unless defined $charset; my $set_locale; # Look up the cache first. if (my $retval = $locale_cache->{$language}->{$country}->{$charset}) { my ($locale, $country) = @$retval; POSIX::setlocale ($category, $locale); return @$retval; } # Initialize the cache with the undefined value so that we can do # error returns without setting it. $locale_cache->{$language}->{$country}->{$charset} = undef; my $windows = ($^O !~ /darwin/i && $^O =~ /win/i) ? 1 : 0; if ($windows) { return &__set_locale_windows; } my $set_language; my $set_country; # First we try to only use the language. my @languages = ($language); my @lc_languages = map { lc $_ } @languages; my @uc_languages = map { uc $_ } @languages; my %seen = (); foreach my $language (@languages, @lc_languages, @uc_languages) { next if $seen{$language}++; warn "Trying lingua only setlocale '$language'.\n" if DEBUG; my $result = POSIX::setlocale ($category, $language); if ($result) { $set_locale = $set_language = $result if $result; last; } } # Now try it with the country appended. my @countries = length $country ? ($country) : (); my @uc_countries = map { uc $_ } @countries; my @lc_countries = map { uc $_ } @countries; push @countries, @uc_countries, @lc_countries; LINGUA: foreach my $language (@languages, @lc_languages, @uc_languages) { my $count = 0; my @guessed_countries = (LANG2COUNTRY->{lc $language}, lc LANG2COUNTRY->{lc $language}, uc LANG2COUNTRY->{lc $language}); foreach my $c (@countries, @guessed_countries) { ++$count; next unless defined $c && length $c; my $try = $language . '_' . $c; next if $seen{$try}++; warn "Trying setlocale '$try'.\n" if DEBUG; my $result = POSIX::setlocale ($category, $try); if ($result) { $set_locale = $result; if ($count >= @countries) { $set_country = $c; } else { $set_country = $country; } last LINGUA; } } } unless (length $charset) { return unless defined $set_locale && length $set_locale; $locale_cache->{$language}->{$country}->{$charset} = [$set_locale, $set_country]; return wantarray ? ($set_locale, $set_country) : $set_locale; } my @charsets = ($charset); my $cleaned = $charset; push @charsets, $cleaned if $cleaned =~ s/-//g; my @lc_charsets = map { lc $charset } @charsets; my @uc_charsets = map { uc $charset } @charsets; push @charsets, @lc_charsets, @uc_charsets; %seen = (); LINGUA2: foreach my $language (@languages, @lc_languages, @uc_languages) { my @guessed_countries = (LANG2COUNTRY->{lc $language}, lc LANG2COUNTRY->{lc $language}, uc LANG2COUNTRY->{lc $language}); my $count = 0; foreach my $c (@countries, @guessed_countries) { ++$count; $c = '' unless defined $c && length $c; my $country_try = $language; $country_try .= (length $c) ? "_$c" : ''; foreach my $ch (@charsets, @lc_charsets, @uc_charsets) { my $try = $country_try . '.' . $ch; next if $seen{$try}++; warn "Trying setlocale '$try'.\n" if DEBUG; my $result = POSIX::setlocale ($category, $try); if ($result) { $set_locale = $result; if ($count >= @countries) { $set_country = $c; } else { $set_country = $country; } last LINGUA2; } } } } return unless defined $set_locale && length $set_locale; $locale_cache->{$language}->{$country}->{$charset} = [$set_locale, $set_country]; return wantarray ? ($set_locale, $set_country) : $set_locale; } sub __set_locale_windows { my ($category, $language, $country, $charset) = @_; my $set_locale; $country = '' unless defined $country; $charset = '' unless defined $charset; # First we try to only use the language. my $long_language = WIN32LANGUAGE->{lc $language}; my @languages = ($long_language, $language); my %seen = (); foreach my $language (@languages) { next if $seen{$language}++; warn "Trying lingua only setlocale '$language'.\n" if DEBUG; my $result = POSIX::setlocale ($category, $language); if ($result) { $set_locale = $result if $result; last; } } # Now try it with the country appended. my $set_country; if (length $country) { COMBI: foreach my $language (@languages) { # We do not need a fallback country here, because the "system" already # provides the information. my @short_countries = ($country); my @countries = map { WIN32COUNTRY->{lc $_} } grep { length $_ } @short_countries; foreach my $c (@countries) { next unless defined $c && length $c; my $try = $language . '_' . $c; next if $seen{$try}++; warn "Trying setlocale '$try'.\n" if DEBUG; my $result = POSIX::setlocale ($category, $try); if ($result) { $set_locale = $result; $set_country = $c; last COMBI; } } } } return unless defined $set_locale && length $set_locale; # Apparently, there is no point in setting a charset. Even the new # MS-DOS versions like 2000 or XP still have the concept of more or # less fixed codepages. Switching to UTF-8 does not work. $locale_cache->{$language}->{$country}->{$charset} = [$set_locale, $set_country]; return wantarray ? ($set_locale, $set_country) : $set_locale; } sub get_locale_cache { $locale_cache; } sub set_locale_cache { if (ref $_[0] && 'HASH' eq ref $_[0]) { $locale_cache = $_[0]; } else { my %locale_cache = @_; $locale_cache = \%locale_cache; } } sub web_set_locale { my ($accept_language, $accept_charset, $category, $available) = @_; my %available; if ($available) { foreach (@$available) { my $locale = $_; $locale =~ s/[_\@\.].*//; $available{lc $locale} = 1; } } my @languages; if (ref $accept_language && 'ARRAY' eq ref $accept_language) { @languages = @$accept_language; } else { @languages = parse_http_accept_language $accept_language; } if ($available) { my @all = @languages; @languages = (); foreach my $locale (@all) { my $language = lc $locale; $language =~ s/[_\@\.].*//; push @languages, $locale if $available{$language}; } } my @charsets; if (defined $accept_charset) { if (ref $accept_charset && 'ARRAY' eq ref $accept_charset) { @charsets = @$accept_charset; } else { @charsets = parse_http_accept_charset $accept_charset; } } unless (defined $category) { require POSIX; $category = POSIX::LC_ALL(); } my ($set_locale, $set_language, $set_country, $set_charset); foreach my $lang (@languages) { my ($language, $country) = split /-/, $lang, 2; my ($locale, $country_used) = set_locale ($category, $language, $country, $charsets[0]); if (defined $locale) { # If a country was specified, we have to check whether it # was actually selected. if (defined $country) { if (!defined $country || ($country ne $country_used)) { $set_language = $language; $set_locale = $locale; $set_country = $country_used; $set_charset = $charsets[0]; } } if (wantarray) { return $locale, $lang, $country_used, $charsets[0]; } else { return $locale; } } } if (defined $set_locale) { if (wantarray) { return $set_locale, $set_language, $set_country, $set_charset; } else { return $set_locale; } } return; } 1; __END__ =head1 NAME Locale::Util - Portable l10n and i10n functions =head1 SYNOPSIS use Locale::Util; my @linguas = parse_http_accept_language $ENV{HTTP_ACCEPT_LANGUAGE}; my @charsets = parse_http_accept_charset $ENV{HTTP_ACCEPT_CHARSET}; # Trie to set the locale to Brasilian Portuguese in UTF-8. my $set_locale = set_locale LC_ALL, 'pt', 'BR', 'utf-8'; set_locale_cache $last_cache; my $cache = get_locale_cache; web_set_locale ($ENV{HTTP_ACCEPT_LANGUAGE}, $ENV_ACCEPT_CHARSET); web_set_locale (['fr-BE', 'fr', 'it'], ['cp1252', 'utf-8']); =head1 DESCRIPTION This module provides portable functions dealing with localization (l10n) and internationalization(i10n). It doesn't export anything by default, you have to specify each function you need in the import list, or use the fully qualified name. The functions here have a focus on web development, although they are general enough to have them in the Locale:: namespace. This module is considered alpha code. The interface is not stable. Please contact the author if you want to use it in production code. This module was introduced in libintl-perl 1.17. =head1 FUNCTIONS =over 4 =item B Parses a string as passed in the HTTP header "Accept-Language". It returns a list of tokens sorted by the quality value, see RFC 2616 for details. Example: parse_http_accept ("fr-fr, fr; q=0.7, de; q=0.3"); This means: Give me French for France with a quality value of 1.0 (the maximum). Otherwise I will take any other French version (quality 0.7), German has a quality of 0.3 for me. The function will return a list of tokens in the order of their quality values, in this case "fr-fr", "fr" and "de". The function is more forgiving than RFC 2616. It accepts quality values greater than 1.0 and with more than 3 decimal places. It also accepts languages and country names with more than 8 characters. The language "*" is translated into "C". =item B Parses a string as passed in the HTTP header "Accept-Charset". It returns a list of tokens sorted by the quality value, see RFC 2616 for details. The special character set "*" (means all character sets) will be translated to the undefined value. =item B Tries to set the user locale by means of POSIX::setlocale(). The latter function has the disadvantage, that its second argument (the locale description string) is completely non-standard and system-dependent. This function tries its best at guessing the system's notion of a locale dientifier, with the arguments supplied: =over 8 =item B An integer argument for a valid locale category. These are the LC_* constants (LC_ALL, LC_CTIME, LC_COLLATE, ...) defined in both Locale::Messages(3pm) and POSIX(3pm). =item B A 2-letter language identifier as per ISO 639. Case doesn't matter, but an unchanged version (ie. not lower-cased) of the language you provided will always be tried to. =item B A 2-letter language identifier as per ISO 639. Case doesn't matter, but an unchanged version (ie. not lower-cased) of the language you provided will always be tried to. This parameter is optional. If it is not defined, the function will try to guess an appropriate country, otherwise leave it to the operating system. =item B A valid charset name. Valid means valid! The charset "utf8" is not valid (it is "utf-8"). Charset names that are accepted by the guessing algorithms in Encode(3pm) are also not necessarily valid. If the parameter is undefined, it is ignored. It is always ignored under Windows. =back The function tries to approach the desired locale in loops, refining it on every success. It will first try to set the language (for any country), then try to select the correct language, and finally try to select the correct charset. The return value is false in case of failure, or the return value of the underlying POSIX::setlocale() call in case of success. In array context, the function returns the country name that was passed in the successful call to POSIX::setlocale(). If this string is equal to the country name you passed as an argument, you can be reasonably sure that the settings for this country are really used. If it is not equal, the function has taken a guess at the country (it has a list of "default" countries for each language). It seems that under Windows, POSIX::setlocale() also succeeds, if you pass a country name that is actually not supported. Therefore, the information is not completely reliable. Please note that this function is intended for server processes (especially web applications) that need to switch in a portable way to a certain locale. It is B the recommended way to set the program locale for a regular application. In a regular application you should do the following: use POSIX qw (setlocale LC_ALL); setlocale LC_ALL, ''; The empty string as the second argument means, that the system should switch to the user's default locale. =item B The function set_locale() is potentially expansive, especially when it fails, because it can try a lot of different combinations, and the system may have to load a lot of locale definitions from its internal database. In order to speed up things, results are internally cached in a hash, keys are the languages, subkeys countries, subsubkeys the charsets. You can get a reference to this hash with get_locale_cache(). The function cannot fail. =item B Sets the internal cache. You can either pass a hash or a hash reference. The function will use this as its cache, discarding its old cache. This allows you to keep the hash persistent. The function cannot fail. =item B Try to change the locale to the settings described by ACCEPT_LANGUAGE and ACCEPT_CHARSET. For each argument you can either pass a string as in the corresponding http header, or a reference to an array of language resp. charset identifiers. Currently only the first charset passed is used as an argument. You are strongly encouraged to pass a hard-coded value here, so that you have control about your output. The argument B specifies the category (one of the LC_* constants as defined in Locale::Messages(3pm) or in POSIX(3pm)). The category defaults to LC_ALL. You can pass an optional reference to a list of locales in XPG4 format that are available in your application. This is useful if you know which languages are supported by your application. In fact, only the language part of the values in the list are considered (for example for "en_US", only "en" is used). The country or other parts are ignored. The function returns the return value of the underlying set_locale() call, or false on failure. The function returns false on failure. On success it returns the return value of the underlying set_locale() call. This value can be used directly in subsequent calls to POSIX::setlocale(). In array context, it additionally returns the identifiers for the language, the country, and the charset actually used. =back =head1 BUGS The function set_locale() probably fails to guess the correct locale identifier on a lot of systems. If you have found such a case, please submit it as a bug report. The bug tracking system for this packags is at http://rt.cpan.org/NoAuth/Bugs.html?libintl-perl Please note that this module is considered alpha code, and the interface is not stable. Please contact the author, if you want to use it in production code. =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO POSIX(3pm), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/_Encode.pm000644 000765 000024 00000004377 12716422333 022161 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Interface to Encode. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::_Encode; use strict; use integer; use Encode; require Locale::RecodeData; use base qw (Locale::RecodeData); sub _recode { use bytes; my $retval; if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = pack "N*", @{$_[1]}; $retval = Encode::from_to ($_[1], 'UTF-32BE', $_[0]->{_to}); } elsif ($_[0]->{_to} eq 'INTERNAL') { $retval = Encode::from_to ($_[1], $_[0]->{_from}, 'UTF-32BE'); return unless defined $retval; $_[1] = [ unpack "N*", $_[1] ]; } else { $retval = Encode::from_to ($_[1], $_[0]->{_from}, $_[0]->{_to}); } return unless defined $retval; return 1; } 1; __END__ =head1 NAME Locale::RecodeData::_Encode - Internal wrapper around Encode =head1 SYNOPSIS use Locale::RecodeData::_Encode; This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module converts text with the help of Encode(3). It is tried first for conversions if libintl-perl detects the presence of Encode. =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::Recode(3), Encode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ASMO_449.pm000644 000765 000024 00000042772 12716422333 021765 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ASMO_449. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ASMO_449; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x060c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x061b, 0x003c, 0x003d, 0x003e, 0x061f, 0x0040, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x063a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\xc2\xa4", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\xd8\x8c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\xd8\x9b", "\x3c", "\x3d", "\x3e", "\xd8\x9f", "\x40", "\xd8\xa1", "\xd8\xa2", "\xd8\xa3", "\xd8\xa4", "\xd8\xa5", "\xd8\xa6", "\xd8\xa7", "\xd8\xa8", "\xd8\xa9", "\xd8\xaa", "\xd8\xab", "\xd8\xac", "\xd8\xad", "\xd8\xae", "\xd8\xaf", "\xd8\xb0", "\xd8\xb1", "\xd8\xb2", "\xd8\xb3", "\xd8\xb4", "\xd8\xb5", "\xd8\xb6", "\xd8\xb7", "\xd8\xb8", "\xd8\xb9", "\xd8\xba", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\xd9\x80", "\xd9\x81", "\xd9\x82", "\xd9\x83", "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd9\x87", "\xd9\x88", "\xd9\x89", "\xd9\x8a", "\xd9\x8b", "\xd9\x8c", "\xd9\x8d", "\xd9\x8e", "\xd9\x8f", "\xd9\x90", "\xd9\x91", "\xd9\x92", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x7c", "\x7d", "\xe2\x80\xbe", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x00000040 => "\x40", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007f => "\x7f", 0x000000a4 => "\x24", 0x0000060c => "\x2c", 0x0000061b => "\x3b", 0x0000061f => "\x3f", 0x00000621 => "\x41", 0x00000622 => "\x42", 0x00000623 => "\x43", 0x00000624 => "\x44", 0x00000625 => "\x45", 0x00000626 => "\x46", 0x00000627 => "\x47", 0x00000628 => "\x48", 0x00000629 => "\x49", 0x0000062a => "\x4a", 0x0000062b => "\x4b", 0x0000062c => "\x4c", 0x0000062d => "\x4d", 0x0000062e => "\x4e", 0x0000062f => "\x4f", 0x00000630 => "\x50", 0x00000631 => "\x51", 0x00000632 => "\x52", 0x00000633 => "\x53", 0x00000634 => "\x54", 0x00000635 => "\x55", 0x00000636 => "\x56", 0x00000637 => "\x57", 0x00000638 => "\x58", 0x00000639 => "\x59", 0x0000063a => "\x5a", 0x00000640 => "\x60", 0x00000641 => "\x61", 0x00000642 => "\x62", 0x00000643 => "\x63", 0x00000644 => "\x64", 0x00000645 => "\x65", 0x00000646 => "\x66", 0x00000647 => "\x67", 0x00000648 => "\x68", 0x00000649 => "\x69", 0x0000064a => "\x6a", 0x0000064b => "\x6b", 0x0000064c => "\x6c", 0x0000064d => "\x6d", 0x0000064e => "\x6e", 0x0000064f => "\x6f", 0x00000650 => "\x70", 0x00000651 => "\x71", 0x00000652 => "\x72", 0x0000203e => "\x7e", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ASMO_449 - Conversion routines for ASMO_449 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ASMO_449. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO_9036 alias ARABIC7 alias ISO-IR-89 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 000000A4 | CURRENCY SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000060C | ARABIC COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000061B | ARABIC SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000061F | ARABIC QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000621 | ARABIC LETTER HAMZA 42 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE 43 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE 44 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE 45 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW 46 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE 47 | 00000627 | ARABIC LETTER ALEF 48 | 00000628 | ARABIC LETTER BEH 49 | 00000629 | ARABIC LETTER TEH MARBUTA 4A | 0000062A | ARABIC LETTER TEH 4B | 0000062B | ARABIC LETTER THEH 4C | 0000062C | ARABIC LETTER JEEM 4D | 0000062D | ARABIC LETTER HAH 4E | 0000062E | ARABIC LETTER KHAH 4F | 0000062F | ARABIC LETTER DAL 50 | 00000630 | ARABIC LETTER THAL 51 | 00000631 | ARABIC LETTER REH 52 | 00000632 | ARABIC LETTER ZAIN 53 | 00000633 | ARABIC LETTER SEEN 54 | 00000634 | ARABIC LETTER SHEEN 55 | 00000635 | ARABIC LETTER SAD 56 | 00000636 | ARABIC LETTER DAD 57 | 00000637 | ARABIC LETTER TAH 58 | 00000638 | ARABIC LETTER ZAH 59 | 00000639 | ARABIC LETTER AIN 5A | 0000063A | ARABIC LETTER GHAIN 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000640 | ARABIC TATWEEL 61 | 00000641 | ARABIC LETTER FEH 62 | 00000642 | ARABIC LETTER QAF 63 | 00000643 | ARABIC LETTER KAF 64 | 00000644 | ARABIC LETTER LAM 65 | 00000645 | ARABIC LETTER MEEM 66 | 00000646 | ARABIC LETTER NOON 67 | 00000647 | ARABIC LETTER HEH 68 | 00000648 | ARABIC LETTER WAW 69 | 00000649 | ARABIC LETTER ALEF MAKSURA 6A | 0000064A | ARABIC LETTER YEH 6B | 0000064B | ARABIC FATHATAN 6C | 0000064C | ARABIC DAMMATAN 6D | 0000064D | ARABIC KASRATAN 6E | 0000064E | ARABIC FATHA 6F | 0000064F | ARABIC DAMMA 70 | 00000650 | ARABIC KASRA 71 | 00000651 | ARABIC SHADDA 72 | 00000652 | ARABIC SUKUN 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000203E | OVERLINE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ATARI_ST.pm000644 000765 000024 00000064470 12716422333 022073 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ATARI-ST. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ATARI_ST; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, 0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, 0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, 0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2038, 0x221e, 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x03b8, 0x03a9, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x220f, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2022, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc3\xac", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xbb", "\xc3\xb9", "\xc3\xbf", "\xc3\x96", "\xc3\x9c", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc3\x9f", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xc3\xa3", "\xc3\xb5", "\xc3\x98", "\xc3\xb8", "\xc5\x93", "\xc5\x92", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc2\xa8", "\xc2\xb4", "\xe2\x80\xa0", "\xc2\xb6", "\xc2\xa9", "\xc2\xae", "\xe2\x84\xa2", "\xc4\xb3", "\xc4\xb2", "\xd7\x90", "\xd7\x91", "\xd7\x92", "\xd7\x93", "\xd7\x94", "\xd7\x95", "\xd7\x96", "\xd7\x97", "\xd7\x98", "\xd7\x99", "\xd7\x9b", "\xd7\x9c", "\xd7\x9e", "\xd7\xa0", "\xd7\xa1", "\xd7\xa2", "\xd7\xa4", "\xd7\xa6", "\xd7\xa7", "\xd7\xa8", "\xd7\xa9", "\xd7\xaa", "\xd7\x9f", "\xd7\x9a", "\xd7\x9d", "\xd7\xa3", "\xd7\xa5", "\xc2\xa7", "\xe2\x80\xb8", "\xe2\x88\x9e", "\xce\xb1", "\xce\xb2", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\xb8", "\xce\xa9", "\xce\xb4", "\xe2\x88\xae", "\xcf\x86", "\xe2\x88\x88", "\xe2\x88\x8f", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x80\xa2", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xc2\xb3", "\xc2\xaf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a1 => "\xad", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000a5 => "\x9d", 0x000000a7 => "\xdd", 0x000000a8 => "\xb9", 0x000000a9 => "\xbd", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000ae => "\xbe", 0x000000af => "\xff", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b3 => "\xfe", 0x000000b4 => "\xba", 0x000000b5 => "\xe6", 0x000000b6 => "\xbc", 0x000000b7 => "\xfa", 0x000000ba => "\xa7", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c0 => "\xb6", 0x000000c3 => "\xb7", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000d1 => "\xa5", 0x000000d5 => "\xb8", 0x000000d6 => "\x99", 0x000000d8 => "\xb2", 0x000000dc => "\x9a", 0x000000df => "\x9e", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e3 => "\xb0", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ec => "\x8d", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f5 => "\xb1", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f8 => "\xb3", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000ff => "\x98", 0x00000132 => "\xc1", 0x00000133 => "\xc0", 0x00000152 => "\xb5", 0x00000153 => "\xb4", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b2 => "\xe1", 0x000003b4 => "\xeb", 0x000003b8 => "\xe9", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x000005d0 => "\xc2", 0x000005d1 => "\xc3", 0x000005d2 => "\xc4", 0x000005d3 => "\xc5", 0x000005d4 => "\xc6", 0x000005d5 => "\xc7", 0x000005d6 => "\xc8", 0x000005d7 => "\xc9", 0x000005d8 => "\xca", 0x000005d9 => "\xcb", 0x000005da => "\xd9", 0x000005db => "\xcc", 0x000005dc => "\xcd", 0x000005dd => "\xda", 0x000005de => "\xce", 0x000005df => "\xd8", 0x000005e0 => "\xcf", 0x000005e1 => "\xd0", 0x000005e2 => "\xd1", 0x000005e3 => "\xdb", 0x000005e4 => "\xd2", 0x000005e5 => "\xdc", 0x000005e6 => "\xd3", 0x000005e7 => "\xd4", 0x000005e8 => "\xd5", 0x000005e9 => "\xd6", 0x000005ea => "\xd7", 0x00002020 => "\xbb", 0x00002022 => "\xf9", 0x00002038 => "\xde", 0x0000207f => "\xfc", 0x00002122 => "\xbf", 0x00002208 => "\xee", 0x0000220f => "\xef", 0x0000221a => "\xfb", 0x0000221e => "\xdf", 0x0000222e => "\xec", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ATARI_ST - Conversion routines for ATARI-ST =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ATARI-ST. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.1 source: Guido Flohr Eguido.flohr@cantanea.comE alias ATARIST alias X-ATARIST alias X-ATARI-ST Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000A5 | YEN SIGN 9E | 000000DF | LATIN SMALL LETTER SHARP S 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 000000E3 | LATIN SMALL LETTER A WITH TILDE B1 | 000000F5 | LATIN SMALL LETTER O WITH TILDE B2 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B3 | 000000F8 | LATIN SMALL LETTER O WITH STROKE B4 | 00000153 | LATIN SMALL LIGATURE OE B5 | 00000152 | LATIN CAPITAL LIGATURE OE B6 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE B7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE B8 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE B9 | 000000A8 | DIAERESIS BA | 000000B4 | ACUTE ACCENT BB | 00002020 | DAGGER BC | 000000B6 | PILCROW SIGN BD | 000000A9 | COPYRIGHT SIGN BE | 000000AE | REGISTERED SIGN BF | 00002122 | TRADE MARK SIGN C0 | 00000133 | LATIN SMALL LIGATURE IJ C1 | 00000132 | LATIN CAPITAL LIGATURE IJ C2 | 000005D0 | HEBREW LETTER ALEF C3 | 000005D1 | HEBREW LETTER BET C4 | 000005D2 | HEBREW LETTER GIMEL C5 | 000005D3 | HEBREW LETTER DALET C6 | 000005D4 | HEBREW LETTER HE C7 | 000005D5 | HEBREW LETTER VAV C8 | 000005D6 | HEBREW LETTER ZAYIN C9 | 000005D7 | HEBREW LETTER HET CA | 000005D8 | HEBREW LETTER TET CB | 000005D9 | HEBREW LETTER YOD CC | 000005DB | HEBREW LETTER KAF CD | 000005DC | HEBREW LETTER LAMED CE | 000005DE | HEBREW LETTER MEM CF | 000005E0 | HEBREW LETTER NUN D0 | 000005E1 | HEBREW LETTER SAMEKH D1 | 000005E2 | HEBREW LETTER AYIN D2 | 000005E4 | HEBREW LETTER PE D3 | 000005E6 | HEBREW LETTER TSADI D4 | 000005E7 | HEBREW LETTER QOF D5 | 000005E8 | HEBREW LETTER RESH D6 | 000005E9 | HEBREW LETTER SHIN D7 | 000005EA | HEBREW LETTER TAV D8 | 000005DF | HEBREW LETTER FINAL NUN D9 | 000005DA | HEBREW LETTER FINAL KAF DA | 000005DD | HEBREW LETTER FINAL MEM DB | 000005E3 | HEBREW LETTER FINAL PE DC | 000005E5 | HEBREW LETTER FINAL TSADI DD | 000000A7 | SECTION SIGN DE | 00002038 | CARET DF | 0000221E | INFINITY E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000003B2 | GREEK SMALL LETTER BETA E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 000003B8 | GREEK SMALL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000222E | CONTOUR INTEGRAL ED | 000003C6 | GREEK SMALL LETTER PHI EE | 00002208 | ELEMENT OF EF | 0000220F | N-ARY PRODUCT F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002022 | BULLET FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000000B3 | SUPERSCRIPT THREE FF | 000000AF | MACRON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ATARI_ST_EURO.pm000644 000765 000024 00000064544 12716422333 022727 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ATARI-ST-EURO. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ATARI_ST_EURO; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, 0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, 0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, 0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x20ac, 0x221e, 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x03b8, 0x03a9, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x220f, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2022, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc3\xac", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xbb", "\xc3\xb9", "\xc3\xbf", "\xc3\x96", "\xc3\x9c", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc3\x9f", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xc3\xa3", "\xc3\xb5", "\xc3\x98", "\xc3\xb8", "\xc5\x93", "\xc5\x92", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc2\xa8", "\xc2\xb4", "\xe2\x80\xa0", "\xc2\xb6", "\xc2\xa9", "\xc2\xae", "\xe2\x84\xa2", "\xc4\xb3", "\xc4\xb2", "\xd7\x90", "\xd7\x91", "\xd7\x92", "\xd7\x93", "\xd7\x94", "\xd7\x95", "\xd7\x96", "\xd7\x97", "\xd7\x98", "\xd7\x99", "\xd7\x9b", "\xd7\x9c", "\xd7\x9e", "\xd7\xa0", "\xd7\xa1", "\xd7\xa2", "\xd7\xa4", "\xd7\xa6", "\xd7\xa7", "\xd7\xa8", "\xd7\xa9", "\xd7\xaa", "\xd7\x9f", "\xd7\x9a", "\xd7\x9d", "\xd7\xa3", "\xd7\xa5", "\xc2\xa7", "\xe2\x82\xac", "\xe2\x88\x9e", "\xce\xb1", "\xce\xb2", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\xb8", "\xce\xa9", "\xce\xb4", "\xe2\x88\xae", "\xcf\x86", "\xe2\x88\x88", "\xe2\x88\x8f", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x80\xa2", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xc2\xb3", "\xc2\xaf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a1 => "\xad", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000a5 => "\x9d", 0x000000a7 => "\xdd", 0x000000a8 => "\xb9", 0x000000a9 => "\xbd", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000ae => "\xbe", 0x000000af => "\xff", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b3 => "\xfe", 0x000000b4 => "\xba", 0x000000b5 => "\xe6", 0x000000b6 => "\xbc", 0x000000b7 => "\xfa", 0x000000ba => "\xa7", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c0 => "\xb6", 0x000000c3 => "\xb7", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000d1 => "\xa5", 0x000000d5 => "\xb8", 0x000000d6 => "\x99", 0x000000d8 => "\xb2", 0x000000dc => "\x9a", 0x000000df => "\x9e", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e3 => "\xb0", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ec => "\x8d", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f5 => "\xb1", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f8 => "\xb3", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000ff => "\x98", 0x00000132 => "\xc1", 0x00000133 => "\xc0", 0x00000152 => "\xb5", 0x00000153 => "\xb4", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b2 => "\xe1", 0x000003b4 => "\xeb", 0x000003b8 => "\xe9", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x000005d0 => "\xc2", 0x000005d1 => "\xc3", 0x000005d2 => "\xc4", 0x000005d3 => "\xc5", 0x000005d4 => "\xc6", 0x000005d5 => "\xc7", 0x000005d6 => "\xc8", 0x000005d7 => "\xc9", 0x000005d8 => "\xca", 0x000005d9 => "\xcb", 0x000005da => "\xd9", 0x000005db => "\xcc", 0x000005dc => "\xcd", 0x000005dd => "\xda", 0x000005de => "\xce", 0x000005df => "\xd8", 0x000005e0 => "\xcf", 0x000005e1 => "\xd0", 0x000005e2 => "\xd1", 0x000005e3 => "\xdb", 0x000005e4 => "\xd2", 0x000005e5 => "\xdc", 0x000005e6 => "\xd3", 0x000005e7 => "\xd4", 0x000005e8 => "\xd5", 0x000005e9 => "\xd6", 0x000005ea => "\xd7", 0x00002020 => "\xbb", 0x00002022 => "\xf9", 0x0000207f => "\xfc", 0x000020ac => "\xde", 0x00002122 => "\xbf", 0x00002208 => "\xee", 0x0000220f => "\xef", 0x0000221a => "\xfb", 0x0000221e => "\xdf", 0x0000222e => "\xec", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ATARI_ST_EURO - Conversion routines for ATARI-ST-EURO =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ATARI-ST-EURO. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.1 source: Guido Flohr Eguido.flohr@cantanea.comE alias ATARIST-EURO alias X-ATARIST-EURO alias X-ATARI-ST-EURO Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000A5 | YEN SIGN 9E | 000000DF | LATIN SMALL LETTER SHARP S 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 000000E3 | LATIN SMALL LETTER A WITH TILDE B1 | 000000F5 | LATIN SMALL LETTER O WITH TILDE B2 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B3 | 000000F8 | LATIN SMALL LETTER O WITH STROKE B4 | 00000153 | LATIN SMALL LIGATURE OE B5 | 00000152 | LATIN CAPITAL LIGATURE OE B6 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE B7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE B8 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE B9 | 000000A8 | DIAERESIS BA | 000000B4 | ACUTE ACCENT BB | 00002020 | DAGGER BC | 000000B6 | PILCROW SIGN BD | 000000A9 | COPYRIGHT SIGN BE | 000000AE | REGISTERED SIGN BF | 00002122 | TRADE MARK SIGN C0 | 00000133 | LATIN SMALL LIGATURE IJ C1 | 00000132 | LATIN CAPITAL LIGATURE IJ C2 | 000005D0 | HEBREW LETTER ALEF C3 | 000005D1 | HEBREW LETTER BET C4 | 000005D2 | HEBREW LETTER GIMEL C5 | 000005D3 | HEBREW LETTER DALET C6 | 000005D4 | HEBREW LETTER HE C7 | 000005D5 | HEBREW LETTER VAV C8 | 000005D6 | HEBREW LETTER ZAYIN C9 | 000005D7 | HEBREW LETTER HET CA | 000005D8 | HEBREW LETTER TET CB | 000005D9 | HEBREW LETTER YOD CC | 000005DB | HEBREW LETTER KAF CD | 000005DC | HEBREW LETTER LAMED CE | 000005DE | HEBREW LETTER MEM CF | 000005E0 | HEBREW LETTER NUN D0 | 000005E1 | HEBREW LETTER SAMEKH D1 | 000005E2 | HEBREW LETTER AYIN D2 | 000005E4 | HEBREW LETTER PE D3 | 000005E6 | HEBREW LETTER TSADI D4 | 000005E7 | HEBREW LETTER QOF D5 | 000005E8 | HEBREW LETTER RESH D6 | 000005E9 | HEBREW LETTER SHIN D7 | 000005EA | HEBREW LETTER TAV D8 | 000005DF | HEBREW LETTER FINAL NUN D9 | 000005DA | HEBREW LETTER FINAL KAF DA | 000005DD | HEBREW LETTER FINAL MEM DB | 000005E3 | HEBREW LETTER FINAL PE DC | 000005E5 | HEBREW LETTER FINAL TSADI DD | 000000A7 | SECTION SIGN DE | 000020AC | EURO SIGN DF | 0000221E | INFINITY E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000003B2 | GREEK SMALL LETTER BETA E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 000003B8 | GREEK SMALL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000222E | CONTOUR INTEGRAL ED | 000003C6 | GREEK SMALL LETTER PHI EE | 00002208 | ELEMENT OF EF | 0000220F | N-ARY PRODUCT F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002022 | BULLET FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000000B3 | SUPERSCRIPT THREE FF | 000000AF | MACRON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP10007.pm000644 000765 000024 00000064265 12716422333 021521 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP10007. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP10007; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xd0\x86", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xd0\x82", "\xd1\x92", "\xe2\x89\xa0", "\xd0\x83", "\xd1\x93", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xd1\x96", "\xc2\xb5", "\xd2\x91", "\xd0\x88", "\xd0\x84", "\xd1\x94", "\xd0\x87", "\xd1\x97", "\xd0\x89", "\xd1\x99", "\xd0\x8a", "\xd1\x9a", "\xd1\x98", "\xd0\x85", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xd0\x8b", "\xd1\x9b", "\xd0\x8c", "\xd1\x9c", "\xd1\x95", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x80\x9e", "\xd0\x8e", "\xd1\x9e", "\xd0\x8f", "\xd1\x9f", "\xe2\x84\x96", "\xd0\x81", "\xd1\x91", "\xd1\x8f", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xc2\xa4", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xff", 0x000000a7 => "\xa4", 0x000000a9 => "\xa9", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000bb => "\xc8", 0x000000f7 => "\xd6", 0x00000192 => "\xc4", 0x00000401 => "\xdd", 0x00000402 => "\xab", 0x00000403 => "\xae", 0x00000404 => "\xb8", 0x00000405 => "\xc1", 0x00000406 => "\xa7", 0x00000407 => "\xba", 0x00000408 => "\xb7", 0x00000409 => "\xbc", 0x0000040a => "\xbe", 0x0000040b => "\xcb", 0x0000040c => "\xcd", 0x0000040e => "\xd8", 0x0000040f => "\xda", 0x00000410 => "\x80", 0x00000411 => "\x81", 0x00000412 => "\x82", 0x00000413 => "\x83", 0x00000414 => "\x84", 0x00000415 => "\x85", 0x00000416 => "\x86", 0x00000417 => "\x87", 0x00000418 => "\x88", 0x00000419 => "\x89", 0x0000041a => "\x8a", 0x0000041b => "\x8b", 0x0000041c => "\x8c", 0x0000041d => "\x8d", 0x0000041e => "\x8e", 0x0000041f => "\x8f", 0x00000420 => "\x90", 0x00000421 => "\x91", 0x00000422 => "\x92", 0x00000423 => "\x93", 0x00000424 => "\x94", 0x00000425 => "\x95", 0x00000426 => "\x96", 0x00000427 => "\x97", 0x00000428 => "\x98", 0x00000429 => "\x99", 0x0000042a => "\x9a", 0x0000042b => "\x9b", 0x0000042c => "\x9c", 0x0000042d => "\x9d", 0x0000042e => "\x9e", 0x0000042f => "\x9f", 0x00000430 => "\xe0", 0x00000431 => "\xe1", 0x00000432 => "\xe2", 0x00000433 => "\xe3", 0x00000434 => "\xe4", 0x00000435 => "\xe5", 0x00000436 => "\xe6", 0x00000437 => "\xe7", 0x00000438 => "\xe8", 0x00000439 => "\xe9", 0x0000043a => "\xea", 0x0000043b => "\xeb", 0x0000043c => "\xec", 0x0000043d => "\xed", 0x0000043e => "\xee", 0x0000043f => "\xef", 0x00000440 => "\xf0", 0x00000441 => "\xf1", 0x00000442 => "\xf2", 0x00000443 => "\xf3", 0x00000444 => "\xf4", 0x00000445 => "\xf5", 0x00000446 => "\xf6", 0x00000447 => "\xf7", 0x00000448 => "\xf8", 0x00000449 => "\xf9", 0x0000044a => "\xfa", 0x0000044b => "\xfb", 0x0000044c => "\xfc", 0x0000044d => "\xfd", 0x0000044e => "\xfe", 0x0000044f => "\xdf", 0x00000451 => "\xde", 0x00000452 => "\xac", 0x00000453 => "\xaf", 0x00000454 => "\xb9", 0x00000455 => "\xcf", 0x00000456 => "\xb4", 0x00000457 => "\xbb", 0x00000458 => "\xc0", 0x00000459 => "\xbd", 0x0000045a => "\xbf", 0x0000045b => "\xcc", 0x0000045c => "\xce", 0x0000045e => "\xd9", 0x0000045f => "\xdb", 0x00000491 => "\xb6", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xd7", 0x00002020 => "\xa0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002116 => "\xdc", 0x00002122 => "\xaa", 0x00002206 => "\xc6", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP10007 - Conversion routines for CP10007 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP10007. =head1 COMMENTS The following comments have been extracted from the original charmap: This is the old MacCyrillic which M$ keeps around as CP10007. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000410 | CYRILLIC CAPITAL LETTER A 81 | 00000411 | CYRILLIC CAPITAL LETTER BE 82 | 00000412 | CYRILLIC CAPITAL LETTER VE 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE 84 | 00000414 | CYRILLIC CAPITAL LETTER DE 85 | 00000415 | CYRILLIC CAPITAL LETTER IE 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE 88 | 00000418 | CYRILLIC CAPITAL LETTER I 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 8A | 0000041A | CYRILLIC CAPITAL LETTER KA 8B | 0000041B | CYRILLIC CAPITAL LETTER EL 8C | 0000041C | CYRILLIC CAPITAL LETTER EM 8D | 0000041D | CYRILLIC CAPITAL LETTER EN 8E | 0000041E | CYRILLIC CAPITAL LETTER O 8F | 0000041F | CYRILLIC CAPITAL LETTER PE 90 | 00000420 | CYRILLIC CAPITAL LETTER ER 91 | 00000421 | CYRILLIC CAPITAL LETTER ES 92 | 00000422 | CYRILLIC CAPITAL LETTER TE 93 | 00000423 | CYRILLIC CAPITAL LETTER U 94 | 00000424 | CYRILLIC CAPITAL LETTER EF 95 | 00000425 | CYRILLIC CAPITAL LETTER HA 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 9D | 0000042D | CYRILLIC CAPITAL LETTER E 9E | 0000042E | CYRILLIC CAPITAL LETTER YU 9F | 0000042F | CYRILLIC CAPITAL LETTER YA A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 00000402 | CYRILLIC CAPITAL LETTER DJE AC | 00000452 | CYRILLIC SMALL LETTER DJE AD | 00002260 | NOT EQUAL TO AE | 00000403 | CYRILLIC CAPITAL LETTER GJE AF | 00000453 | CYRILLIC SMALL LETTER GJE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I B5 | 000000B5 | MICRO SIGN B6 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN B7 | 00000408 | CYRILLIC CAPITAL LETTER JE B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE BA | 00000407 | CYRILLIC CAPITAL LETTER YI BB | 00000457 | CYRILLIC SMALL LETTER YI BC | 00000409 | CYRILLIC CAPITAL LETTER LJE BD | 00000459 | CYRILLIC SMALL LETTER LJE BE | 0000040A | CYRILLIC CAPITAL LETTER NJE BF | 0000045A | CYRILLIC SMALL LETTER NJE C0 | 00000458 | CYRILLIC SMALL LETTER JE C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE CC | 0000045B | CYRILLIC SMALL LETTER TSHE CD | 0000040C | CYRILLIC CAPITAL LETTER KJE CE | 0000045C | CYRILLIC SMALL LETTER KJE CF | 00000455 | CYRILLIC SMALL LETTER DZE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE DB | 0000045F | CYRILLIC SMALL LETTER DZHE DC | 00002116 | NUMERO SIGN DD | 00000401 | CYRILLIC CAPITAL LETTER IO DE | 00000451 | CYRILLIC SMALL LETTER IO DF | 0000044F | CYRILLIC SMALL LETTER YA E0 | 00000430 | CYRILLIC SMALL LETTER A E1 | 00000431 | CYRILLIC SMALL LETTER BE E2 | 00000432 | CYRILLIC SMALL LETTER VE E3 | 00000433 | CYRILLIC SMALL LETTER GHE E4 | 00000434 | CYRILLIC SMALL LETTER DE E5 | 00000435 | CYRILLIC SMALL LETTER IE E6 | 00000436 | CYRILLIC SMALL LETTER ZHE E7 | 00000437 | CYRILLIC SMALL LETTER ZE E8 | 00000438 | CYRILLIC SMALL LETTER I E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I EA | 0000043A | CYRILLIC SMALL LETTER KA EB | 0000043B | CYRILLIC SMALL LETTER EL EC | 0000043C | CYRILLIC SMALL LETTER EM ED | 0000043D | CYRILLIC SMALL LETTER EN EE | 0000043E | CYRILLIC SMALL LETTER O EF | 0000043F | CYRILLIC SMALL LETTER PE F0 | 00000440 | CYRILLIC SMALL LETTER ER F1 | 00000441 | CYRILLIC SMALL LETTER ES F2 | 00000442 | CYRILLIC SMALL LETTER TE F3 | 00000443 | CYRILLIC SMALL LETTER U F4 | 00000444 | CYRILLIC SMALL LETTER EF F5 | 00000445 | CYRILLIC SMALL LETTER HA F6 | 00000446 | CYRILLIC SMALL LETTER TSE F7 | 00000447 | CYRILLIC SMALL LETTER CHE F8 | 00000448 | CYRILLIC SMALL LETTER SHA F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN FB | 0000044B | CYRILLIC SMALL LETTER YERU FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN FD | 0000044D | CYRILLIC SMALL LETTER E FE | 0000044E | CYRILLIC SMALL LETTER YU FF | 000000A4 | CURRENCY SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1250.pm000644 000765 000024 00000065055 12716422333 021437 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1250. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1250; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xe2\x80\x9a", "\xef\xbf\xbd", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xef\xbf\xbd", "\xe2\x80\xb0", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x9a", "\xc5\xa4", "\xc5\xbd", "\xc5\xb9", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xef\xbf\xbd", "\xe2\x84\xa2", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x9b", "\xc5\xa5", "\xc5\xbe", "\xc5\xba", "\xc2\xa0", "\xcb\x87", "\xcb\x98", "\xc5\x81", "\xc2\xa4", "\xc4\x84", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc5\x9e", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc5\xbb", "\xc2\xb0", "\xc2\xb1", "\xcb\x9b", "\xc5\x82", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc4\x85", "\xc5\x9f", "\xc2\xbb", "\xc4\xbd", "\xcb\x9d", "\xc4\xbe", "\xc5\xbc", "\xc5\x94", "\xc3\x81", "\xc3\x82", "\xc4\x82", "\xc3\x84", "\xc4\xb9", "\xc4\x86", "\xc3\x87", "\xc4\x8c", "\xc3\x89", "\xc4\x98", "\xc3\x8b", "\xc4\x9a", "\xc3\x8d", "\xc3\x8e", "\xc4\x8e", "\xc4\x90", "\xc5\x83", "\xc5\x87", "\xc3\x93", "\xc3\x94", "\xc5\x90", "\xc3\x96", "\xc3\x97", "\xc5\x98", "\xc5\xae", "\xc3\x9a", "\xc5\xb0", "\xc3\x9c", "\xc3\x9d", "\xc5\xa2", "\xc3\x9f", "\xc5\x95", "\xc3\xa1", "\xc3\xa2", "\xc4\x83", "\xc3\xa4", "\xc4\xba", "\xc4\x87", "\xc3\xa7", "\xc4\x8d", "\xc3\xa9", "\xc4\x99", "\xc3\xab", "\xc4\x9b", "\xc3\xad", "\xc3\xae", "\xc4\x8f", "\xc4\x91", "\xc5\x84", "\xc5\x88", "\xc3\xb3", "\xc3\xb4", "\xc5\x91", "\xc3\xb6", "\xc3\xb7", "\xc5\x99", "\xc5\xaf", "\xc3\xba", "\xc5\xb1", "\xc3\xbc", "\xc3\xbd", "\xc5\xa3", "\xcb\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a4 => "\xa4", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000bb => "\xbb", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c4 => "\xc4", 0x000000c7 => "\xc7", 0x000000c9 => "\xc9", 0x000000cb => "\xcb", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000da => "\xda", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000df => "\xdf", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e4 => "\xe4", 0x000000e7 => "\xe7", 0x000000e9 => "\xe9", 0x000000eb => "\xeb", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000fa => "\xfa", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x00000102 => "\xc3", 0x00000103 => "\xe3", 0x00000104 => "\xa5", 0x00000105 => "\xb9", 0x00000106 => "\xc6", 0x00000107 => "\xe6", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x0000010e => "\xcf", 0x0000010f => "\xef", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000118 => "\xca", 0x00000119 => "\xea", 0x0000011a => "\xcc", 0x0000011b => "\xec", 0x00000139 => "\xc5", 0x0000013a => "\xe5", 0x0000013d => "\xbc", 0x0000013e => "\xbe", 0x00000141 => "\xa3", 0x00000142 => "\xb3", 0x00000143 => "\xd1", 0x00000144 => "\xf1", 0x00000147 => "\xd2", 0x00000148 => "\xf2", 0x00000150 => "\xd5", 0x00000151 => "\xf5", 0x00000154 => "\xc0", 0x00000155 => "\xe0", 0x00000158 => "\xd8", 0x00000159 => "\xf8", 0x0000015a => "\x8c", 0x0000015b => "\x9c", 0x0000015e => "\xaa", 0x0000015f => "\xba", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000162 => "\xde", 0x00000163 => "\xfe", 0x00000164 => "\x8d", 0x00000165 => "\x9d", 0x0000016e => "\xd9", 0x0000016f => "\xf9", 0x00000170 => "\xdb", 0x00000171 => "\xfb", 0x00000179 => "\x8f", 0x0000017a => "\x9f", 0x0000017b => "\xaf", 0x0000017c => "\xbf", 0x0000017d => "\x8e", 0x0000017e => "\x9e", 0x000002c7 => "\xa1", 0x000002d8 => "\xa2", 0x000002d9 => "\xff", 0x000002db => "\xb2", 0x000002dd => "\xbd", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1250 - Conversion routines for CP1250 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1250. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: UNICODE 1.0 alias MS-EE Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 89 | 00002030 | PER MILLE SIGN 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE 8D | 00000164 | LATIN CAPITAL LETTER T WITH CARON 8E | 0000017D | LATIN CAPITAL LETTER Z WITH CARON 8F | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 99 | 00002122 | TRADE MARK SIGN 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 0000015B | LATIN SMALL LETTER S WITH ACUTE 9D | 00000165 | LATIN SMALL LETTER T WITH CARON 9E | 0000017E | LATIN SMALL LETTER Z WITH CARON 9F | 0000017A | LATIN SMALL LETTER Z WITH ACUTE A0 | 000000A0 | NO-BREAK SPACE A1 | 000002C7 | CARON (Mandarin Chinese third tone) A2 | 000002D8 | BREVE A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE A4 | 000000A4 | CURRENCY SIGN A5 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000002DB | OGONEK B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 00000105 | LATIN SMALL LETTER A WITH OGONEK BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 0000013D | LATIN CAPITAL LETTER L WITH CARON BD | 000002DD | DOUBLE ACUTE ACCENT BE | 0000013E | LATIN SMALL LETTER L WITH CARON BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE C0 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 0000011A | LATIN CAPITAL LETTER E WITH CARON CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 0000010E | LATIN CAPITAL LETTER D WITH CARON D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE D2 | 00000147 | LATIN CAPITAL LETTER N WITH CARON D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 00000158 | LATIN CAPITAL LETTER R WITH CARON D9 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 00000155 | LATIN SMALL LETTER R WITH ACUTE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 0000013A | LATIN SMALL LETTER L WITH ACUTE E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 0000011B | LATIN SMALL LETTER E WITH CARON ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 0000010F | LATIN SMALL LETTER D WITH CARON F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE F2 | 00000148 | LATIN SMALL LETTER N WITH CARON F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 00000159 | LATIN SMALL LETTER R WITH CARON F9 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1251.pm000644 000765 000024 00000064763 12716422333 021445 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1251. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1251; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd0\x82", "\xd0\x83", "\xe2\x80\x9a", "\xd1\x93", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xe2\x82\xac", "\xe2\x80\xb0", "\xd0\x89", "\xe2\x80\xb9", "\xd0\x8a", "\xd0\x8c", "\xd0\x8b", "\xd0\x8f", "\xd1\x92", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xef\xbf\xbd", "\xe2\x84\xa2", "\xd1\x99", "\xe2\x80\xba", "\xd1\x9a", "\xd1\x9c", "\xd1\x9b", "\xd1\x9f", "\xc2\xa0", "\xd0\x8e", "\xd1\x9e", "\xd0\x88", "\xc2\xa4", "\xd2\x90", "\xc2\xa6", "\xc2\xa7", "\xd0\x81", "\xc2\xa9", "\xd0\x84", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xd0\x87", "\xc2\xb0", "\xc2\xb1", "\xd0\x86", "\xd1\x96", "\xd2\x91", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xd1\x91", "\xe2\x84\x96", "\xd1\x94", "\xc2\xbb", "\xd1\x98", "\xd0\x85", "\xd1\x95", "\xd1\x97", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xd1\x8f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a4 => "\xa4", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000bb => "\xbb", 0x00000401 => "\xa8", 0x00000402 => "\x80", 0x00000403 => "\x81", 0x00000404 => "\xaa", 0x00000405 => "\xbd", 0x00000406 => "\xb2", 0x00000407 => "\xaf", 0x00000408 => "\xa3", 0x00000409 => "\x8a", 0x0000040a => "\x8c", 0x0000040b => "\x8e", 0x0000040c => "\x8d", 0x0000040e => "\xa1", 0x0000040f => "\x8f", 0x00000410 => "\xc0", 0x00000411 => "\xc1", 0x00000412 => "\xc2", 0x00000413 => "\xc3", 0x00000414 => "\xc4", 0x00000415 => "\xc5", 0x00000416 => "\xc6", 0x00000417 => "\xc7", 0x00000418 => "\xc8", 0x00000419 => "\xc9", 0x0000041a => "\xca", 0x0000041b => "\xcb", 0x0000041c => "\xcc", 0x0000041d => "\xcd", 0x0000041e => "\xce", 0x0000041f => "\xcf", 0x00000420 => "\xd0", 0x00000421 => "\xd1", 0x00000422 => "\xd2", 0x00000423 => "\xd3", 0x00000424 => "\xd4", 0x00000425 => "\xd5", 0x00000426 => "\xd6", 0x00000427 => "\xd7", 0x00000428 => "\xd8", 0x00000429 => "\xd9", 0x0000042a => "\xda", 0x0000042b => "\xdb", 0x0000042c => "\xdc", 0x0000042d => "\xdd", 0x0000042e => "\xde", 0x0000042f => "\xdf", 0x00000430 => "\xe0", 0x00000431 => "\xe1", 0x00000432 => "\xe2", 0x00000433 => "\xe3", 0x00000434 => "\xe4", 0x00000435 => "\xe5", 0x00000436 => "\xe6", 0x00000437 => "\xe7", 0x00000438 => "\xe8", 0x00000439 => "\xe9", 0x0000043a => "\xea", 0x0000043b => "\xeb", 0x0000043c => "\xec", 0x0000043d => "\xed", 0x0000043e => "\xee", 0x0000043f => "\xef", 0x00000440 => "\xf0", 0x00000441 => "\xf1", 0x00000442 => "\xf2", 0x00000443 => "\xf3", 0x00000444 => "\xf4", 0x00000445 => "\xf5", 0x00000446 => "\xf6", 0x00000447 => "\xf7", 0x00000448 => "\xf8", 0x00000449 => "\xf9", 0x0000044a => "\xfa", 0x0000044b => "\xfb", 0x0000044c => "\xfc", 0x0000044d => "\xfd", 0x0000044e => "\xfe", 0x0000044f => "\xff", 0x00000451 => "\xb8", 0x00000452 => "\x90", 0x00000453 => "\x83", 0x00000454 => "\xba", 0x00000455 => "\xbe", 0x00000456 => "\xb3", 0x00000457 => "\xbf", 0x00000458 => "\xbc", 0x00000459 => "\x9a", 0x0000045a => "\x9c", 0x0000045b => "\x9e", 0x0000045c => "\x9d", 0x0000045e => "\xa2", 0x0000045f => "\x9f", 0x00000490 => "\xa5", 0x00000491 => "\xb4", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x88", 0x00002116 => "\xb9", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1251 - Conversion routines for CP1251 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1251. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: UNICODE 1.0 alias MS-CYRL Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian) 81 | 00000403 | CYRILLIC CAPITAL LETTER GJE 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000453 | CYRILLIC SMALL LETTER GJE 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000020AC | EURO SIGN 89 | 00002030 | PER MILLE SIGN 8A | 00000409 | CYRILLIC CAPITAL LETTER LJE 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 0000040A | CYRILLIC CAPITAL LETTER NJE 8D | 0000040C | CYRILLIC CAPITAL LETTER KJE 8E | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) 8F | 0000040F | CYRILLIC CAPITAL LETTER DZHE 90 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian) 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 99 | 00002122 | TRADE MARK SIGN 9A | 00000459 | CYRILLIC SMALL LETTER LJE 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 0000045A | CYRILLIC SMALL LETTER NJE 9D | 0000045C | CYRILLIC SMALL LETTER KJE 9E | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian) 9F | 0000045F | CYRILLIC SMALL LETTER DZHE A0 | 000000A0 | NO-BREAK SPACE A1 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) A2 | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian) A3 | 00000408 | CYRILLIC CAPITAL LETTER JE A4 | 000000A4 | CURRENCY SIGN A5 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 00000401 | CYRILLIC CAPITAL LETTER IO A9 | 000000A9 | COPYRIGHT SIGN AA | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian) B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I B3 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I B4 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 00000451 | CYRILLIC SMALL LETTER IO B9 | 00002116 | NUMERO SIGN BA | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 00000458 | CYRILLIC SMALL LETTER JE BD | 00000405 | CYRILLIC CAPITAL LETTER DZE BE | 00000455 | CYRILLIC SMALL LETTER DZE BF | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian) C0 | 00000410 | CYRILLIC CAPITAL LETTER A C1 | 00000411 | CYRILLIC CAPITAL LETTER BE C2 | 00000412 | CYRILLIC CAPITAL LETTER VE C3 | 00000413 | CYRILLIC CAPITAL LETTER GHE C4 | 00000414 | CYRILLIC CAPITAL LETTER DE C5 | 00000415 | CYRILLIC CAPITAL LETTER IE C6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE C7 | 00000417 | CYRILLIC CAPITAL LETTER ZE C8 | 00000418 | CYRILLIC CAPITAL LETTER I C9 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I CA | 0000041A | CYRILLIC CAPITAL LETTER KA CB | 0000041B | CYRILLIC CAPITAL LETTER EL CC | 0000041C | CYRILLIC CAPITAL LETTER EM CD | 0000041D | CYRILLIC CAPITAL LETTER EN CE | 0000041E | CYRILLIC CAPITAL LETTER O CF | 0000041F | CYRILLIC CAPITAL LETTER PE D0 | 00000420 | CYRILLIC CAPITAL LETTER ER D1 | 00000421 | CYRILLIC CAPITAL LETTER ES D2 | 00000422 | CYRILLIC CAPITAL LETTER TE D3 | 00000423 | CYRILLIC CAPITAL LETTER U D4 | 00000424 | CYRILLIC CAPITAL LETTER EF D5 | 00000425 | CYRILLIC CAPITAL LETTER HA D6 | 00000426 | CYRILLIC CAPITAL LETTER TSE D7 | 00000427 | CYRILLIC CAPITAL LETTER CHE D8 | 00000428 | CYRILLIC CAPITAL LETTER SHA D9 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA DA | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN DB | 0000042B | CYRILLIC CAPITAL LETTER YERU DC | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN DD | 0000042D | CYRILLIC CAPITAL LETTER E DE | 0000042E | CYRILLIC CAPITAL LETTER YU DF | 0000042F | CYRILLIC CAPITAL LETTER YA E0 | 00000430 | CYRILLIC SMALL LETTER A E1 | 00000431 | CYRILLIC SMALL LETTER BE E2 | 00000432 | CYRILLIC SMALL LETTER VE E3 | 00000433 | CYRILLIC SMALL LETTER GHE E4 | 00000434 | CYRILLIC SMALL LETTER DE E5 | 00000435 | CYRILLIC SMALL LETTER IE E6 | 00000436 | CYRILLIC SMALL LETTER ZHE E7 | 00000437 | CYRILLIC SMALL LETTER ZE E8 | 00000438 | CYRILLIC SMALL LETTER I E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I EA | 0000043A | CYRILLIC SMALL LETTER KA EB | 0000043B | CYRILLIC SMALL LETTER EL EC | 0000043C | CYRILLIC SMALL LETTER EM ED | 0000043D | CYRILLIC SMALL LETTER EN EE | 0000043E | CYRILLIC SMALL LETTER O EF | 0000043F | CYRILLIC SMALL LETTER PE F0 | 00000440 | CYRILLIC SMALL LETTER ER F1 | 00000441 | CYRILLIC SMALL LETTER ES F2 | 00000442 | CYRILLIC SMALL LETTER TE F3 | 00000443 | CYRILLIC SMALL LETTER U F4 | 00000444 | CYRILLIC SMALL LETTER EF F5 | 00000445 | CYRILLIC SMALL LETTER HA F6 | 00000446 | CYRILLIC SMALL LETTER TSE F7 | 00000447 | CYRILLIC SMALL LETTER CHE F8 | 00000448 | CYRILLIC SMALL LETTER SHA F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN FB | 0000044B | CYRILLIC SMALL LETTER YERU FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN FD | 0000044D | CYRILLIC SMALL LETTER E FE | 0000044E | CYRILLIC SMALL LETTER YU FF | 0000044F | CYRILLIC SMALL LETTER YA =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1252.pm000644 000765 000024 00000064564 12716422333 021445 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1252. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1252; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0x017d, 0xfffd, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0x017e, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xe2\x80\x9a", "\xc6\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xcb\x86", "\xe2\x80\xb0", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x92", "\xef\xbf\xbd", "\xc5\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xcb\x9c", "\xe2\x84\xa2", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x93", "\xef\xbf\xbd", "\xc5\xbe", "\xc5\xb8", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000bf => "\xbf", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d0 => "\xd0", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000de => "\xde", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x000000ff => "\xff", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000178 => "\x9f", 0x0000017d => "\x8e", 0x0000017e => "\x9e", 0x00000192 => "\x83", 0x000002c6 => "\x88", 0x000002dc => "\x98", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1252 - Conversion routines for CP1252 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1252. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: UNICODE 1.0 alias MS-ANSI Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT 89 | 00002030 | PER MILLE SIGN 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 8E | 0000017D | LATIN CAPITAL LETTER Z WITH CARON 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 000002DC | SMALL TILDE 99 | 00002122 | TRADE MARK SIGN 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9E | 0000017E | LATIN SMALL LETTER Z WITH CARON 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic) FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1253.pm000644 000765 000024 00000062443 12716422333 021440 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1253. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1253; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xe2\x80\x9a", "\xc6\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xef\xbf\xbd", "\xe2\x80\xb0", "\xef\xbf\xbd", "\xe2\x80\xb9", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xef\xbf\xbd", "\xe2\x84\xa2", "\xef\xbf\xbd", "\xe2\x80\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa0", "\xce\x85", "\xce\x86", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xef\xbf\xbd", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xe2\x80\x95", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xce\x84", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xce\x88", "\xce\x89", "\xce\x8a", "\xc2\xbb", "\xce\x8c", "\xc2\xbd", "\xce\x8e", "\xce\x8f", "\xce\x90", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xef\xbf\xbd", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xce\xaa", "\xce\xab", "\xce\xac", "\xce\xad", "\xce\xae", "\xce\xaf", "\xce\xb0", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xcf\x8a", "\xcf\x8b", "\xcf\x8c", "\xcf\x8d", "\xcf\x8e", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000bb => "\xbb", 0x000000bd => "\xbd", 0x00000192 => "\x83", 0x00000384 => "\xb4", 0x00000385 => "\xa1", 0x00000386 => "\xa2", 0x00000388 => "\xb8", 0x00000389 => "\xb9", 0x0000038a => "\xba", 0x0000038c => "\xbc", 0x0000038e => "\xbe", 0x0000038f => "\xbf", 0x00000390 => "\xc0", 0x00000391 => "\xc1", 0x00000392 => "\xc2", 0x00000393 => "\xc3", 0x00000394 => "\xc4", 0x00000395 => "\xc5", 0x00000396 => "\xc6", 0x00000397 => "\xc7", 0x00000398 => "\xc8", 0x00000399 => "\xc9", 0x0000039a => "\xca", 0x0000039b => "\xcb", 0x0000039c => "\xcc", 0x0000039d => "\xcd", 0x0000039e => "\xce", 0x0000039f => "\xcf", 0x000003a0 => "\xd0", 0x000003a1 => "\xd1", 0x000003a3 => "\xd3", 0x000003a4 => "\xd4", 0x000003a5 => "\xd5", 0x000003a6 => "\xd6", 0x000003a7 => "\xd7", 0x000003a8 => "\xd8", 0x000003a9 => "\xd9", 0x000003aa => "\xda", 0x000003ab => "\xdb", 0x000003ac => "\xdc", 0x000003ad => "\xdd", 0x000003ae => "\xde", 0x000003af => "\xdf", 0x000003b0 => "\xe0", 0x000003b1 => "\xe1", 0x000003b2 => "\xe2", 0x000003b3 => "\xe3", 0x000003b4 => "\xe4", 0x000003b5 => "\xe5", 0x000003b6 => "\xe6", 0x000003b7 => "\xe7", 0x000003b8 => "\xe8", 0x000003b9 => "\xe9", 0x000003ba => "\xea", 0x000003bb => "\xeb", 0x000003bc => "\xec", 0x000003bd => "\xed", 0x000003be => "\xee", 0x000003bf => "\xef", 0x000003c0 => "\xf0", 0x000003c1 => "\xf1", 0x000003c2 => "\xf2", 0x000003c3 => "\xf3", 0x000003c4 => "\xf4", 0x000003c5 => "\xf5", 0x000003c6 => "\xf6", 0x000003c7 => "\xf7", 0x000003c8 => "\xf8", 0x000003c9 => "\xf9", 0x000003ca => "\xfa", 0x000003cb => "\xfb", 0x000003cc => "\xfc", 0x000003cd => "\xfd", 0x000003ce => "\xfe", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002015 => "\xaf", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1253 - Conversion routines for CP1253 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1253. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: UNICODE 1.0 alias MS-GREEK Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 89 | 00002030 | PER MILLE SIGN 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 99 | 00002122 | TRADE MARK SIGN 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK A0 | 000000A0 | NO-BREAK SPACE A1 | 00000385 | GREEK DIALYTIKA TONOS A2 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 00002015 | HORIZONTAL BAR B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 00000384 | GREEK TONOS B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS B9 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS BA | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS BD | 000000BD | VULGAR FRACTION ONE HALF BE | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS BF | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS C0 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS C1 | 00000391 | GREEK CAPITAL LETTER ALPHA C2 | 00000392 | GREEK CAPITAL LETTER BETA C3 | 00000393 | GREEK CAPITAL LETTER GAMMA C4 | 00000394 | GREEK CAPITAL LETTER DELTA C5 | 00000395 | GREEK CAPITAL LETTER EPSILON C6 | 00000396 | GREEK CAPITAL LETTER ZETA C7 | 00000397 | GREEK CAPITAL LETTER ETA C8 | 00000398 | GREEK CAPITAL LETTER THETA C9 | 00000399 | GREEK CAPITAL LETTER IOTA CA | 0000039A | GREEK CAPITAL LETTER KAPPA CB | 0000039B | GREEK CAPITAL LETTER LAMDA CC | 0000039C | GREEK CAPITAL LETTER MU CD | 0000039D | GREEK CAPITAL LETTER NU CE | 0000039E | GREEK CAPITAL LETTER XI CF | 0000039F | GREEK CAPITAL LETTER OMICRON D0 | 000003A0 | GREEK CAPITAL LETTER PI D1 | 000003A1 | GREEK CAPITAL LETTER RHO D3 | 000003A3 | GREEK CAPITAL LETTER SIGMA D4 | 000003A4 | GREEK CAPITAL LETTER TAU D5 | 000003A5 | GREEK CAPITAL LETTER UPSILON D6 | 000003A6 | GREEK CAPITAL LETTER PHI D7 | 000003A7 | GREEK CAPITAL LETTER CHI D8 | 000003A8 | GREEK CAPITAL LETTER PSI D9 | 000003A9 | GREEK CAPITAL LETTER OMEGA DA | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA DB | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA DC | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS DD | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS DE | 000003AE | GREEK SMALL LETTER ETA WITH TONOS DF | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS E0 | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS E1 | 000003B1 | GREEK SMALL LETTER ALPHA E2 | 000003B2 | GREEK SMALL LETTER BETA E3 | 000003B3 | GREEK SMALL LETTER GAMMA E4 | 000003B4 | GREEK SMALL LETTER DELTA E5 | 000003B5 | GREEK SMALL LETTER EPSILON E6 | 000003B6 | GREEK SMALL LETTER ZETA E7 | 000003B7 | GREEK SMALL LETTER ETA E8 | 000003B8 | GREEK SMALL LETTER THETA E9 | 000003B9 | GREEK SMALL LETTER IOTA EA | 000003BA | GREEK SMALL LETTER KAPPA EB | 000003BB | GREEK SMALL LETTER LAMDA EC | 000003BC | GREEK SMALL LETTER MU ED | 000003BD | GREEK SMALL LETTER NU EE | 000003BE | GREEK SMALL LETTER XI EF | 000003BF | GREEK SMALL LETTER OMICRON F0 | 000003C0 | GREEK SMALL LETTER PI F1 | 000003C1 | GREEK SMALL LETTER RHO F2 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA F3 | 000003C3 | GREEK SMALL LETTER SIGMA F4 | 000003C4 | GREEK SMALL LETTER TAU F5 | 000003C5 | GREEK SMALL LETTER UPSILON F6 | 000003C6 | GREEK SMALL LETTER PHI F7 | 000003C7 | GREEK SMALL LETTER CHI F8 | 000003C8 | GREEK SMALL LETTER PSI F9 | 000003C9 | GREEK SMALL LETTER OMEGA FA | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA FC | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS FD | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS FE | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1254.pm000644 000765 000024 00000064321 12716422333 021436 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1254. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1254; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xe2\x80\x9a", "\xc6\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xcb\x86", "\xe2\x80\xb0", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x92", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xcb\x9c", "\xe2\x84\xa2", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x93", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc5\xb8", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc4\x9e", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc4\xb0", "\xc5\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc4\x9f", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc4\xb1", "\xc5\x9f", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000bf => "\xbf", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000ff => "\xff", 0x0000011e => "\xd0", 0x0000011f => "\xf0", 0x00000130 => "\xdd", 0x00000131 => "\xfd", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x0000015e => "\xde", 0x0000015f => "\xfe", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000178 => "\x9f", 0x00000192 => "\x83", 0x000002c6 => "\x88", 0x000002dc => "\x98", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1254 - Conversion routines for CP1254 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1254. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: UNICODE 1.0 alias MS-TURK Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT 89 | 00002030 | PER MILLE SIGN 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 000002DC | SMALL TILDE 99 | 00002122 | TRADE MARK SIGN 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 0000011E | LATIN CAPITAL LETTER G WITH BREVE D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE DE | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER E WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 0000011F | LATIN SMALL LETTER G WITH BREVE F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 00000131 | LATIN SMALL LETTER DOTLESS I FE | 0000015F | LATIN SMALL LETTER S WITH CEDILLA FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1256.pm000644 000765 000024 00000063624 12716422333 021445 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1256. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1256; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba, 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f, 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7, 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643, 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef, 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7, 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xd9\xbe", "\xe2\x80\x9a", "\xc6\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xcb\x86", "\xe2\x80\xb0", "\xd9\xb9", "\xe2\x80\xb9", "\xc5\x92", "\xda\x86", "\xda\x98", "\xda\x88", "\xda\xaf", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xda\xa9", "\xe2\x84\xa2", "\xda\x91", "\xe2\x80\xba", "\xc5\x93", "\xe2\x80\x8c", "\xe2\x80\x8d", "\xda\xba", "\xc2\xa0", "\xd8\x8c", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xda\xbe", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xd8\x9b", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xd8\x9f", "\xdb\x81", "\xd8\xa1", "\xd8\xa2", "\xd8\xa3", "\xd8\xa4", "\xd8\xa5", "\xd8\xa6", "\xd8\xa7", "\xd8\xa8", "\xd8\xa9", "\xd8\xaa", "\xd8\xab", "\xd8\xac", "\xd8\xad", "\xd8\xae", "\xd8\xaf", "\xd8\xb0", "\xd8\xb1", "\xd8\xb2", "\xd8\xb3", "\xd8\xb4", "\xd8\xb5", "\xd8\xb6", "\xc3\x97", "\xd8\xb7", "\xd8\xb8", "\xd8\xb9", "\xd8\xba", "\xd9\x80", "\xd9\x81", "\xd9\x82", "\xd9\x83", "\xc3\xa0", "\xd9\x84", "\xc3\xa2", "\xd9\x85", "\xd9\x86", "\xd9\x87", "\xd9\x88", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xd9\x89", "\xd9\x8a", "\xc3\xae", "\xc3\xaf", "\xd9\x8b", "\xd9\x8c", "\xd9\x8d", "\xd9\x8e", "\xc3\xb4", "\xd9\x8f", "\xd9\x90", "\xc3\xb7", "\xd9\x91", "\xc3\xb9", "\xd9\x92", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\x8e", "\xe2\x80\x8f", "\xdb\x92", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000d7 => "\xd7", 0x000000e0 => "\xe0", 0x000000e2 => "\xe2", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f4 => "\xf4", 0x000000f7 => "\xf7", 0x000000f9 => "\xf9", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x00000192 => "\x83", 0x000002c6 => "\x88", 0x0000060c => "\xa1", 0x0000061b => "\xba", 0x0000061f => "\xbf", 0x00000621 => "\xc1", 0x00000622 => "\xc2", 0x00000623 => "\xc3", 0x00000624 => "\xc4", 0x00000625 => "\xc5", 0x00000626 => "\xc6", 0x00000627 => "\xc7", 0x00000628 => "\xc8", 0x00000629 => "\xc9", 0x0000062a => "\xca", 0x0000062b => "\xcb", 0x0000062c => "\xcc", 0x0000062d => "\xcd", 0x0000062e => "\xce", 0x0000062f => "\xcf", 0x00000630 => "\xd0", 0x00000631 => "\xd1", 0x00000632 => "\xd2", 0x00000633 => "\xd3", 0x00000634 => "\xd4", 0x00000635 => "\xd5", 0x00000636 => "\xd6", 0x00000637 => "\xd8", 0x00000638 => "\xd9", 0x00000639 => "\xda", 0x0000063a => "\xdb", 0x00000640 => "\xdc", 0x00000641 => "\xdd", 0x00000642 => "\xde", 0x00000643 => "\xdf", 0x00000644 => "\xe1", 0x00000645 => "\xe3", 0x00000646 => "\xe4", 0x00000647 => "\xe5", 0x00000648 => "\xe6", 0x00000649 => "\xec", 0x0000064a => "\xed", 0x0000064b => "\xf0", 0x0000064c => "\xf1", 0x0000064d => "\xf2", 0x0000064e => "\xf3", 0x0000064f => "\xf5", 0x00000650 => "\xf6", 0x00000651 => "\xf8", 0x00000652 => "\xfa", 0x00000679 => "\x8a", 0x0000067e => "\x81", 0x00000686 => "\x8d", 0x00000688 => "\x8f", 0x00000691 => "\x9a", 0x00000698 => "\x8e", 0x000006a9 => "\x98", 0x000006af => "\x90", 0x000006ba => "\x9f", 0x000006be => "\xaa", 0x000006c1 => "\xc0", 0x000006d2 => "\xff", 0x0000200c => "\x9d", 0x0000200d => "\x9e", 0x0000200e => "\xfd", 0x0000200f => "\xfe", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1256 - Conversion routines for CP1256 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1256. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: UNICODE 1.0 alias MS-ARAB Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 81 | 0000067E | ARABIC LETTER PEH 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT 89 | 00002030 | PER MILLE SIGN 8A | 00000679 | ARABIC LETTER TTEH 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 8D | 00000686 | ARABIC LETTER TCHEH 8E | 00000698 | ARABIC LETTER JEH 8F | 00000688 | ARABIC LETTER DDAL 90 | 000006AF | ARABIC LETTER GAF 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 000006A9 | ARABIC LETTER KEHEH 99 | 00002122 | TRADE MARK SIGN 9A | 00000691 | ARABIC LETTER RREH 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9D | 0000200C | ZERO WIDTH NON-JOINER 9E | 0000200D | ZERO WIDTH JOINER 9F | 000006BA | ARABIC LETTER NOON A0 | 000000A0 | NO-BREAK SPACE A1 | 0000060C | ARABIC COMMA A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000006BE | ARABIC LETTER HEH DOACHASHMEE AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 0000061B | ARABIC SEMICOLON BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 0000061F | ARABIC QUESTION MARK C0 | 000006C1 | ARABIC LETTER HEH GOAL C1 | 00000621 | ARABIC LETTER HAMZA C2 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE C3 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE C4 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE C5 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW C6 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE C7 | 00000627 | ARABIC LETTER ALEF C8 | 00000628 | ARABIC LETTER BEH C9 | 00000629 | ARABIC LETTER TEH MARBUTA CA | 0000062A | ARABIC LETTER TEH CB | 0000062B | ARABIC LETTER THEH CC | 0000062C | ARABIC LETTER JEEM CD | 0000062D | ARABIC LETTER HAH CE | 0000062E | ARABIC LETTER KHAH CF | 0000062F | ARABIC LETTER DAL D0 | 00000630 | ARABIC LETTER THAL D1 | 00000631 | ARABIC LETTER REH D2 | 00000632 | ARABIC LETTER ZAIN D3 | 00000633 | ARABIC LETTER SEEN D4 | 00000634 | ARABIC LETTER SHEEN D5 | 00000635 | ARABIC LETTER SAD D6 | 00000636 | ARABIC LETTER DAD D7 | 000000D7 | MULTIPLICATION SIGN D8 | 00000637 | ARABIC LETTER TAH D9 | 00000638 | ARABIC LETTER ZAH DA | 00000639 | ARABIC LETTER AIN DB | 0000063A | ARABIC LETTER GHAIN DC | 00000640 | ARABIC TATWEEL DD | 00000641 | ARABIC LETTER FEH DE | 00000642 | ARABIC LETTER QAF DF | 00000643 | ARABIC LETTER KAF E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 00000644 | ARABIC LETTER LAM E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 00000645 | ARABIC LETTER MEEM E4 | 00000646 | ARABIC LETTER NOON E5 | 00000647 | ARABIC LETTER HEH E6 | 00000648 | ARABIC LETTER WAW E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 00000649 | ARABIC LETTER ALEF MAKSURA ED | 0000064A | ARABIC LETTER YEH EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 0000064B | ARABIC FATHATAN F1 | 0000064C | ARABIC DAMMATAN F2 | 0000064D | ARABIC KASRATAN F3 | 0000064E | ARABIC FATHA F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 0000064F | ARABIC DAMMA F6 | 00000650 | ARABIC KASRA F7 | 000000F7 | DIVISION SIGN F8 | 00000651 | ARABIC SHADDA F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 00000652 | ARABIC SUKUN FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 0000200E | LEFT-TO-RIGHT MARK FE | 0000200F | RIGHT-TO-LEFT MARK FF | 000006D2 | ARABIC LETTER YEH BARREE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CP1257.pm000644 000765 000024 00000063556 12716422333 021452 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CP1257. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CP1257; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0x00a8, 0x02c7, 0x00b8, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0x00af, 0x02db, 0xfffd, 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0xfffd, 0x00a6, 0x00a7, 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xe2\x80\x9a", "\xef\xbf\xbd", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xef\xbf\xbd", "\xe2\x80\xb0", "\xef\xbf\xbd", "\xe2\x80\xb9", "\xef\xbf\xbd", "\xc2\xa8", "\xcb\x87", "\xc2\xb8", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xef\xbf\xbd", "\xe2\x84\xa2", "\xef\xbf\xbd", "\xe2\x80\xba", "\xef\xbf\xbd", "\xc2\xaf", "\xcb\x9b", "\xef\xbf\xbd", "\xc2\xa0", "\xef\xbf\xbd", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xef\xbf\xbd", "\xc2\xa6", "\xc2\xa7", "\xc3\x98", "\xc2\xa9", "\xc5\x96", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc3\x86", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc3\xb8", "\xc2\xb9", "\xc5\x97", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc3\xa6", "\xc4\x84", "\xc4\xae", "\xc4\x80", "\xc4\x86", "\xc3\x84", "\xc3\x85", "\xc4\x98", "\xc4\x92", "\xc4\x8c", "\xc3\x89", "\xc5\xb9", "\xc4\x96", "\xc4\xa2", "\xc4\xb6", "\xc4\xaa", "\xc4\xbb", "\xc5\xa0", "\xc5\x83", "\xc5\x85", "\xc3\x93", "\xc5\x8c", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc5\xb2", "\xc5\x81", "\xc5\x9a", "\xc5\xaa", "\xc3\x9c", "\xc5\xbb", "\xc5\xbd", "\xc3\x9f", "\xc4\x85", "\xc4\xaf", "\xc4\x81", "\xc4\x87", "\xc3\xa4", "\xc3\xa5", "\xc4\x99", "\xc4\x93", "\xc4\x8d", "\xc3\xa9", "\xc5\xba", "\xc4\x97", "\xc4\xa3", "\xc4\xb7", "\xc4\xab", "\xc4\xbc", "\xc5\xa1", "\xc5\x84", "\xc5\x86", "\xc3\xb3", "\xc5\x8d", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc5\xb3", "\xc5\x82", "\xc5\x9b", "\xc5\xab", "\xc3\xbc", "\xc5\xbc", "\xc5\xbe", "\xcb\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\x8d", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\x9d", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\x8f", 0x000000b9 => "\xb9", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xaf", 0x000000c9 => "\xc9", 0x000000d3 => "\xd3", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xa8", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xbf", 0x000000e9 => "\xe9", 0x000000f3 => "\xf3", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xb8", 0x000000fc => "\xfc", 0x00000100 => "\xc2", 0x00000101 => "\xe2", 0x00000104 => "\xc0", 0x00000105 => "\xe0", 0x00000106 => "\xc3", 0x00000107 => "\xe3", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x00000112 => "\xc7", 0x00000113 => "\xe7", 0x00000116 => "\xcb", 0x00000117 => "\xeb", 0x00000118 => "\xc6", 0x00000119 => "\xe6", 0x00000122 => "\xcc", 0x00000123 => "\xec", 0x0000012a => "\xce", 0x0000012b => "\xee", 0x0000012e => "\xc1", 0x0000012f => "\xe1", 0x00000136 => "\xcd", 0x00000137 => "\xed", 0x0000013b => "\xcf", 0x0000013c => "\xef", 0x00000141 => "\xd9", 0x00000142 => "\xf9", 0x00000143 => "\xd1", 0x00000144 => "\xf1", 0x00000145 => "\xd2", 0x00000146 => "\xf2", 0x0000014c => "\xd4", 0x0000014d => "\xf4", 0x00000156 => "\xaa", 0x00000157 => "\xba", 0x0000015a => "\xda", 0x0000015b => "\xfa", 0x00000160 => "\xd0", 0x00000161 => "\xf0", 0x0000016a => "\xdb", 0x0000016b => "\xfb", 0x00000172 => "\xd8", 0x00000173 => "\xf8", 0x00000179 => "\xca", 0x0000017a => "\xea", 0x0000017b => "\xdd", 0x0000017c => "\xfd", 0x0000017d => "\xde", 0x0000017e => "\xfe", 0x000002c7 => "\x8e", 0x000002d9 => "\xff", 0x000002db => "\x9e", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CP1257 - Conversion routines for CP1257 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CP1257. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: CEN/TC304 N283 alias WINBALTRIM Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 89 | 00002030 | PER MILLE SIGN 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8D | 000000A8 | DIAERESIS 8E | 000002C7 | CARON (Mandarin Chinese third tone) 8F | 000000B8 | CEDILLA 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 99 | 00002122 | TRADE MARK SIGN 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9D | 000000AF | MACRON 9E | 000002DB | OGONEK A0 | 000000A0 | NO-BREAK SPACE A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE A9 | 000000A9 | COPYRIGHT SIGN AA | 00000156 | LATIN CAPITAL LETTER R WITH CEDILLA AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000C6 | LATIN CAPITAL LETTER AE B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE B9 | 000000B9 | SUPERSCRIPT ONE BA | 00000157 | LATIN SMALL LETTER R WITH CEDILLA BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000E6 | LATIN SMALL LETTER AE C0 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK C1 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK C2 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON C3 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK C7 | 00000112 | LATIN CAPITAL LETTER E WITH MACRON C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE CB | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE CC | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA CD | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA CE | 0000012A | LATIN CAPITAL LETTER I WITH MACRON CF | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA D0 | 00000160 | LATIN CAPITAL LETTER S WITH CARON D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE D2 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK D9 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE DA | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE DB | 0000016A | LATIN CAPITAL LETTER U WITH MACRON DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE DE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 00000105 | LATIN SMALL LETTER A WITH OGONEK E1 | 0000012F | LATIN SMALL LETTER I WITH OGONEK E2 | 00000101 | LATIN SMALL LETTER A WITH MACRON E3 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 00000119 | LATIN SMALL LETTER E WITH OGONEK E7 | 00000113 | LATIN SMALL LETTER E WITH MACRON E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 0000017A | LATIN SMALL LETTER Z WITH ACUTE EB | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE EC | 00000123 | LATIN SMALL LETTER G WITH CEDILLA ED | 00000137 | LATIN SMALL LETTER K WITH CEDILLA EE | 0000012B | LATIN SMALL LETTER I WITH MACRON EF | 0000013C | LATIN SMALL LETTER L WITH CEDILLA F0 | 00000161 | LATIN SMALL LETTER S WITH CARON F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE F2 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 0000014D | LATIN SMALL LETTER O WITH MACRON F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 00000173 | LATIN SMALL LETTER U WITH OGONEK F9 | 00000142 | LATIN SMALL LETTER L WITH STROKE FA | 0000015B | LATIN SMALL LETTER S WITH ACUTE FB | 0000016B | LATIN SMALL LETTER U WITH MACRON FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE FE | 0000017E | LATIN SMALL LETTER Z WITH CARON FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CSN_369103.pm000644 000765 000024 00000066011 12716422333 022066 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CSN_369103. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CSN_369103; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0104, 0x02d8, 0x0141, 0x0024, 0x013d, 0x015a, 0x00a7, 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\xc2\xa4", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc4\x84", "\xcb\x98", "\xc5\x81", "\x24", "\xc4\xbd", "\xc5\x9a", "\xc2\xa7", "\xc2\xa8", "\xc5\xa0", "\xc5\x9e", "\xc5\xa4", "\xc5\xb9", "\xc2\xad", "\xc5\xbd", "\xc5\xbb", "\xc2\xb0", "\xc4\x85", "\xcb\x9b", "\xc5\x82", "\xc2\xb4", "\xc4\xbe", "\xc5\x9b", "\xcb\x87", "\xc2\xb8", "\xc5\xa1", "\xc5\x9f", "\xc5\xa5", "\xc5\xba", "\xcb\x9d", "\xc5\xbe", "\xc5\xbc", "\xc5\x94", "\xc3\x81", "\xc3\x82", "\xc4\x82", "\xc3\x84", "\xc4\xb9", "\xc4\x86", "\xc3\x87", "\xc4\x8c", "\xc3\x89", "\xc4\x98", "\xc3\x8b", "\xc4\x9a", "\xc3\x8d", "\xc3\x8e", "\xc4\x8e", "\xc4\x90", "\xc5\x83", "\xc5\x87", "\xc3\x93", "\xc3\x94", "\xc5\x90", "\xc3\x96", "\xc3\x97", "\xc5\x98", "\xc5\xae", "\xc3\x9a", "\xc5\xb0", "\xc3\x9c", "\xc3\x9d", "\xc5\xa2", "\xc3\x9f", "\xc5\x95", "\xc3\xa1", "\xc3\xa2", "\xc4\x83", "\xc3\xa4", "\xc4\xba", "\xc4\x87", "\xc3\xa7", "\xc4\x8d", "\xc3\xa9", "\xc4\x99", "\xc3\xab", "\xc4\x9b", "\xc3\xad", "\xc3\xae", "\xc4\x8f", "\xc4\x91", "\xc5\x84", "\xc5\x88", "\xc3\xb3", "\xc3\xb4", "\xc5\x91", "\xc3\xb6", "\xc3\xb7", "\xc5\x99", "\xc5\xaf", "\xc3\xba", "\xc5\xb1", "\xc3\xbc", "\xc3\xbd", "\xc5\xa3", "\xcb\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\xa4", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a4 => "\x24", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000ad => "\xad", 0x000000b0 => "\xb0", 0x000000b4 => "\xb4", 0x000000b8 => "\xb8", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c4 => "\xc4", 0x000000c7 => "\xc7", 0x000000c9 => "\xc9", 0x000000cb => "\xcb", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000da => "\xda", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000df => "\xdf", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e4 => "\xe4", 0x000000e7 => "\xe7", 0x000000e9 => "\xe9", 0x000000eb => "\xeb", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000fa => "\xfa", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x00000102 => "\xc3", 0x00000103 => "\xe3", 0x00000104 => "\xa1", 0x00000105 => "\xb1", 0x00000106 => "\xc6", 0x00000107 => "\xe6", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x0000010e => "\xcf", 0x0000010f => "\xef", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000118 => "\xca", 0x00000119 => "\xea", 0x0000011a => "\xcc", 0x0000011b => "\xec", 0x00000139 => "\xc5", 0x0000013a => "\xe5", 0x0000013d => "\xa5", 0x0000013e => "\xb5", 0x00000141 => "\xa3", 0x00000142 => "\xb3", 0x00000143 => "\xd1", 0x00000144 => "\xf1", 0x00000147 => "\xd2", 0x00000148 => "\xf2", 0x00000150 => "\xd5", 0x00000151 => "\xf5", 0x00000154 => "\xc0", 0x00000155 => "\xe0", 0x00000158 => "\xd8", 0x00000159 => "\xf8", 0x0000015a => "\xa6", 0x0000015b => "\xb6", 0x0000015e => "\xaa", 0x0000015f => "\xba", 0x00000160 => "\xa9", 0x00000161 => "\xb9", 0x00000162 => "\xde", 0x00000163 => "\xfe", 0x00000164 => "\xab", 0x00000165 => "\xbb", 0x0000016e => "\xd9", 0x0000016f => "\xf9", 0x00000170 => "\xdb", 0x00000171 => "\xfb", 0x00000179 => "\xac", 0x0000017a => "\xbc", 0x0000017b => "\xaf", 0x0000017c => "\xbf", 0x0000017d => "\xae", 0x0000017e => "\xbe", 0x000002c7 => "\xb7", 0x000002d8 => "\xa2", 0x000002d9 => "\xff", 0x000002db => "\xb2", 0x000002dd => "\xbd", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CSN_369103 - Conversion routines for CSN_369103 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CSN_369103. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: ECMA registry alias ISO-IR-139 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 000000A4 | CURRENCY SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A2 | 000002D8 | BREVE A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE A4 | 00000024 | DOLLAR SIGN A5 | 0000013D | LATIN CAPITAL LETTER L WITH CARON A6 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA AB | 00000164 | LATIN CAPITAL LETTER T WITH CARON AC | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE AD | 000000AD | SOFT HYPHEN AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B0 | 000000B0 | DEGREE SIGN B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK B2 | 000002DB | OGONEK B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE B4 | 000000B4 | ACUTE ACCENT B5 | 0000013E | LATIN SMALL LETTER L WITH CARON B6 | 0000015B | LATIN SMALL LETTER S WITH ACUTE B7 | 000002C7 | CARON (Mandarin Chinese third tone) B8 | 000000B8 | CEDILLA B9 | 00000161 | LATIN SMALL LETTER S WITH CARON BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA BB | 00000165 | LATIN SMALL LETTER T WITH CARON BC | 0000017A | LATIN SMALL LETTER Z WITH ACUTE BD | 000002DD | DOUBLE ACUTE ACCENT BE | 0000017E | LATIN SMALL LETTER Z WITH CARON BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE C0 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 0000011A | LATIN CAPITAL LETTER E WITH CARON CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 0000010E | LATIN CAPITAL LETTER D WITH CARON D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE D2 | 00000147 | LATIN CAPITAL LETTER N WITH CARON D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 00000158 | LATIN CAPITAL LETTER R WITH CARON D9 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 00000155 | LATIN SMALL LETTER R WITH ACUTE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 0000013A | LATIN SMALL LETTER L WITH ACUTE E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 0000011B | LATIN SMALL LETTER E WITH CARON ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 0000010F | LATIN SMALL LETTER D WITH CARON F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE F2 | 00000148 | LATIN SMALL LETTER N WITH CARON F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 00000159 | LATIN SMALL LETTER R WITH CARON F9 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/CWI.pm000644 000765 000024 00000066244 12716422333 021250 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for CWI. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::CWI; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00cd, 0x00c4, 0x00c1, 0x00c9, 0x00e6, 0x00c6, 0x0151, 0x00f6, 0x00d3, 0x0171, 0x00da, 0x0170, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0xe01f, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x0150, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x2205, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x2218, 0x00b7, 0x2022, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc3\x8d", "\xc3\x84", "\xc3\x81", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc5\x91", "\xc3\xb6", "\xc3\x93", "\xc5\xb1", "\xc3\x9a", "\xc5\xb0", "\xc3\x96", "\xc3\x9c", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xe2\x82\xa7", "\xee\x80\x9f", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc5\x90", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xce\xb2", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xce\xbc", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xe2\x88\x85", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xe2\x88\x98", "\xc2\xb7", "\xe2\x80\xa2", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000a5 => "\x9d", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b7 => "\xf9", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c1 => "\x8f", 0x000000c4 => "\x8e", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000cd => "\x8d", 0x000000d1 => "\xa5", 0x000000d3 => "\x95", 0x000000d6 => "\x99", 0x000000da => "\x97", 0x000000dc => "\x9a", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f1 => "\xa4", 0x000000f3 => "\xa2", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000fa => "\xa3", 0x000000fc => "\x81", 0x00000150 => "\xa7", 0x00000151 => "\x93", 0x00000170 => "\x98", 0x00000171 => "\x96", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b2 => "\xe1", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003bc => "\xe6", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x00002022 => "\xfa", 0x0000207f => "\xfc", 0x000020a7 => "\x9e", 0x00002205 => "\xed", 0x00002218 => "\xf8", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", 0x0000e01f => "\x9f", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::CWI - Conversion routines for CWI =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for CWI. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29 alias CWI-2 alias CP-HU Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE 96 | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE 97 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE 98 | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000A5 | YEN SIGN 9E | 000020A7 | PESETA SIGN 9F | 0000E01F | HUNGARIAN FLORINTH (CWI_9F) A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000003B2 | GREEK SMALL LETTER BETA E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000003BC | GREEK SMALL LETTER MU E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 00002205 | EMPTY SET EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 00002218 | RING OPERATOR F9 | 000000B7 | MIDDLE DOT FA | 00002022 | BULLET FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/DEC_MCS.pm000644 000765 000024 00000063455 12716422333 021724 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for DEC-MCS. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::DEC_MCS; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0xfffd, 0x00a1, 0x00a2, 0x00a3, 0xfffd, 0x00a5, 0xfffd, 0x00a7, 0x00a4, 0x00a9, 0x00aa, 0x00ab, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0xfffd, 0x00b5, 0x00b6, 0x00b7, 0xfffd, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0xfffd, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0152, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0178, 0xfffd, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0153, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00ff, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xef\xbf\xbd", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xef\xbf\xbd", "\xc2\xa5", "\xef\xbf\xbd", "\xc2\xa7", "\xc2\xa4", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xef\xbf\xbd", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xef\xbf\xbd", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xef\xbf\xbd", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xef\xbf\xbd", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc5\x92", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc5\xb8", "\xef\xbf\xbd", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xef\xbf\xbd", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc5\x93", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbf", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa8", 0x000000a5 => "\xa5", 0x000000a7 => "\xa7", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000bf => "\xbf", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000ff => "\xfd", 0x00000152 => "\xd7", 0x00000153 => "\xf7", 0x00000178 => "\xdd", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::DEC_MCS - Conversion routines for DEC_MCS =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for DEC-MCS. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. alias DEC Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A5 | 000000A5 | YEN SIGN A7 | 000000A7 | SECTION SIGN A8 | 000000A4 | CURRENCY SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 00000152 | LATIN CAPITAL LIGATURE OE D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 00000153 | LATIN SMALL LIGATURE OE F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_AT_DE.pm000644 000765 000024 00000050265 12716422333 022467 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-AT-DE. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_AT_DE; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00d6, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x84", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x9c", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\xc2\xa7", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x9f", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa4", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xbc", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x96", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a7 => "\x7c", 0x000000c4 => "\x4a", 0x000000d6 => "\xe0", 0x000000dc => "\x5a", 0x000000df => "\xa1", 0x000000e4 => "\xc0", 0x000000f6 => "\x6a", 0x000000fc => "\xd0", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_AT_DE - Conversion routines for EBCDIC_AT_DE =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-AT-DE. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 000000A7 | SECTION SIGN 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000DF | LATIN SMALL LETTER SHARP S (German) A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_AT_DE_A.pm000644 000765 000024 00000047657 12716422333 022742 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-AT-DE-A. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_AT_DE_A; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f6, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00fc, 0x00dc, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00df, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x00e4, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb6", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xbc", "\xc3\x9c", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x9f", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x3a", "\xc3\x84", "\xc3\x96", "\x27", "\x3d", "\xc3\xa4", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007c => "\x4f", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000ac => "\x5f", 0x000000c4 => "\x7b", 0x000000d6 => "\x7c", 0x000000dc => "\x5b", 0x000000df => "\x6a", 0x000000e4 => "\x7f", 0x000000f6 => "\x4a", 0x000000fc => "\x5a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_AT_DE_A - Conversion routines for EBCDIC_AT_DE_A =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-AT-DE-A. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 5B | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000DF | LATIN SMALL LETTER SHARP S (German) 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 7A | 0000003A | COLON 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_CA_FR.pm000644 000765 000024 00000053334 12716422333 022465 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-CA-FR. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_CA_FR; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0x00e2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e7, 0xfffd, 0x00e0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0x00ea, 0x00eb, 0xfffd, 0xfffd, 0x00ee, 0x00ef, 0xfffd, 0xfffd, 0x00b4, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0xfffd, 0x00c0, 0xfffd, 0xfffd, 0xfffd, 0x00c7, 0xfffd, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0x00c9, 0x00ca, 0x00cb, 0xfffd, 0x00ce, 0x00cf, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0x00f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0x00fb, 0x00fc, 0xfffd, 0xfffd, 0xfffd, 0x00b8, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0x00d4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0x00db, 0x00dc, 0x00d9, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xc3\xa2", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa7", "\xef\xbf\xbd", "\xc3\xa0", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xc3\xaa", "\xc3\xab", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xae", "\xc3\xaf", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb4", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xef\xbf\xbd", "\xc3\x80", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x87", "\xef\xbf\xbd", "\xc3\xb9", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xef\xbf\xbd", "\xc3\x8e", "\xc3\x8f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa9", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xc3\xb4", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa8", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xc3\xbb", "\xc3\xbc", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb8", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xc3\x94", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a8 => "\xa1", 0x000000b4 => "\x5a", 0x000000b8 => "\xe0", 0x000000c0 => "\x64", 0x000000c2 => "\x62", 0x000000c7 => "\x68", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000ce => "\x75", 0x000000cf => "\x76", 0x000000d4 => "\xeb", 0x000000d9 => "\xfd", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000e0 => "\x4a", 0x000000e2 => "\x42", 0x000000e7 => "\x48", 0x000000e8 => "\xd0", 0x000000e9 => "\xc0", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f4 => "\xcb", 0x000000f9 => "\x6a", 0x000000fb => "\xdb", 0x000000fc => "\xdc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_CA_FR - Conversion routines for EBCDIC_CA_FR =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-CA-FR. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 4A | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 5A | 000000B4 | ACUTE ACCENT 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 75 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 76 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS E0 | 000000B8 | CEDILLA E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_DK_NO.pm000644 000765 000024 00000050266 12716422333 022506 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-DK-NO. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_DK_NO; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x23", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa4", "\xc3\x85", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb8", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\xc3\x86", "\xc3\x98", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xbc", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa6", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa5", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x4a", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005c => "\xe0", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a4 => "\x5a", 0x000000c5 => "\x5b", 0x000000c6 => "\x7b", 0x000000d8 => "\x7c", 0x000000e5 => "\xd0", 0x000000e6 => "\xc0", 0x000000f8 => "\x6a", 0x000000fc => "\xa1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_DK_NO - Conversion routines for EBCDIC_DK_NO =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-DK-NO. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 00000023 | NUMBER SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 000000A4 | CURRENCY SIGN 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F8 | LATIN SMALL LETTER O WITH STROKE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000C6 | LATIN CAPITAL LETTER AE 7C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E6 | LATIN SMALL LETTER AE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_DK_NO_A.pm000644 000765 000024 00000047566 12716422333 022757 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-DK-NO-A. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_DK_NO_A; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f8, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e5, 0x00c5, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x00e6, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb8", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa5", "\xc3\x85", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x3a", "\xc3\x86", "\xc3\x98", "\x27", "\x3d", "\xc3\xa6", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007c => "\x4f", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x000000c5 => "\x5b", 0x000000c6 => "\x7b", 0x000000d8 => "\x7c", 0x000000e5 => "\x5a", 0x000000e6 => "\x7f", 0x000000f8 => "\x4a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_DK_NO_A - Conversion routines for EBCDIC_DK_NO_A =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-DK-NO-A. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000F8 | LATIN SMALL LETTER O WITH STROKE 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 7A | 0000003A | COLON 7B | 000000C6 | LATIN CAPITAL LETTER AE 7C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 000000E6 | LATIN SMALL LETTER AE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_ES.pm000644 000765 000024 00000050047 12716422333 022120 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-ES. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_ES; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0021, 0x20a7, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x21", "\xe2\x82\xa7", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb1", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\xc3\x91", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005c => "\xe0", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a2 => "\x4a", 0x000000a8 => "\xa1", 0x000000ac => "\x5f", 0x000000d1 => "\x7b", 0x000000f1 => "\x6a", 0x000020a7 => "\x5b", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_ES - Conversion routines for EBCDIC_ES =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-ES. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 00000021 | EXCLAMATION MARK 5B | 000020A7 | PESETA SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F1 | LATIN SMALL LETTER N WITH TILDE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_ES_A.pm000644 000765 000024 00000047434 12716422333 022366 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-ES-A. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_ES_A; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0021, 0x20a7, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x00f1, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x21", "\xe2\x82\xa7", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x3a", "\xc3\x91", "\x40", "\x27", "\x3d", "\xc3\xb1", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007c => "\x4f", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a2 => "\x4a", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x000000d1 => "\x7b", 0x000000f1 => "\x7f", 0x000020a7 => "\x5b", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_ES_A - Conversion routines for EBCDIC_ES_A =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-ES-A. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 00000021 | EXCLAMATION MARK 5B | 000020A7 | PESETA SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 7A | 0000003A | COLON 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 000000F1 | LATIN SMALL LETTER N WITH TILDE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_ES_S.pm000644 000765 000024 00000050051 12716422333 022375 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-ES-S. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_ES_S; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x21", "\x24", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb1", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\xc3\x91", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005c => "\xe0", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a2 => "\x4a", 0x000000a8 => "\xa1", 0x000000ac => "\x5f", 0x000000d1 => "\x7b", 0x000000f1 => "\x6a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_ES_S - Conversion routines for EBCDIC_ES_S =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-ES-S. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 00000021 | EXCLAMATION MARK 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F1 | LATIN SMALL LETTER N WITH TILDE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_FI_SE.pm000644 000765 000024 00000050356 12716422333 022501 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-FI-SE. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_FI_SE; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00c9, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa7", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa4", "\xc3\x85", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa9", "\x3a", "\xc3\x84", "\xc3\x96", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xbc", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa4", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa5", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x89", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a4 => "\x5a", 0x000000a7 => "\x4a", 0x000000c4 => "\x7b", 0x000000c5 => "\x5b", 0x000000c9 => "\xe0", 0x000000d6 => "\x7c", 0x000000e4 => "\xc0", 0x000000e5 => "\xd0", 0x000000e9 => "\x79", 0x000000f6 => "\x6a", 0x000000fc => "\xa1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_FI_SE - Conversion routines for EBCDIC_FI_SE =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-FI-SE. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000A7 | SECTION SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 000000A4 | CURRENCY SIGN 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 7A | 0000003A | COLON 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_FI_SE_A.pm000644 000765 000024 00000047630 12716422333 022742 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-FI-SE-A. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_FI_SE_A; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f6, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e5, 0x00c5, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x00e4, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb6", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa5", "\xc3\x85", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x3a", "\xc3\x84", "\xc3\x96", "\x27", "\x3d", "\xc3\xa4", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007c => "\x4f", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x000000c4 => "\x7b", 0x000000c5 => "\x5b", 0x000000d6 => "\x7c", 0x000000e4 => "\x7f", 0x000000e5 => "\x5a", 0x000000f6 => "\x4a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_FI_SE_A - Conversion routines for EBCDIC_FI_SE_A =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-FI-SE-A. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 7A | 0000003A | COLON 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_FR.pm000644 000765 000024 00000050137 12716422333 022120 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-FR. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_FR; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e7, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb0", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa7", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb9", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\xc2\xa3", "\xc3\xa0", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa9", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa8", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa7", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\x7b", 0x000000a7 => "\x5a", 0x000000a8 => "\xa1", 0x000000b0 => "\x4a", 0x000000e0 => "\x7c", 0x000000e7 => "\xe0", 0x000000e8 => "\xd0", 0x000000e9 => "\xc0", 0x000000f9 => "\x6a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_FR - Conversion routines for EBCDIC_FR =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-FR. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000B0 | DEGREE SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 000000A7 | SECTION SIGN 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000A3 | POUND SIGN 7C | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_IS_FRISS.pm000644 000765 000024 00000046335 12716422333 023077 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-IS-FRISS. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_IS_FRISS; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x003c, 0x002e, 0x00c1, 0x0028, 0x002b, 0x0021, 0x00d0, 0x00e9, 0xfffd, 0xfffd, 0xfffd, 0x00ed, 0xfffd, 0xfffd, 0xfffd, 0x0024, 0x0025, 0x00c9, 0x002a, 0x0029, 0x003b, 0x0026, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0023, 0x2018, 0x002c, 0x00de, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00cd, 0xfffd, 0xfffd, 0x007c, 0x00f0, 0x003a, 0x00c6, 0x00d6, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0x00dd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b0, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0x005b, 0x00fd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005d, 0x00a8, 0xfffd, 0xfffd, 0x00fe, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f3, 0xfffd, 0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00fa, 0xfffd, 0x00b4, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00d3, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00da, 0x007f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa1", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x3c", "\x2e", "\xc3\x81", "\x28", "\x2b", "\x21", "\xc3\x90", "\xc3\xa9", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xad", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x24", "\x25", "\xc3\x89", "\x2a", "\x29", "\x3b", "\x26", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x23", "\xe2\x80\x98", "\x2c", "\xc3\x9e", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x8d", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7c", "\xc3\xb0", "\x3a", "\xc3\x86", "\xc3\x96", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x9d", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb0", "\xc3\xb6", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5b", "\xc3\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5d", "\xc2\xa8", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xbe", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb3", "\xef\xbf\xbd", "\xc3\xa6", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xba", "\xef\xbf\xbd", "\xc2\xb4", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x93", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x9a", "\x7f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x69", 0x00000024 => "\x59", 0x00000025 => "\x5a", 0x00000026 => "\x5f", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4a", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xac", 0x0000005d => "\xbc", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007c => "\x78", 0x0000007f => "\xff", 0x000000a8 => "\xbd", 0x000000b0 => "\xa0", 0x000000b4 => "\xe0", 0x000000c1 => "\x4c", 0x000000c6 => "\x7b", 0x000000c9 => "\x5b", 0x000000cd => "\x75", 0x000000d0 => "\x50", 0x000000d3 => "\xee", 0x000000d6 => "\x7c", 0x000000da => "\xfe", 0x000000dd => "\x8d", 0x000000de => "\x6c", 0x000000e1 => "\x45", 0x000000e6 => "\xd0", 0x000000e9 => "\x51", 0x000000ed => "\x55", 0x000000f0 => "\x79", 0x000000f3 => "\xce", 0x000000f6 => "\xa1", 0x000000fa => "\xde", 0x000000fd => "\xad", 0x000000fe => "\xc0", 0x00002018 => "\x6a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_IS_FRISS - Conversion routines for EBCDIC_IS_FRISS =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-IS-FRISS. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982 alias FRISS Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 40 | 00000020 | SPACE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 4A | 0000003C | LESS-THAN SIGN 4B | 0000002E | FULL STOP 4C | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 59 | 00000024 | DOLLAR SIGN 5A | 00000025 | PERCENT SIGN 5B | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 00000026 | AMPERSAND 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 69 | 00000023 | NUMBER SIGN 6A | 00002018 | LEFT SINGLE QUOTATION MARK 6B | 0000002C | COMMA 6C | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 78 | 0000007C | VERTICAL LINE 79 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 7A | 0000003A | COLON 7B | 000000C6 | LATIN CAPITAL LETTER AE 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8D | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A0 | 000000B0 | DEGREE SIGN A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AC | 0000005B | LEFT SQUARE BRACKET AD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE BC | 0000005D | RIGHT SQUARE BRACKET BD | 000000A8 | DIAERESIS C0 | 000000FE | LATIN SMALL LETTER THORN (Icelandic) C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE D0 | 000000E6 | LATIN SMALL LETTER AE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE E0 | 000000B4 | ACUTE ACCENT E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_IT.pm000644 000765 000024 00000050214 12716422333 022121 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-IT. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_IT; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e7, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb0", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa9", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb2", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb9", "\x3a", "\xc2\xa3", "\xc2\xa7", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xac", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa0", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa8", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa7", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\x7b", 0x000000a7 => "\x7c", 0x000000b0 => "\x4a", 0x000000e0 => "\xc0", 0x000000e7 => "\xe0", 0x000000e8 => "\xd0", 0x000000e9 => "\x5a", 0x000000ec => "\xa1", 0x000000f2 => "\x6a", 0x000000f9 => "\x79", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_IT - Conversion routines for EBCDIC_IT =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-IT. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000B0 | DEGREE SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 7A | 0000003A | COLON 7B | 000000A3 | POUND SIGN 7C | 000000A7 | SECTION SIGN 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000EC | LATIN SMALL LETTER I WITH GRAVE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_PT.pm000644 000765 000024 00000047636 12716422333 022146 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-PT. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_PT; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f5, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x00c3, 0x00d5, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e3, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b4, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00c7, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb5", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\xc3\x83", "\xc3\x95", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa7", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa3", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb4", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x87", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000b4 => "\xd0", 0x000000c3 => "\x7b", 0x000000c7 => "\xe0", 0x000000d5 => "\x7c", 0x000000e3 => "\xc0", 0x000000e7 => "\xa1", 0x000000f5 => "\x6a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_PT - Conversion routines for EBCDIC_PT =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-PT. =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F5 | LATIN SMALL LETTER O WITH TILDE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 7C | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E3 | LATIN SMALL LETTER A WITH TILDE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000B4 | ACUTE ACCENT D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_UK.pm000644 000765 000024 00000047764 12716422333 022144 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-UK. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_UK; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x203e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x24", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x21", "\xc2\xa3", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\xbe", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x4a", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005c => "\xe0", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\x5b", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x0000203e => "\xa1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_UK - Conversion routines for EBCDIC_UK =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-UK. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 00000024 | DOLLAR SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 00000021 | EXCLAMATION MARK 5B | 000000A3 | POUND SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 0000203E | OVERLINE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/EBCDIC_US.pm000644 000765 000024 00000047750 12716422333 022147 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for EBCDIC-US. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::EBCDIC_US; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x21", "\x24", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005c => "\xe0", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a2 => "\x4a", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::EBCDIC_US - Conversion routines for EBCDIC_US =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for EBCDIC-US. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 00000021 | EXCLAMATION MARK 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ECMA_CYRILLIC.pm000644 000765 000024 00000065255 12716422333 022626 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ECMA-CYRILLIC. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ECMA_CYRILLIC; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00ad, 0x045e, 0x045f, 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00a4, 0x040e, 0x040f, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xd1\x92", "\xd1\x93", "\xd1\x91", "\xd1\x94", "\xd1\x95", "\xd1\x96", "\xd1\x97", "\xd1\x98", "\xd1\x99", "\xd1\x9a", "\xd1\x9b", "\xd1\x9c", "\xc2\xad", "\xd1\x9e", "\xd1\x9f", "\xe2\x84\x96", "\xd0\x82", "\xd0\x83", "\xd0\x81", "\xd0\x84", "\xd0\x85", "\xd0\x86", "\xd0\x87", "\xd0\x88", "\xd0\x89", "\xd0\x8a", "\xd0\x8b", "\xd0\x8c", "\xc2\xa4", "\xd0\x8e", "\xd0\x8f", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xd0\xaa", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a4 => "\xbd", 0x000000ad => "\xad", 0x00000401 => "\xb3", 0x00000402 => "\xb1", 0x00000403 => "\xb2", 0x00000404 => "\xb4", 0x00000405 => "\xb5", 0x00000406 => "\xb6", 0x00000407 => "\xb7", 0x00000408 => "\xb8", 0x00000409 => "\xb9", 0x0000040a => "\xba", 0x0000040b => "\xbb", 0x0000040c => "\xbc", 0x0000040e => "\xbe", 0x0000040f => "\xbf", 0x00000410 => "\xe1", 0x00000411 => "\xe2", 0x00000412 => "\xf7", 0x00000413 => "\xe7", 0x00000414 => "\xe4", 0x00000415 => "\xe5", 0x00000416 => "\xf6", 0x00000417 => "\xfa", 0x00000418 => "\xe9", 0x00000419 => "\xea", 0x0000041a => "\xeb", 0x0000041b => "\xec", 0x0000041c => "\xed", 0x0000041d => "\xee", 0x0000041e => "\xef", 0x0000041f => "\xf0", 0x00000420 => "\xf2", 0x00000421 => "\xf3", 0x00000422 => "\xf4", 0x00000423 => "\xf5", 0x00000424 => "\xe6", 0x00000425 => "\xe8", 0x00000426 => "\xe3", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042a => "\xff", 0x0000042b => "\xf9", 0x0000042c => "\xf8", 0x0000042d => "\xfc", 0x0000042e => "\xe0", 0x0000042f => "\xf1", 0x00000430 => "\xc1", 0x00000431 => "\xc2", 0x00000432 => "\xd7", 0x00000433 => "\xc7", 0x00000434 => "\xc4", 0x00000435 => "\xc5", 0x00000436 => "\xd6", 0x00000437 => "\xda", 0x00000438 => "\xc9", 0x00000439 => "\xca", 0x0000043a => "\xcb", 0x0000043b => "\xcc", 0x0000043c => "\xcd", 0x0000043d => "\xce", 0x0000043e => "\xcf", 0x0000043f => "\xd0", 0x00000440 => "\xd2", 0x00000441 => "\xd3", 0x00000442 => "\xd4", 0x00000443 => "\xd5", 0x00000444 => "\xc6", 0x00000445 => "\xc8", 0x00000446 => "\xc3", 0x00000447 => "\xde", 0x00000448 => "\xdb", 0x00000449 => "\xdd", 0x0000044a => "\xdf", 0x0000044b => "\xd9", 0x0000044c => "\xd8", 0x0000044d => "\xdc", 0x0000044e => "\xc0", 0x0000044f => "\xd1", 0x00000451 => "\xa3", 0x00000452 => "\xa1", 0x00000453 => "\xa2", 0x00000454 => "\xa4", 0x00000455 => "\xa5", 0x00000456 => "\xa6", 0x00000457 => "\xa7", 0x00000458 => "\xa8", 0x00000459 => "\xa9", 0x0000045a => "\xaa", 0x0000045b => "\xab", 0x0000045c => "\xac", 0x0000045e => "\xae", 0x0000045f => "\xaf", 0x00002116 => "\xb0", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ECMA_CYRILLIC - Conversion routines for ECMA_CYRILLIC =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ECMA-CYRILLIC. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-111 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian) A2 | 00000453 | CYRILLIC SMALL LETTER GJE A3 | 00000451 | CYRILLIC SMALL LETTER IO A4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE A5 | 00000455 | CYRILLIC SMALL LETTER DZE A6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I A7 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian) A8 | 00000458 | CYRILLIC SMALL LETTER JE A9 | 00000459 | CYRILLIC SMALL LETTER LJE AA | 0000045A | CYRILLIC SMALL LETTER NJE AB | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian) AC | 0000045C | CYRILLIC SMALL LETTER KJE AD | 000000AD | SOFT HYPHEN AE | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian) AF | 0000045F | CYRILLIC SMALL LETTER DZHE B0 | 00002116 | NUMERO SIGN B1 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian) B2 | 00000403 | CYRILLIC CAPITAL LETTER GJE B3 | 00000401 | CYRILLIC CAPITAL LETTER IO B4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B5 | 00000405 | CYRILLIC CAPITAL LETTER DZE B6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I B7 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian) B8 | 00000408 | CYRILLIC CAPITAL LETTER JE B9 | 00000409 | CYRILLIC CAPITAL LETTER LJE BA | 0000040A | CYRILLIC CAPITAL LETTER NJE BB | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) BC | 0000040C | CYRILLIC CAPITAL LETTER KJE BD | 000000A4 | CURRENCY SIGN BE | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) BF | 0000040F | CYRILLIC CAPITAL LETTER DZHE C0 | 0000044E | CYRILLIC SMALL LETTER YU C1 | 00000430 | CYRILLIC SMALL LETTER A C2 | 00000431 | CYRILLIC SMALL LETTER BE C3 | 00000446 | CYRILLIC SMALL LETTER TSE C4 | 00000434 | CYRILLIC SMALL LETTER DE C5 | 00000435 | CYRILLIC SMALL LETTER IE C6 | 00000444 | CYRILLIC SMALL LETTER EF C7 | 00000433 | CYRILLIC SMALL LETTER GHE C8 | 00000445 | CYRILLIC SMALL LETTER HA C9 | 00000438 | CYRILLIC SMALL LETTER I CA | 00000439 | CYRILLIC SMALL LETTER SHORT I CB | 0000043A | CYRILLIC SMALL LETTER KA CC | 0000043B | CYRILLIC SMALL LETTER EL CD | 0000043C | CYRILLIC SMALL LETTER EM CE | 0000043D | CYRILLIC SMALL LETTER EN CF | 0000043E | CYRILLIC SMALL LETTER O D0 | 0000043F | CYRILLIC SMALL LETTER PE D1 | 0000044F | CYRILLIC SMALL LETTER YA D2 | 00000440 | CYRILLIC SMALL LETTER ER D3 | 00000441 | CYRILLIC SMALL LETTER ES D4 | 00000442 | CYRILLIC SMALL LETTER TE D5 | 00000443 | CYRILLIC SMALL LETTER U D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000432 | CYRILLIC SMALL LETTER VE D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN D9 | 0000044B | CYRILLIC SMALL LETTER YERU DA | 00000437 | CYRILLIC SMALL LETTER ZE DB | 00000448 | CYRILLIC SMALL LETTER SHA DC | 0000044D | CYRILLIC SMALL LETTER E DD | 00000449 | CYRILLIC SMALL LETTER SHCHA DE | 00000447 | CYRILLIC SMALL LETTER CHE DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN E0 | 0000042E | CYRILLIC CAPITAL LETTER YU E1 | 00000410 | CYRILLIC CAPITAL LETTER A E2 | 00000411 | CYRILLIC CAPITAL LETTER BE E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE E4 | 00000414 | CYRILLIC CAPITAL LETTER DE E5 | 00000415 | CYRILLIC CAPITAL LETTER IE E6 | 00000424 | CYRILLIC CAPITAL LETTER EF E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE E8 | 00000425 | CYRILLIC CAPITAL LETTER HA E9 | 00000418 | CYRILLIC CAPITAL LETTER I EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I EB | 0000041A | CYRILLIC CAPITAL LETTER KA EC | 0000041B | CYRILLIC CAPITAL LETTER EL ED | 0000041C | CYRILLIC CAPITAL LETTER EM EE | 0000041D | CYRILLIC CAPITAL LETTER EN EF | 0000041E | CYRILLIC CAPITAL LETTER O F0 | 0000041F | CYRILLIC CAPITAL LETTER PE F1 | 0000042F | CYRILLIC CAPITAL LETTER YA F2 | 00000420 | CYRILLIC CAPITAL LETTER ER F3 | 00000421 | CYRILLIC CAPITAL LETTER ES F4 | 00000422 | CYRILLIC CAPITAL LETTER TE F5 | 00000423 | CYRILLIC CAPITAL LETTER U F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE F7 | 00000412 | CYRILLIC CAPITAL LETTER VE F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/GEORGIAN_ACADEMY.pm000644 000765 000024 00000064146 12716422333 023143 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for GEORGIAN-ACADEMY. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::GEORGIAN_ACADEMY; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xe2\x80\x9a", "\xc6\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xcb\x86", "\xe2\x80\xb0", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x92", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xcb\x9c", "\xe2\x84\xa2", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x93", "\xc2\x9d", "\xc2\x9e", "\xc5\xb8", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xe1\x83\x90", "\xe1\x83\x91", "\xe1\x83\x92", "\xe1\x83\x93", "\xe1\x83\x94", "\xe1\x83\x95", "\xe1\x83\x96", "\xe1\x83\x97", "\xe1\x83\x98", "\xe1\x83\x99", "\xe1\x83\x9a", "\xe1\x83\x9b", "\xe1\x83\x9c", "\xe1\x83\x9d", "\xe1\x83\x9e", "\xe1\x83\x9f", "\xe1\x83\xa0", "\xe1\x83\xa1", "\xe1\x83\xa2", "\xe1\x83\xa3", "\xe1\x83\xa4", "\xe1\x83\xa5", "\xe1\x83\xa6", "\xe1\x83\xa7", "\xe1\x83\xa8", "\xe1\x83\xa9", "\xe1\x83\xaa", "\xe1\x83\xab", "\xe1\x83\xac", "\xe1\x83\xad", "\xe1\x83\xae", "\xe1\x83\xaf", "\xe1\x83\xb0", "\xe1\x83\xb1", "\xe1\x83\xb2", "\xe1\x83\xb3", "\xe1\x83\xb4", "\xe1\x83\xb5", "\xe1\x83\xb6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000bf => "\xbf", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x000000ff => "\xff", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000178 => "\x9f", 0x00000192 => "\x83", 0x000002c6 => "\x88", 0x000002dc => "\x98", 0x000010d0 => "\xc0", 0x000010d1 => "\xc1", 0x000010d2 => "\xc2", 0x000010d3 => "\xc3", 0x000010d4 => "\xc4", 0x000010d5 => "\xc5", 0x000010d6 => "\xc6", 0x000010d7 => "\xc7", 0x000010d8 => "\xc8", 0x000010d9 => "\xc9", 0x000010da => "\xca", 0x000010db => "\xcb", 0x000010dc => "\xcc", 0x000010dd => "\xcd", 0x000010de => "\xce", 0x000010df => "\xcf", 0x000010e0 => "\xd0", 0x000010e1 => "\xd1", 0x000010e2 => "\xd2", 0x000010e3 => "\xd3", 0x000010e4 => "\xd4", 0x000010e5 => "\xd5", 0x000010e6 => "\xd6", 0x000010e7 => "\xd7", 0x000010e8 => "\xd8", 0x000010e9 => "\xd9", 0x000010ea => "\xda", 0x000010eb => "\xdb", 0x000010ec => "\xdc", 0x000010ed => "\xdd", 0x000010ee => "\xde", 0x000010ef => "\xdf", 0x000010f0 => "\xe0", 0x000010f1 => "\xe1", 0x000010f2 => "\xe2", 0x000010f3 => "\xe3", 0x000010f4 => "\xe4", 0x000010f5 => "\xe5", 0x000010f6 => "\xe6", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::GEORGIAN_ACADEMY - Conversion routines for GEORGIAN-ACADEMY =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for GEORGIAN-ACADEMY. =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT 89 | 00002030 | PER MILLE SIGN 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 000002DC | SMALL TILDE 99 | 00002122 | TRADE MARK SIGN 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000010D0 | GEORGIAN LETTER AN C1 | 000010D1 | GEORGIAN LETTER BAN C2 | 000010D2 | GEORGIAN LETTER GAN C3 | 000010D3 | GEORGIAN LETTER DON C4 | 000010D4 | GEORGIAN LETTER EN C5 | 000010D5 | GEORGIAN LETTER VIN C6 | 000010D6 | GEORGIAN LETTER ZEN C7 | 000010D7 | GEORGIAN LETTER TAN C8 | 000010D8 | GEORGIAN LETTER IN C9 | 000010D9 | GEORGIAN LETTER KAN CA | 000010DA | GEORGIAN LETTER LAS CB | 000010DB | GEORGIAN LETTER MAN CC | 000010DC | GEORGIAN LETTER NAR CD | 000010DD | GEORGIAN LETTER ON CE | 000010DE | GEORGIAN LETTER PAR CF | 000010DF | GEORGIAN LETTER ZHAR D0 | 000010E0 | GEORGIAN LETTER RAE D1 | 000010E1 | GEORGIAN LETTER SAN D2 | 000010E2 | GEORGIAN LETTER TAR D3 | 000010E3 | GEORGIAN LETTER UN D4 | 000010E4 | GEORGIAN LETTER PHAR D5 | 000010E5 | GEORGIAN LETTER KHAR D6 | 000010E6 | GEORGIAN LETTER GHAN D7 | 000010E7 | GEORGIAN LETTER QAR D8 | 000010E8 | GEORGIAN LETTER SHIN D9 | 000010E9 | GEORGIAN LETTER CHIN DA | 000010EA | GEORGIAN LETTER CAN DB | 000010EB | GEORGIAN LETTER JIL DC | 000010EC | GEORGIAN LETTER CIL DD | 000010ED | GEORGIAN LETTER CHAR DE | 000010EE | GEORGIAN LETTER XAN DF | 000010EF | GEORGIAN LETTER JHAN E0 | 000010F0 | GEORGIAN LETTER HAE E1 | 000010F1 | GEORGIAN LETTER HE E2 | 000010F2 | GEORGIAN LETTER HIE E3 | 000010F3 | GEORGIAN LETTER WE E4 | 000010F4 | GEORGIAN LETTER HAR E5 | 000010F5 | GEORGIAN LETTER HOE E6 | 000010F6 | GEORGIAN LETTER FI E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic) FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/GEORGIAN_PS.pm000644 000765 000024 00000064114 12716422333 022415 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for GEORGIAN-PS. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::GEORGIAN_PS; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xe2\x80\x9a", "\xc6\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xcb\x86", "\xe2\x80\xb0", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x92", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xcb\x9c", "\xe2\x84\xa2", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x93", "\xc2\x9d", "\xc2\x9e", "\xc5\xb8", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xe1\x83\x90", "\xe1\x83\x91", "\xe1\x83\x92", "\xe1\x83\x93", "\xe1\x83\x94", "\xe1\x83\x95", "\xe1\x83\x96", "\xe1\x83\xb1", "\xe1\x83\x97", "\xe1\x83\x98", "\xe1\x83\x99", "\xe1\x83\x9a", "\xe1\x83\x9b", "\xe1\x83\x9c", "\xe1\x83\xb2", "\xe1\x83\x9d", "\xe1\x83\x9e", "\xe1\x83\x9f", "\xe1\x83\xa0", "\xe1\x83\xa1", "\xe1\x83\xa2", "\xe1\x83\xb3", "\xe1\x83\xa3", "\xe1\x83\xa4", "\xe1\x83\xa5", "\xe1\x83\xa6", "\xe1\x83\xa7", "\xe1\x83\xa8", "\xe1\x83\xa9", "\xe1\x83\xaa", "\xe1\x83\xab", "\xe1\x83\xac", "\xe1\x83\xad", "\xe1\x83\xae", "\xe1\x83\xb4", "\xe1\x83\xaf", "\xe1\x83\xb0", "\xe1\x83\xb5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000bf => "\xbf", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x000000ff => "\xff", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000178 => "\x9f", 0x00000192 => "\x83", 0x000002c6 => "\x88", 0x000002dc => "\x98", 0x000010d0 => "\xc0", 0x000010d1 => "\xc1", 0x000010d2 => "\xc2", 0x000010d3 => "\xc3", 0x000010d4 => "\xc4", 0x000010d5 => "\xc5", 0x000010d6 => "\xc6", 0x000010d7 => "\xc8", 0x000010d8 => "\xc9", 0x000010d9 => "\xca", 0x000010da => "\xcb", 0x000010db => "\xcc", 0x000010dc => "\xcd", 0x000010dd => "\xcf", 0x000010de => "\xd0", 0x000010df => "\xd1", 0x000010e0 => "\xd2", 0x000010e1 => "\xd3", 0x000010e2 => "\xd4", 0x000010e3 => "\xd6", 0x000010e4 => "\xd7", 0x000010e5 => "\xd8", 0x000010e6 => "\xd9", 0x000010e7 => "\xda", 0x000010e8 => "\xdb", 0x000010e9 => "\xdc", 0x000010ea => "\xdd", 0x000010eb => "\xde", 0x000010ec => "\xdf", 0x000010ed => "\xe0", 0x000010ee => "\xe1", 0x000010ef => "\xe3", 0x000010f0 => "\xe4", 0x000010f1 => "\xc7", 0x000010f2 => "\xce", 0x000010f3 => "\xd5", 0x000010f4 => "\xe2", 0x000010f5 => "\xe5", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::GEORGIAN_PS - Conversion routines for GEORGIAN-PS =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for GEORGIAN-PS. =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT 89 | 00002030 | PER MILLE SIGN 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 000002DC | SMALL TILDE 99 | 00002122 | TRADE MARK SIGN 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000010D0 | GEORGIAN LETTER AN C1 | 000010D1 | GEORGIAN LETTER BAN C2 | 000010D2 | GEORGIAN LETTER GAN C3 | 000010D3 | GEORGIAN LETTER DON C4 | 000010D4 | GEORGIAN LETTER EN C5 | 000010D5 | GEORGIAN LETTER VIN C6 | 000010D6 | GEORGIAN LETTER ZEN C7 | 000010F1 | GEORGIAN LETTER HE C8 | 000010D7 | GEORGIAN LETTER TAN C9 | 000010D8 | GEORGIAN LETTER IN CA | 000010D9 | GEORGIAN LETTER KAN CB | 000010DA | GEORGIAN LETTER LAS CC | 000010DB | GEORGIAN LETTER MAN CD | 000010DC | GEORGIAN LETTER NAR CE | 000010F2 | GEORGIAN LETTER HIE CF | 000010DD | GEORGIAN LETTER ON D0 | 000010DE | GEORGIAN LETTER PAR D1 | 000010DF | GEORGIAN LETTER ZHAR D2 | 000010E0 | GEORGIAN LETTER RAE D3 | 000010E1 | GEORGIAN LETTER SAN D4 | 000010E2 | GEORGIAN LETTER TAR D5 | 000010F3 | GEORGIAN LETTER WE D6 | 000010E3 | GEORGIAN LETTER UN D7 | 000010E4 | GEORGIAN LETTER PHAR D8 | 000010E5 | GEORGIAN LETTER KHAR D9 | 000010E6 | GEORGIAN LETTER GHAN DA | 000010E7 | GEORGIAN LETTER QAR DB | 000010E8 | GEORGIAN LETTER SHIN DC | 000010E9 | GEORGIAN LETTER CHIN DD | 000010EA | GEORGIAN LETTER CAN DE | 000010EB | GEORGIAN LETTER JIL DF | 000010EC | GEORGIAN LETTER CIL E0 | 000010ED | GEORGIAN LETTER CHAR E1 | 000010EE | GEORGIAN LETTER XAN E2 | 000010F4 | GEORGIAN LETTER HAR E3 | 000010EF | GEORGIAN LETTER JHAN E4 | 000010F0 | GEORGIAN LETTER HAE E5 | 000010F5 | GEORGIAN LETTER HOE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic) FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/GOST_19768_74.pm000644 000765 000024 00000061170 12716422333 022463 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for GOST_19768-74. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::GOST_19768_74; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0401, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ad, 0xfffd, 0xfffd, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0xfffd, 0x0451, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xd0\x81", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xad", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xd1\x8f", "\xef\xbf\xbd", "\xd1\x91", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000ad => "\xad", 0x00000401 => "\xa1", 0x00000410 => "\xb0", 0x00000411 => "\xb1", 0x00000412 => "\xb2", 0x00000413 => "\xb3", 0x00000414 => "\xb4", 0x00000415 => "\xb5", 0x00000416 => "\xb6", 0x00000417 => "\xb7", 0x00000418 => "\xb8", 0x00000419 => "\xb9", 0x0000041a => "\xba", 0x0000041b => "\xbb", 0x0000041c => "\xbc", 0x0000041d => "\xbd", 0x0000041e => "\xbe", 0x0000041f => "\xbf", 0x00000420 => "\xc0", 0x00000421 => "\xc1", 0x00000422 => "\xc2", 0x00000423 => "\xc3", 0x00000424 => "\xc4", 0x00000425 => "\xc5", 0x00000426 => "\xc6", 0x00000427 => "\xc7", 0x00000428 => "\xc8", 0x00000429 => "\xc9", 0x0000042a => "\xca", 0x0000042b => "\xcb", 0x0000042c => "\xcc", 0x0000042d => "\xcd", 0x0000042e => "\xce", 0x0000042f => "\xcf", 0x00000430 => "\xd0", 0x00000431 => "\xd1", 0x00000432 => "\xd2", 0x00000433 => "\xd3", 0x00000434 => "\xd4", 0x00000435 => "\xd5", 0x00000436 => "\xd6", 0x00000437 => "\xd7", 0x00000438 => "\xd8", 0x00000439 => "\xd9", 0x0000043a => "\xda", 0x0000043b => "\xdb", 0x0000043c => "\xdc", 0x0000043d => "\xdd", 0x0000043e => "\xde", 0x0000043f => "\xdf", 0x00000440 => "\xe0", 0x00000441 => "\xe1", 0x00000442 => "\xe2", 0x00000443 => "\xe3", 0x00000444 => "\xe4", 0x00000445 => "\xe5", 0x00000446 => "\xe6", 0x00000447 => "\xe7", 0x00000448 => "\xe8", 0x00000449 => "\xe9", 0x0000044a => "\xea", 0x0000044b => "\xeb", 0x0000044c => "\xec", 0x0000044d => "\xed", 0x0000044e => "\xee", 0x0000044f => "\xef", 0x00000451 => "\xf1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::GOST_19768_74 - Conversion routines for GOST_19768_74 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for GOST_19768-74. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ST_SEV_358-88 alias ISO-IR-153 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000401 | CYRILLIC CAPITAL LETTER IO AD | 000000AD | SOFT HYPHEN B0 | 00000410 | CYRILLIC CAPITAL LETTER A B1 | 00000411 | CYRILLIC CAPITAL LETTER BE B2 | 00000412 | CYRILLIC CAPITAL LETTER VE B3 | 00000413 | CYRILLIC CAPITAL LETTER GHE B4 | 00000414 | CYRILLIC CAPITAL LETTER DE B5 | 00000415 | CYRILLIC CAPITAL LETTER IE B6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE B7 | 00000417 | CYRILLIC CAPITAL LETTER ZE B8 | 00000418 | CYRILLIC CAPITAL LETTER I B9 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I BA | 0000041A | CYRILLIC CAPITAL LETTER KA BB | 0000041B | CYRILLIC CAPITAL LETTER EL BC | 0000041C | CYRILLIC CAPITAL LETTER EM BD | 0000041D | CYRILLIC CAPITAL LETTER EN BE | 0000041E | CYRILLIC CAPITAL LETTER O BF | 0000041F | CYRILLIC CAPITAL LETTER PE C0 | 00000420 | CYRILLIC CAPITAL LETTER ER C1 | 00000421 | CYRILLIC CAPITAL LETTER ES C2 | 00000422 | CYRILLIC CAPITAL LETTER TE C3 | 00000423 | CYRILLIC CAPITAL LETTER U C4 | 00000424 | CYRILLIC CAPITAL LETTER EF C5 | 00000425 | CYRILLIC CAPITAL LETTER HA C6 | 00000426 | CYRILLIC CAPITAL LETTER TSE C7 | 00000427 | CYRILLIC CAPITAL LETTER CHE C8 | 00000428 | CYRILLIC CAPITAL LETTER SHA C9 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA CA | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN CB | 0000042B | CYRILLIC CAPITAL LETTER YERU CC | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN CD | 0000042D | CYRILLIC CAPITAL LETTER E CE | 0000042E | CYRILLIC CAPITAL LETTER YU CF | 0000042F | CYRILLIC CAPITAL LETTER YA D0 | 00000430 | CYRILLIC SMALL LETTER A D1 | 00000431 | CYRILLIC SMALL LETTER BE D2 | 00000432 | CYRILLIC SMALL LETTER VE D3 | 00000433 | CYRILLIC SMALL LETTER GHE D4 | 00000434 | CYRILLIC SMALL LETTER DE D5 | 00000435 | CYRILLIC SMALL LETTER IE D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000437 | CYRILLIC SMALL LETTER ZE D8 | 00000438 | CYRILLIC SMALL LETTER I D9 | 00000439 | CYRILLIC SMALL LETTER SHORT I DA | 0000043A | CYRILLIC SMALL LETTER KA DB | 0000043B | CYRILLIC SMALL LETTER EL DC | 0000043C | CYRILLIC SMALL LETTER EM DD | 0000043D | CYRILLIC SMALL LETTER EN DE | 0000043E | CYRILLIC SMALL LETTER O DF | 0000043F | CYRILLIC SMALL LETTER PE E0 | 00000440 | CYRILLIC SMALL LETTER ER E1 | 00000441 | CYRILLIC SMALL LETTER ES E2 | 00000442 | CYRILLIC SMALL LETTER TE E3 | 00000443 | CYRILLIC SMALL LETTER U E4 | 00000444 | CYRILLIC SMALL LETTER EF E5 | 00000445 | CYRILLIC SMALL LETTER HA E6 | 00000446 | CYRILLIC SMALL LETTER TSE E7 | 00000447 | CYRILLIC SMALL LETTER CHE E8 | 00000448 | CYRILLIC SMALL LETTER SHA E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN EB | 0000044B | CYRILLIC SMALL LETTER YERU EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN ED | 0000044D | CYRILLIC SMALL LETTER E EE | 0000044E | CYRILLIC SMALL LETTER YU EF | 0000044F | CYRILLIC SMALL LETTER YA F1 | 00000451 | CYRILLIC SMALL LETTER IO =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/GREEK7.pm000644 000765 000024 00000044000 12716422333 021534 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for GREEK7. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::GREEK7; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0xfffd, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0xfffd, 0x03a7, 0x03a8, 0x03a9, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0xfffd, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c2, 0x03c7, 0x03c8, 0x03c9, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\xc2\xa4", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xef\xbf\xbd", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xef\xbf\xbd", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xef\xbf\xbd", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x82", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\x7b", "\x7c", "\x7d", "\xe2\x80\xbe", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007f => "\x7f", 0x000000a4 => "\x24", 0x00000391 => "\x41", 0x00000392 => "\x42", 0x00000393 => "\x43", 0x00000394 => "\x44", 0x00000395 => "\x45", 0x00000396 => "\x46", 0x00000397 => "\x47", 0x00000398 => "\x48", 0x00000399 => "\x49", 0x0000039a => "\x4b", 0x0000039b => "\x4c", 0x0000039c => "\x4d", 0x0000039d => "\x4e", 0x0000039e => "\x4f", 0x0000039f => "\x50", 0x000003a0 => "\x51", 0x000003a1 => "\x52", 0x000003a3 => "\x53", 0x000003a4 => "\x54", 0x000003a5 => "\x55", 0x000003a6 => "\x56", 0x000003a7 => "\x58", 0x000003a8 => "\x59", 0x000003a9 => "\x5a", 0x000003b1 => "\x61", 0x000003b2 => "\x62", 0x000003b3 => "\x63", 0x000003b4 => "\x64", 0x000003b5 => "\x65", 0x000003b6 => "\x66", 0x000003b7 => "\x67", 0x000003b8 => "\x68", 0x000003b9 => "\x69", 0x000003ba => "\x6b", 0x000003bb => "\x6c", 0x000003bc => "\x6d", 0x000003bd => "\x6e", 0x000003be => "\x6f", 0x000003bf => "\x70", 0x000003c0 => "\x71", 0x000003c1 => "\x72", 0x000003c2 => "\x77", 0x000003c3 => "\x73", 0x000003c4 => "\x74", 0x000003c5 => "\x75", 0x000003c6 => "\x76", 0x000003c7 => "\x78", 0x000003c8 => "\x79", 0x000003c9 => "\x7a", 0x0000203e => "\x7e", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::GREEK7 - Conversion routines for GREEK7 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for GREEK7. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: ECMA registry alias ISO-IR-88 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 000000A4 | CURRENCY SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000391 | GREEK CAPITAL LETTER ALPHA 42 | 00000392 | GREEK CAPITAL LETTER BETA 43 | 00000393 | GREEK CAPITAL LETTER GAMMA 44 | 00000394 | GREEK CAPITAL LETTER DELTA 45 | 00000395 | GREEK CAPITAL LETTER EPSILON 46 | 00000396 | GREEK CAPITAL LETTER ZETA 47 | 00000397 | GREEK CAPITAL LETTER ETA 48 | 00000398 | GREEK CAPITAL LETTER THETA 49 | 00000399 | GREEK CAPITAL LETTER IOTA 4B | 0000039A | GREEK CAPITAL LETTER KAPPA 4C | 0000039B | GREEK CAPITAL LETTER LAMDA 4D | 0000039C | GREEK CAPITAL LETTER MU 4E | 0000039D | GREEK CAPITAL LETTER NU 4F | 0000039E | GREEK CAPITAL LETTER XI 50 | 0000039F | GREEK CAPITAL LETTER OMICRON 51 | 000003A0 | GREEK CAPITAL LETTER PI 52 | 000003A1 | GREEK CAPITAL LETTER RHO 53 | 000003A3 | GREEK CAPITAL LETTER SIGMA 54 | 000003A4 | GREEK CAPITAL LETTER TAU 55 | 000003A5 | GREEK CAPITAL LETTER UPSILON 56 | 000003A6 | GREEK CAPITAL LETTER PHI 58 | 000003A7 | GREEK CAPITAL LETTER CHI 59 | 000003A8 | GREEK CAPITAL LETTER PSI 5A | 000003A9 | GREEK CAPITAL LETTER OMEGA 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 000003B1 | GREEK SMALL LETTER ALPHA 62 | 000003B2 | GREEK SMALL LETTER BETA 63 | 000003B3 | GREEK SMALL LETTER GAMMA 64 | 000003B4 | GREEK SMALL LETTER DELTA 65 | 000003B5 | GREEK SMALL LETTER EPSILON 66 | 000003B6 | GREEK SMALL LETTER ZETA 67 | 000003B7 | GREEK SMALL LETTER ETA 68 | 000003B8 | GREEK SMALL LETTER THETA 69 | 000003B9 | GREEK SMALL LETTER IOTA 6B | 000003BA | GREEK SMALL LETTER KAPPA 6C | 000003BB | GREEK SMALL LETTER LAMDA 6D | 000003BC | GREEK SMALL LETTER MU 6E | 000003BD | GREEK SMALL LETTER NU 6F | 000003BE | GREEK SMALL LETTER XI 70 | 000003BF | GREEK SMALL LETTER OMICRON 71 | 000003C0 | GREEK SMALL LETTER PI 72 | 000003C1 | GREEK SMALL LETTER RHO 73 | 000003C3 | GREEK SMALL LETTER SIGMA 74 | 000003C4 | GREEK SMALL LETTER TAU 75 | 000003C5 | GREEK SMALL LETTER UPSILON 76 | 000003C6 | GREEK SMALL LETTER PHI 77 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA 78 | 000003C7 | GREEK SMALL LETTER CHI 79 | 000003C8 | GREEK SMALL LETTER PSI 7A | 000003C9 | GREEK SMALL LETTER OMEGA 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000203E | OVERLINE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/GREEK7_OLD.pm000644 000765 000024 00000044232 12716422333 022241 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for GREEK7-OLD. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::GREEK7_OLD; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x00b4, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3, 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf, 0x03c0, 0x037a, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2, 0x03c7, 0x03c5, 0x03b6, 0x1fcf, 0x1fbf, 0x1fce, 0x007e, 0x005f, 0x0060, 0x0391, 0x0392, 0x03a8, 0x0394, 0x0395, 0x03a6, 0x0393, 0x0397, 0x0399, 0x039e, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f, 0x03a0, 0xfffd, 0x03a1, 0x03a3, 0x03a4, 0x0398, 0x03a9, 0x00b7, 0x03a7, 0x03a5, 0x0396, 0x1fdf, 0x1ffe, 0x1fde, 0x00a8, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\xc2\xa3", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\xc2\xb4", "\xce\xb1", "\xce\xb2", "\xcf\x88", "\xce\xb4", "\xce\xb5", "\xcf\x86", "\xce\xb3", "\xce\xb7", "\xce\xb9", "\xce\xbe", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbf", "\xcf\x80", "\xcd\xba", "\xcf\x81", "\xcf\x83", "\xcf\x84", "\xce\xb8", "\xcf\x89", "\xcf\x82", "\xcf\x87", "\xcf\x85", "\xce\xb6", "\xe1\xbf\x8f", "\xe1\xbe\xbf", "\xe1\xbf\x8e", "\x7e", "\x5f", "\x60", "\xce\x91", "\xce\x92", "\xce\xa8", "\xce\x94", "\xce\x95", "\xce\xa6", "\xce\x93", "\xce\x97", "\xce\x99", "\xce\x9e", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9f", "\xce\xa0", "\xef\xbf\xbd", "\xce\xa1", "\xce\xa3", "\xce\xa4", "\xce\x98", "\xce\xa9", "\xc2\xb7", "\xce\xa7", "\xce\xa5", "\xce\x96", "\xe1\xbf\x9f", "\xe1\xbf\xbe", "\xe1\xbf\x9e", "\xc2\xa8", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x0000007e => "\x5e", 0x0000007f => "\x7f", 0x000000a3 => "\x23", 0x000000a8 => "\x7e", 0x000000b4 => "\x40", 0x000000b7 => "\x77", 0x0000037a => "\x51", 0x00000391 => "\x61", 0x00000392 => "\x62", 0x00000393 => "\x67", 0x00000394 => "\x64", 0x00000395 => "\x65", 0x00000396 => "\x7a", 0x00000397 => "\x68", 0x00000398 => "\x75", 0x00000399 => "\x69", 0x0000039a => "\x6b", 0x0000039b => "\x6c", 0x0000039c => "\x6d", 0x0000039d => "\x6e", 0x0000039e => "\x6a", 0x0000039f => "\x6f", 0x000003a0 => "\x70", 0x000003a1 => "\x72", 0x000003a3 => "\x73", 0x000003a4 => "\x74", 0x000003a5 => "\x79", 0x000003a6 => "\x66", 0x000003a7 => "\x78", 0x000003a8 => "\x63", 0x000003a9 => "\x76", 0x000003b1 => "\x41", 0x000003b2 => "\x42", 0x000003b3 => "\x47", 0x000003b4 => "\x44", 0x000003b5 => "\x45", 0x000003b6 => "\x5a", 0x000003b7 => "\x48", 0x000003b8 => "\x55", 0x000003b9 => "\x49", 0x000003ba => "\x4b", 0x000003bb => "\x4c", 0x000003bc => "\x4d", 0x000003bd => "\x4e", 0x000003be => "\x4a", 0x000003bf => "\x4f", 0x000003c0 => "\x50", 0x000003c1 => "\x52", 0x000003c2 => "\x57", 0x000003c3 => "\x53", 0x000003c4 => "\x54", 0x000003c5 => "\x59", 0x000003c6 => "\x46", 0x000003c7 => "\x58", 0x000003c8 => "\x43", 0x000003c9 => "\x56", 0x00001fbf => "\x5c", 0x00001fce => "\x5d", 0x00001fcf => "\x5b", 0x00001fde => "\x7d", 0x00001fdf => "\x7b", 0x00001ffe => "\x7c", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::GREEK7_OLD - Conversion routines for GREEK7_OLD =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for GREEK7-OLD. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-18 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 000000A3 | POUND SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 000000B4 | ACUTE ACCENT 41 | 000003B1 | GREEK SMALL LETTER ALPHA 42 | 000003B2 | GREEK SMALL LETTER BETA 43 | 000003C8 | GREEK SMALL LETTER PSI 44 | 000003B4 | GREEK SMALL LETTER DELTA 45 | 000003B5 | GREEK SMALL LETTER EPSILON 46 | 000003C6 | GREEK SMALL LETTER PHI 47 | 000003B3 | GREEK SMALL LETTER GAMMA 48 | 000003B7 | GREEK SMALL LETTER ETA 49 | 000003B9 | GREEK SMALL LETTER IOTA 4A | 000003BE | GREEK SMALL LETTER XI 4B | 000003BA | GREEK SMALL LETTER KAPPA 4C | 000003BB | GREEK SMALL LETTER LAMDA 4D | 000003BC | GREEK SMALL LETTER MU 4E | 000003BD | GREEK SMALL LETTER NU 4F | 000003BF | GREEK SMALL LETTER OMICRON 50 | 000003C0 | GREEK SMALL LETTER PI 51 | 0000037A | GREEK YPOGEGRAMMENI 52 | 000003C1 | GREEK SMALL LETTER RHO 53 | 000003C3 | GREEK SMALL LETTER SIGMA 54 | 000003C4 | GREEK SMALL LETTER TAU 55 | 000003B8 | GREEK SMALL LETTER THETA 56 | 000003C9 | GREEK SMALL LETTER OMEGA 57 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA 58 | 000003C7 | GREEK SMALL LETTER CHI 59 | 000003C5 | GREEK SMALL LETTER UPSILON 5A | 000003B6 | GREEK SMALL LETTER ZETA 5B | 00001FCF | GREEK PSILI AND PERISPOMENI 5C | 00001FBF | GREEK PSILI 5D | 00001FCE | GREEK PSILI AND OXIA 5E | 0000007E | TILDE 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000391 | GREEK CAPITAL LETTER ALPHA 62 | 00000392 | GREEK CAPITAL LETTER BETA 63 | 000003A8 | GREEK CAPITAL LETTER PSI 64 | 00000394 | GREEK CAPITAL LETTER DELTA 65 | 00000395 | GREEK CAPITAL LETTER EPSILON 66 | 000003A6 | GREEK CAPITAL LETTER PHI 67 | 00000393 | GREEK CAPITAL LETTER GAMMA 68 | 00000397 | GREEK CAPITAL LETTER ETA 69 | 00000399 | GREEK CAPITAL LETTER IOTA 6A | 0000039E | GREEK CAPITAL LETTER XI 6B | 0000039A | GREEK CAPITAL LETTER KAPPA 6C | 0000039B | GREEK CAPITAL LETTER LAMDA 6D | 0000039C | GREEK CAPITAL LETTER MU 6E | 0000039D | GREEK CAPITAL LETTER NU 6F | 0000039F | GREEK CAPITAL LETTER OMICRON 70 | 000003A0 | GREEK CAPITAL LETTER PI 72 | 000003A1 | GREEK CAPITAL LETTER RHO 73 | 000003A3 | GREEK CAPITAL LETTER SIGMA 74 | 000003A4 | GREEK CAPITAL LETTER TAU 75 | 00000398 | GREEK CAPITAL LETTER THETA 76 | 000003A9 | GREEK CAPITAL LETTER OMEGA 77 | 000000B7 | MIDDLE DOT 78 | 000003A7 | GREEK CAPITAL LETTER CHI 79 | 000003A5 | GREEK CAPITAL LETTER UPSILON 7A | 00000396 | GREEK CAPITAL LETTER ZETA 7B | 00001FDF | GREEK DASIA AND PERISPOMENI 7C | 00001FFE | GREEK DASIA 7D | 00001FDE | GREEK DASIA AND OXIA 7E | 000000A8 | DIAERESIS 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/GREEK_CCITT.pm000644 000765 000024 00000043740 12716422333 022405 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for GREEK-CCITT. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::GREEK_CCITT; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0xfffd, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0xfffd, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xfffd, 0x007b, 0x007c, 0x007d, 0x00af, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\xc2\xa4", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xef\xbf\xbd", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xef\xbf\xbd", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\xef\xbf\xbd", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xef\xbf\xbd", "\x7b", "\x7c", "\x7d", "\xc2\xaf", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007f => "\x7f", 0x000000a4 => "\x24", 0x000000af => "\x7e", 0x00000391 => "\x41", 0x00000392 => "\x42", 0x00000393 => "\x43", 0x00000394 => "\x44", 0x00000395 => "\x45", 0x00000396 => "\x46", 0x00000397 => "\x47", 0x00000398 => "\x48", 0x00000399 => "\x49", 0x0000039a => "\x4a", 0x0000039b => "\x4b", 0x0000039c => "\x4c", 0x0000039d => "\x4d", 0x0000039e => "\x4e", 0x0000039f => "\x4f", 0x000003a0 => "\x50", 0x000003a1 => "\x51", 0x000003a3 => "\x53", 0x000003a4 => "\x54", 0x000003a5 => "\x55", 0x000003a6 => "\x56", 0x000003a7 => "\x57", 0x000003a8 => "\x58", 0x000003a9 => "\x59", 0x000003b1 => "\x61", 0x000003b2 => "\x62", 0x000003b3 => "\x63", 0x000003b4 => "\x64", 0x000003b5 => "\x65", 0x000003b6 => "\x66", 0x000003b7 => "\x67", 0x000003b8 => "\x68", 0x000003b9 => "\x69", 0x000003ba => "\x6a", 0x000003bb => "\x6b", 0x000003bc => "\x6c", 0x000003bd => "\x6d", 0x000003be => "\x6e", 0x000003bf => "\x6f", 0x000003c0 => "\x70", 0x000003c1 => "\x71", 0x000003c2 => "\x72", 0x000003c3 => "\x73", 0x000003c4 => "\x74", 0x000003c5 => "\x75", 0x000003c6 => "\x76", 0x000003c7 => "\x77", 0x000003c8 => "\x78", 0x000003c9 => "\x79", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::GREEK_CCITT - Conversion routines for GREEK_CCITT =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for GREEK-CCITT. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: ECMA registry alias ISO-IR-150 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 000000A4 | CURRENCY SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000391 | GREEK CAPITAL LETTER ALPHA 42 | 00000392 | GREEK CAPITAL LETTER BETA 43 | 00000393 | GREEK CAPITAL LETTER GAMMA 44 | 00000394 | GREEK CAPITAL LETTER DELTA 45 | 00000395 | GREEK CAPITAL LETTER EPSILON 46 | 00000396 | GREEK CAPITAL LETTER ZETA 47 | 00000397 | GREEK CAPITAL LETTER ETA 48 | 00000398 | GREEK CAPITAL LETTER THETA 49 | 00000399 | GREEK CAPITAL LETTER IOTA 4A | 0000039A | GREEK CAPITAL LETTER KAPPA 4B | 0000039B | GREEK CAPITAL LETTER LAMDA 4C | 0000039C | GREEK CAPITAL LETTER MU 4D | 0000039D | GREEK CAPITAL LETTER NU 4E | 0000039E | GREEK CAPITAL LETTER XI 4F | 0000039F | GREEK CAPITAL LETTER OMICRON 50 | 000003A0 | GREEK CAPITAL LETTER PI 51 | 000003A1 | GREEK CAPITAL LETTER RHO 53 | 000003A3 | GREEK CAPITAL LETTER SIGMA 54 | 000003A4 | GREEK CAPITAL LETTER TAU 55 | 000003A5 | GREEK CAPITAL LETTER UPSILON 56 | 000003A6 | GREEK CAPITAL LETTER PHI 57 | 000003A7 | GREEK CAPITAL LETTER CHI 58 | 000003A8 | GREEK CAPITAL LETTER PSI 59 | 000003A9 | GREEK CAPITAL LETTER OMEGA 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 61 | 000003B1 | GREEK SMALL LETTER ALPHA 62 | 000003B2 | GREEK SMALL LETTER BETA 63 | 000003B3 | GREEK SMALL LETTER GAMMA 64 | 000003B4 | GREEK SMALL LETTER DELTA 65 | 000003B5 | GREEK SMALL LETTER EPSILON 66 | 000003B6 | GREEK SMALL LETTER ZETA 67 | 000003B7 | GREEK SMALL LETTER ETA 68 | 000003B8 | GREEK SMALL LETTER THETA 69 | 000003B9 | GREEK SMALL LETTER IOTA 6A | 000003BA | GREEK SMALL LETTER KAPPA 6B | 000003BB | GREEK SMALL LETTER LAMDA 6C | 000003BC | GREEK SMALL LETTER MU 6D | 000003BD | GREEK SMALL LETTER NU 6E | 000003BE | GREEK SMALL LETTER XI 6F | 000003BF | GREEK SMALL LETTER OMICRON 70 | 000003C0 | GREEK SMALL LETTER PI 71 | 000003C1 | GREEK SMALL LETTER RHO 72 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA 73 | 000003C3 | GREEK SMALL LETTER SIGMA 74 | 000003C4 | GREEK SMALL LETTER TAU 75 | 000003C5 | GREEK SMALL LETTER UPSILON 76 | 000003C6 | GREEK SMALL LETTER PHI 77 | 000003C7 | GREEK SMALL LETTER CHI 78 | 000003C8 | GREEK SMALL LETTER PSI 79 | 000003C9 | GREEK SMALL LETTER OMEGA 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 000000AF | MACRON 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/HP_ROMAN8.pm000644 000765 000024 00000065546 12716422333 022165 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for HP-ROMAN8. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::HP_ROMAN8; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf, 0x00b4, 0x02cb, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x20a4, 0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1, 0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2, 0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc, 0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6, 0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4, 0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3, 0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff, 0x00de, 0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2014, 0x00bc, 0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc3\x80", "\xc3\x82", "\xc3\x88", "\xc3\x8a", "\xc3\x8b", "\xc3\x8e", "\xc3\x8f", "\xc2\xb4", "\xcb\x8b", "\xcb\x86", "\xc2\xa8", "\xcb\x9c", "\xc3\x99", "\xc3\x9b", "\xe2\x82\xa4", "\xc2\xaf", "\xc3\x9d", "\xc3\xbd", "\xc2\xb0", "\xc3\x87", "\xc3\xa7", "\xc3\x91", "\xc3\xb1", "\xc2\xa1", "\xc2\xbf", "\xc2\xa4", "\xc2\xa3", "\xc2\xa5", "\xc2\xa7", "\xc6\x92", "\xc2\xa2", "\xc3\xa2", "\xc3\xaa", "\xc3\xb4", "\xc3\xbb", "\xc3\xa1", "\xc3\xa9", "\xc3\xb3", "\xc3\xba", "\xc3\xa0", "\xc3\xa8", "\xc3\xb2", "\xc3\xb9", "\xc3\xa4", "\xc3\xab", "\xc3\xb6", "\xc3\xbc", "\xc3\x85", "\xc3\xae", "\xc3\x98", "\xc3\x86", "\xc3\xa5", "\xc3\xad", "\xc3\xb8", "\xc3\xa6", "\xc3\x84", "\xc3\xac", "\xc3\x96", "\xc3\x9c", "\xc3\x89", "\xc3\xaf", "\xc3\x9f", "\xc3\x94", "\xc3\x81", "\xc3\x83", "\xc3\xa3", "\xc3\x90", "\xc3\xb0", "\xc3\x8d", "\xc3\x8c", "\xc3\x93", "\xc3\x92", "\xc3\x95", "\xc3\xb5", "\xc5\xa0", "\xc5\xa1", "\xc3\x9a", "\xc5\xb8", "\xc3\xbf", "\xc3\x9e", "\xc3\xbe", "\xc2\xb7", "\xc2\xb5", "\xc2\xb6", "\xc2\xbe", "\xe2\x80\x94", "\xc2\xbc", "\xc2\xbd", "\xc2\xaa", "\xc2\xba", "\xc2\xab", "\xe2\x96\xa0", "\xc2\xbb", "\xc2\xb1", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a1 => "\xb8", 0x000000a2 => "\xbf", 0x000000a3 => "\xbb", 0x000000a4 => "\xba", 0x000000a5 => "\xbc", 0x000000a7 => "\xbd", 0x000000a8 => "\xab", 0x000000aa => "\xf9", 0x000000ab => "\xfb", 0x000000af => "\xb0", 0x000000b0 => "\xb3", 0x000000b1 => "\xfe", 0x000000b4 => "\xa8", 0x000000b5 => "\xf3", 0x000000b6 => "\xf4", 0x000000b7 => "\xf2", 0x000000ba => "\xfa", 0x000000bb => "\xfd", 0x000000bc => "\xf7", 0x000000bd => "\xf8", 0x000000be => "\xf5", 0x000000bf => "\xb9", 0x000000c0 => "\xa1", 0x000000c1 => "\xe0", 0x000000c2 => "\xa2", 0x000000c3 => "\xe1", 0x000000c4 => "\xd8", 0x000000c5 => "\xd0", 0x000000c6 => "\xd3", 0x000000c7 => "\xb4", 0x000000c8 => "\xa3", 0x000000c9 => "\xdc", 0x000000ca => "\xa4", 0x000000cb => "\xa5", 0x000000cc => "\xe6", 0x000000cd => "\xe5", 0x000000ce => "\xa6", 0x000000cf => "\xa7", 0x000000d0 => "\xe3", 0x000000d1 => "\xb6", 0x000000d2 => "\xe8", 0x000000d3 => "\xe7", 0x000000d4 => "\xdf", 0x000000d5 => "\xe9", 0x000000d6 => "\xda", 0x000000d8 => "\xd2", 0x000000d9 => "\xad", 0x000000da => "\xed", 0x000000db => "\xae", 0x000000dc => "\xdb", 0x000000dd => "\xb1", 0x000000de => "\xf0", 0x000000df => "\xde", 0x000000e0 => "\xc8", 0x000000e1 => "\xc4", 0x000000e2 => "\xc0", 0x000000e3 => "\xe2", 0x000000e4 => "\xcc", 0x000000e5 => "\xd4", 0x000000e6 => "\xd7", 0x000000e7 => "\xb5", 0x000000e8 => "\xc9", 0x000000e9 => "\xc5", 0x000000ea => "\xc1", 0x000000eb => "\xcd", 0x000000ec => "\xd9", 0x000000ed => "\xd5", 0x000000ee => "\xd1", 0x000000ef => "\xdd", 0x000000f0 => "\xe4", 0x000000f1 => "\xb7", 0x000000f2 => "\xca", 0x000000f3 => "\xc6", 0x000000f4 => "\xc2", 0x000000f5 => "\xea", 0x000000f6 => "\xce", 0x000000f8 => "\xd6", 0x000000f9 => "\xcb", 0x000000fa => "\xc7", 0x000000fb => "\xc3", 0x000000fc => "\xcf", 0x000000fd => "\xb2", 0x000000fe => "\xf1", 0x000000ff => "\xef", 0x00000160 => "\xeb", 0x00000161 => "\xec", 0x00000178 => "\xee", 0x00000192 => "\xbe", 0x000002c6 => "\xaa", 0x000002cb => "\xa9", 0x000002dc => "\xac", 0x00002014 => "\xf6", 0x000020a4 => "\xaf", 0x000025a0 => "\xfc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::HP_ROMAN8 - Conversion routines for HP_ROMAN8 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for HP-ROMAN8. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: LaserJet IIP Printer User's Manual, HP part no 33471-90901, Hewlet-Packard, June 1989. alias ROMAN8 alias R8 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE A2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX A3 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE A4 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX A5 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS A6 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX A7 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS A8 | 000000B4 | ACUTE ACCENT A9 | 000002CB | MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone) AA | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT AB | 000000A8 | DIAERESIS AC | 000002DC | SMALL TILDE AD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE AE | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX AF | 000020A4 | LIRA SIGN B0 | 000000AF | MACRON B1 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE B2 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE B3 | 000000B0 | DEGREE SIGN B4 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA B5 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA B6 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE B7 | 000000F1 | LATIN SMALL LETTER N WITH TILDE B8 | 000000A1 | INVERTED EXCLAMATION MARK B9 | 000000BF | INVERTED QUESTION MARK BA | 000000A4 | CURRENCY SIGN BB | 000000A3 | POUND SIGN BC | 000000A5 | YEN SIGN BD | 000000A7 | SECTION SIGN BE | 00000192 | LATIN SMALL LETTER F WITH HOOK BF | 000000A2 | CENT SIGN C0 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX C1 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX C2 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX C3 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX C4 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE C5 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE C6 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE C7 | 000000FA | LATIN SMALL LETTER U WITH ACUTE C8 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE C9 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE CA | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CB | 000000F9 | LATIN SMALL LETTER U WITH GRAVE CC | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS CD | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS CE | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CF | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS D0 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE D1 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX D2 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D3 | 000000C6 | LATIN CAPITAL LETTER AE D4 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE D5 | 000000ED | LATIN SMALL LETTER I WITH ACUTE D6 | 000000F8 | LATIN SMALL LETTER O WITH STROKE D7 | 000000E6 | LATIN SMALL LETTER AE D8 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS D9 | 000000EC | LATIN SMALL LETTER I WITH GRAVE DA | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS DB | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DC | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE DD | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS DE | 000000DF | LATIN SMALL LETTER SHARP S (German) DF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX E0 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E1 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE E2 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E3 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) E4 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) E5 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE E6 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE E7 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE E8 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE E9 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE EA | 000000F5 | LATIN SMALL LETTER O WITH TILDE EB | 00000160 | LATIN CAPITAL LETTER S WITH CARON EC | 00000161 | LATIN SMALL LETTER S WITH CARON ED | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE EE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS EF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS F0 | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) F1 | 000000FE | LATIN SMALL LETTER THORN (Icelandic) F2 | 000000B7 | MIDDLE DOT F3 | 000000B5 | MICRO SIGN F4 | 000000B6 | PILCROW SIGN F5 | 000000BE | VULGAR FRACTION THREE QUARTERS F6 | 00002014 | EM DASH F7 | 000000BC | VULGAR FRACTION ONE QUARTER F8 | 000000BD | VULGAR FRACTION ONE HALF F9 | 000000AA | FEMININE ORDINAL INDICATOR FA | 000000BA | MASCULINE ORDINAL INDICATOR FB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK FC | 000025A0 | BLACK SQUARE FD | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK FE | 000000B1 | PLUS-MINUS SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM037.pm000644 000765 000024 00000065426 12716422333 021470 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM037. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM037; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\x21", "\x24", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\x5e", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\x5b", "\x5d", "\xc2\xaf", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xba", 0x0000005c => "\xe0", 0x0000005d => "\xbb", 0x0000005e => "\xb0", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\x4a", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\x5f", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000af => "\xbc", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM037 - Conversion routines for IBM037 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM037. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP037 alias EBCDIC-CP-US alias EBCDIC-CP-CA alias EBCDIC-CP-WT alias EBCDIC-CP-NL Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 00000021 | EXCLAMATION MARK 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 0000005E | CIRCUMFLEX ACCENT B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 0000005B | LEFT SQUARE BRACKET BB | 0000005D | RIGHT SQUARE BRACKET BC | 000000AF | MACRON BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM038.pm000644 000765 000024 00000050012 12716422333 021452 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM038. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM038; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a6 => "\x6a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM038 - Conversion routines for IBM038 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM038. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 alias EBCDIC-INT alias CP038 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM1004.pm000644 000765 000024 00000064141 12716422333 021534 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM1004. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM1004; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x9a", "\xef\xbf\xbd", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xcb\x86", "\xe2\x80\xb0", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x92", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xcb\x9c", "\xe2\x84\xa2", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x93", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc5\xb8", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000bf => "\xbf", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d0 => "\xd0", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000de => "\xde", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x000000ff => "\xff", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000178 => "\x9f", 0x000002c6 => "\x88", 0x000002dc => "\x98", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM1004 - Conversion routines for IBM1004 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM1004. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: CEN/TC304 N283, 1994-02-04 alias CP1004 alias OS2LATIN1 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 88 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT 89 | 00002030 | PER MILLE SIGN 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 000002DC | SMALL TILDE 99 | 00002122 | TRADE MARK SIGN 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic) FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM1026.pm000644 000765 000024 00000065321 12716422333 021541 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM1026. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM1026; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x02db, 0x00c6, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x2014, 0x00a8, 0x00b4, 0x00d7, 0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff, 0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\x7b", "\xc3\xb1", "\xc3\x87", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\xc4\x9e", "\xc4\xb0", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\x5b", "\xc3\x91", "\xc5\x9f", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc4\xb1", "\x3a", "\xc3\x96", "\xc5\x9e", "\x27", "\x3d", "\xc3\x9c", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\x7d", "\x60", "\xc2\xa6", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xcb\x9b", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\xc3\xb6", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\x5d", "\x24", "\x40", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\x94", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\xc3\xa7", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\x7e", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\xc4\x9f", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\x5c", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\xc3\xbc", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\x23", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\x22", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\xfc", 0x00000023 => "\xec", 0x00000024 => "\xad", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\xae", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x68", 0x0000005c => "\xdc", 0x0000005d => "\xac", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x8d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x48", 0x0000007c => "\xbb", 0x0000007d => "\x8c", 0x0000007e => "\xcc", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x8e", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x4a", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\x7b", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\x7f", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\xc0", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xa1", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xe0", 0x000000ff => "\xdf", 0x0000011e => "\x5a", 0x0000011f => "\xd0", 0x00000130 => "\x5b", 0x00000131 => "\x79", 0x0000015e => "\x7c", 0x0000015f => "\x6a", 0x000002db => "\x9d", 0x00002014 => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM1026 - Conversion routines for IBM1026 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM1026. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP1026 alias 1026 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 0000007B | LEFT CURLY BRACKET 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 0000011E | LATIN CAPITAL LETTER G WITH BREVE 5B | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 0000005B | LEFT SQUARE BRACKET 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 0000015F | LATIN SMALL LETTER S WITH CEDILLA 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000131 | LATIN SMALL LETTER DOTLESS I 7A | 0000003A | COLON 7B | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7C | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 0000007D | RIGHT CURLY BRACKET 8D | 00000060 | GRAVE ACCENT 8E | 000000A6 | BROKEN BAR 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000002DB | OGONEK 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 0000005D | RIGHT SQUARE BRACKET AD | 00000024 | DOLLAR SIGN AE | 00000040 | COMMERCIAL AT AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 00002014 | EM DASH BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 0000007E | TILDE CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000011F | LATIN SMALL LETTER G WITH BREVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 0000005C | REVERSE SOLIDUS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 00000023 | NUMBER SIGN ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 00000022 | QUOTATION MARK FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM1047.pm000644 000765 000024 00000065375 12716422333 021555 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM1047. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM1047; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x005b, 0x00de, 0x00ae, 0x00ac, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00dd, 0x00a8, 0x00af, 0x005d, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\x21", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\x5b", "\xc3\x9e", "\xc2\xae", "\xc2\xac", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc3\x9d", "\xc2\xa8", "\xc2\xaf", "\x5d", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xad", 0x0000005c => "\xe0", 0x0000005d => "\xbd", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\x4a", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbb", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xb0", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000af => "\xbc", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xba", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM1047 - Conversion routines for IBM1047 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM1047. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM Character Data Representation Architecture Registry SC09-1391-00 p 150. alias CP1047 alias 1047 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 00000021 | EXCLAMATION MARK 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 0000005B | LEFT SQUARE BRACKET AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000AC | NOT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE BB | 000000A8 | DIAERESIS BC | 000000AF | MACRON BD | 0000005D | RIGHT SQUARE BRACKET BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM256.pm000644 000765 000024 00000065331 12716422333 021466 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM256. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM256; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x2017, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x2003, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xe2\x82\xa7", "\xc6\x92", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\xbe", "\xc2\xa8", "\xc2\xb4", "\xe2\x80\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xe2\x80\x83", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\xbb", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x00000192 => "\xb4", 0x00002003 => "\xe1", 0x00002017 => "\xbf", 0x0000203e => "\xbc", 0x000020a7 => "\xb3", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM256 - Conversion routines for IBM256 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM256. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM Registry C-H 3-3220-050 alias EBCDIC-INT1 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000020A7 | PESETA SIGN B4 | 00000192 | LATIN SMALL LETTER F WITH HOOK B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 0000203E | OVERLINE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 00002017 | DOUBLE LOW LINE C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 00002003 | EM SPACE E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM273.pm000644 000765 000024 00000065314 12716422333 021466 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM273. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM273; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x007e, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x005b, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007d, 0x00f9, 0x00fa, 0x00ff, 0x00d6, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x005c, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\x7b", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\xc3\x84", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\x7e", "\xc3\x9c", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\x5b", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc3\xb6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\x23", "\xc2\xa7", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\xc3\x9f", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\x40", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\xbe", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\xc3\xa4", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc2\xa6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\xc3\xbc", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\x7d", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\xc3\x96", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\x5c", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\x5d", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\xb5", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x63", 0x0000005c => "\xec", 0x0000005d => "\xfc", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x43", 0x0000007c => "\xbb", 0x0000007d => "\xdc", 0x0000007e => "\x59", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\xcc", 0x000000a7 => "\x7c", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x4a", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xe0", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\x5a", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\xa1", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\xc0", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\x6a", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xd0", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM273 - Conversion routines for IBM273 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM273. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP273 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 0000007B | LEFT CURLY BRACKET 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 0000007E | TILDE 5A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 0000005B | LEFT SQUARE BRACKET 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 000000A7 | SECTION SIGN 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 000000DF | LATIN SMALL LETTER SHARP S (German) A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 00000040 | COMMERCIAL AT B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 0000203E | OVERLINE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000A6 | BROKEN BAR CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 0000007D | RIGHT CURLY BRACKET DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 0000005C | REVERSE SOLIDUS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 0000005D | RIGHT SQUARE BRACKET FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM274.pm000644 000765 000024 00000050163 12716422333 021463 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM274. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM274; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x00e0, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e7, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb9", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\xc3\xa0", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa9", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa8", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa7", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a8 => "\xa1", 0x000000e0 => "\x7c", 0x000000e7 => "\xe0", 0x000000e8 => "\xd0", 0x000000e9 => "\xc0", 0x000000f9 => "\x6a", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM274 - Conversion routines for IBM274 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM274. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 alias EBCDIC-BE alias CP274 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM275.pm000644 000765 000024 00000050243 12716422333 021463 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM275. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM275; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00c9, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0024, 0x00c7, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e7, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e3, 0x003a, 0x00d5, 0x00c3, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00f5, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e9, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\x89", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x24", "\xc3\x87", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa7", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa3", "\x3a", "\xc3\x95", "\xc3\x83", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xb5", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc3\xa9", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000024 => "\x5a", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005c => "\xe0", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000c3 => "\x7c", 0x000000c7 => "\x5b", 0x000000c9 => "\x4a", 0x000000d5 => "\x7b", 0x000000e3 => "\x79", 0x000000e7 => "\x6a", 0x000000e9 => "\xd0", 0x000000f5 => "\xc0", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM275 - Conversion routines for IBM275 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM275. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias EBCDIC-BR alias CP275 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 5A | 00000024 | DOLLAR SIGN 5B | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 7A | 0000003A | COLON 7B | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE 7C | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 000000F5 | LATIN SMALL LETTER O WITH TILDE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM277.pm000644 000765 000024 00000065347 12716422333 021500 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM277. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM277; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00a6, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022, 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x007b, 0x00b8, 0x005b, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\x7d", "\xc3\xa7", "\xc3\xb1", "\x23", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\xc2\xa4", "\xc3\x85", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\x24", "\xc3\x87", "\xc3\x91", "\xc3\xb8", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc2\xa6", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\xc3\x86", "\xc3\x98", "\x27", "\x3d", "\x22", "\x40", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\x7b", "\xc2\xb8", "\x5b", "\x5d", "\xc2\xb5", "\xc3\xbc", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\xbe", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\xc3\xa6", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\xc3\xa5", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\x7e", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x4a", 0x00000024 => "\x67", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x80", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x9e", 0x0000005c => "\xe0", 0x0000005d => "\x9f", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x9c", 0x0000007c => "\xbb", 0x0000007d => "\x47", 0x0000007e => "\xdc", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x5a", 0x000000a5 => "\xb2", 0x000000a6 => "\x70", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x5b", 0x000000c6 => "\x7b", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x7c", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\xd0", 0x000000e6 => "\xc0", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x6a", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xa1", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM277 - Conversion routines for IBM277 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM277. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias EBCDIC-CP-DK alias EBCDIC-CP-NO Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 0000007D | RIGHT CURLY BRACKET 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 00000023 | NUMBER SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 000000A4 | CURRENCY SIGN 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 00000024 | DOLLAR SIGN 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000F8 | LATIN SMALL LETTER O WITH STROKE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000A6 | BROKEN BAR 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000C6 | LATIN CAPITAL LETTER AE 7C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 00000040 | COMMERCIAL AT 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 0000007B | LEFT CURLY BRACKET 9D | 000000B8 | CEDILLA 9E | 0000005B | LEFT SQUARE BRACKET 9F | 0000005D | RIGHT SQUARE BRACKET A0 | 000000B5 | MICRO SIGN A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 0000203E | OVERLINE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E6 | LATIN SMALL LETTER AE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 0000007E | TILDE DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM278.pm000644 000765 000024 00000065364 12716422333 021500 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM278. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM278; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d, 0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024, 0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d, 0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5, 0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\x7b", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\x7d", "\xc3\xa7", "\xc3\xb1", "\xc2\xa7", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\x60", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\xc2\xa4", "\xc3\x85", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\x23", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\x24", "\xc3\x87", "\xc3\x91", "\xc3\xb6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\xa9", "\x3a", "\xc3\x84", "\xc3\x96", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\x5d", "\xc2\xb5", "\xc3\xbc", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\x5b", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\xbe", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\xc3\xa4", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc2\xa6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\xc3\xa5", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\x7e", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\x40", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x63", 0x00000024 => "\x67", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\xec", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xb5", 0x0000005c => "\xe0", 0x0000005d => "\x9f", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x51", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x43", 0x0000007c => "\xbb", 0x0000007d => "\x47", 0x0000007e => "\xdc", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x5a", 0x000000a5 => "\xb2", 0x000000a6 => "\xcc", 0x000000a7 => "\x4a", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x7b", 0x000000c5 => "\x5b", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\x7c", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\xc0", 0x000000e5 => "\xd0", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x79", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\x6a", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xa1", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM278 - Conversion routines for IBM278 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM278. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP278 alias EBCDIC-CP-FI alias EBCDIC-CP-SE Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 0000007B | LEFT CURLY BRACKET 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 0000007D | RIGHT CURLY BRACKET 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000A7 | SECTION SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 00000060 | GRAVE ACCENT 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 000000A4 | CURRENCY SIGN 5B | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 00000023 | NUMBER SIGN 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 00000024 | DOLLAR SIGN 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 7A | 0000003A | COLON 7B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 7C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 0000005D | RIGHT SQUARE BRACKET A0 | 000000B5 | MICRO SIGN A1 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 0000005B | LEFT SQUARE BRACKET B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 0000203E | OVERLINE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000A6 | BROKEN BAR CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 0000007E | TILDE DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 00000040 | COMMERCIAL AT ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM280.pm000644 000765 000024 00000065340 12716422333 021463 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM280. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM280; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x007b, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x005d, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 0x007e, 0x00df, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x00a8, 0x00b4, 0x00d7, 0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00a6, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x0060, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\x7b", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\x5c", "\xc3\xb1", "\xc2\xb0", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\x5d", "\xc3\xaa", "\xc3\xab", "\x7d", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\x7e", "\xc3\x9f", "\xc3\xa9", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc3\xb2", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\xb9", "\x3a", "\xc2\xa3", "\xc2\xa7", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\x5b", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\xc3\xac", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\x23", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\x40", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\xbe", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\xc3\xa0", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc2\xa6", "\xc3\xb3", "\xc3\xb5", "\xc3\xa8", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\x60", "\xc3\xba", "\xc3\xbf", "\xc3\xa7", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\xb1", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\xb5", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x90", 0x0000005c => "\x48", 0x0000005d => "\x51", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\xdd", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x44", 0x0000007c => "\xbb", 0x0000007d => "\x54", 0x0000007e => "\x58", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\x7b", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\xcd", 0x000000a7 => "\x7c", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x4a", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\xc0", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\xe0", 0x000000e8 => "\xd0", 0x000000e9 => "\x5a", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\xa1", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\x6a", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\x79", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM280 - Conversion routines for IBM280 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM280. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP280 alias EBCDIC-CP-IT Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 0000007B | LEFT CURLY BRACKET 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 0000005C | REVERSE SOLIDUS 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000B0 | DEGREE SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 0000005D | RIGHT SQUARE BRACKET 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 0000007D | RIGHT CURLY BRACKET 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 0000007E | TILDE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 7A | 0000003A | COLON 7B | 000000A3 | POUND SIGN 7C | 000000A7 | SECTION SIGN 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 0000005B | LEFT SQUARE BRACKET 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 000000EC | LATIN SMALL LETTER I WITH GRAVE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 00000023 | NUMBER SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 00000040 | COMMERCIAL AT B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 0000203E | OVERLINE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000A6 | BROKEN BAR CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 00000060 | GRAVE ACCENT DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM281.pm000644 000765 000024 00000050002 12716422333 021451 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM281. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM281; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a3, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0021, 0x00a5, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x203e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0024, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa3", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x21", "\xc2\xa5", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\xbe", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x24", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\xe0", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\x4a", 0x000000a5 => "\x5b", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x0000203e => "\xa1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM281 - Conversion routines for IBM281 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM281. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 alias EBCDIC-JP-E alias CP281 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 4A | 000000A3 | POUND SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 5A | 00000021 | EXCLAMATION MARK 5B | 000000A5 | YEN SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R A1 | 0000203E | OVERLINE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 00000024 | DOLLAR SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM284.pm000644 000765 000024 00000065340 12716422333 021467 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM284. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM284; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00a6, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x0023, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x0021, 0x203e, 0x007e, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc2\xa6", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\x23", "\xc3\xb1", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\xc3\x91", "\x40", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\x5e", "\x21", "\xe2\x80\xbe", "\x7e", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\xbb", 0x00000022 => "\x7f", 0x00000023 => "\x69", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\xba", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007e => "\xbd", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x49", 0x000000a7 => "\xb5", 0x000000a8 => "\xa1", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\x5f", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x7b", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x6a", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM284 - Conversion routines for IBM284 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM284. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP284 alias EBCDIC-CP-ES Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000A6 | BROKEN BAR 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 00000023 | NUMBER SIGN 6A | 000000F1 | LATIN SMALL LETTER N WITH TILDE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 0000005E | CIRCUMFLEX ACCENT BB | 00000021 | EXCLAMATION MARK BC | 0000203E | OVERLINE BD | 0000007E | TILDE BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM285.pm000644 000765 000024 00000065340 12716422333 021470 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM285. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM285; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x203e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x005b, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005e, 0x005d, 0x007e, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\x24", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\x21", "\xc2\xa3", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\xe2\x80\xbe", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\x5b", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\x5e", "\x5d", "\x7e", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x4a", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xb1", 0x0000005c => "\xe0", 0x0000005d => "\xbb", 0x0000005e => "\xba", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007e => "\xbc", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\x5b", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\x5f", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xa1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM285 - Conversion routines for IBM285 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM285. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP285 alias EBCDIC-CP-GB Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 00000024 | DOLLAR SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 00000021 | EXCLAMATION MARK 5B | 000000A3 | POUND SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 0000203E | OVERLINE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 0000005B | LEFT SQUARE BRACKET B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 0000005E | CIRCUMFLEX ACCENT BB | 0000005D | RIGHT SQUARE BRACKET BC | 0000007E | TILDE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM290.pm000644 000765 000024 00000055042 12716422333 021462 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM290. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM290; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x3002, 0x300c, 0x300d, 0x3001, 0x30fb, 0x30f2, 0x30a1, 0x30a3, 0x30a5, 0x00a3, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x30a7, 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, 0xfffd, 0x30fc, 0xfffd, 0x0021, 0x00a5, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, 0x30af, 0x30b1, 0x30b3, 0xfffd, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, 0x30bf, 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0xfffd, 0xfffd, 0x30cf, 0x30d2, 0x30d5, 0xfffd, 0x203e, 0x30d8, 0x30db, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0xfffd, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x30ec, 0x30ed, 0x30ef, 0x30f3, 0x309b, 0x309c, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0024, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xe3\x80\x82", "\xe3\x80\x8c", "\xe3\x80\x8d", "\xe3\x80\x81", "\xe3\x83\xbb", "\xe3\x83\xb2", "\xe3\x82\xa1", "\xe3\x82\xa3", "\xe3\x82\xa5", "\xc2\xa3", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xe3\x82\xa7", "\xe3\x82\xa9", "\xe3\x83\xa3", "\xe3\x83\xa5", "\xe3\x83\xa7", "\xe3\x83\x83", "\xef\xbf\xbd", "\xe3\x83\xbc", "\xef\xbf\xbd", "\x21", "\xc2\xa5", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\xe3\x82\xa2", "\xe3\x82\xa4", "\xe3\x82\xa6", "\xe3\x82\xa8", "\xe3\x82\xaa", "\xe3\x82\xab", "\xe3\x82\xad", "\xe3\x82\xaf", "\xe3\x82\xb1", "\xe3\x82\xb3", "\xef\xbf\xbd", "\xe3\x82\xb5", "\xe3\x82\xb7", "\xe3\x82\xb9", "\xe3\x82\xbb", "\xe3\x82\xbd", "\xe3\x82\xbf", "\xe3\x83\x81", "\xe3\x83\x84", "\xe3\x83\x86", "\xe3\x83\x88", "\xe3\x83\x8a", "\xe3\x83\x8b", "\xe3\x83\x8c", "\xe3\x83\x8d", "\xe3\x83\x8e", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe3\x83\x8f", "\xe3\x83\x92", "\xe3\x83\x95", "\xef\xbf\xbd", "\xe2\x80\xbe", "\xe3\x83\x98", "\xe3\x83\x9b", "\xe3\x83\x9e", "\xe3\x83\x9f", "\xe3\x83\xa0", "\xe3\x83\xa1", "\xe3\x83\xa2", "\xe3\x83\xa4", "\xe3\x83\xa6", "\xef\xbf\xbd", "\xe3\x83\xa8", "\xe3\x83\xa9", "\xe3\x83\xaa", "\xe3\x83\xab", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe3\x83\xac", "\xe3\x83\xad", "\xe3\x83\xaf", "\xe3\x83\xb3", "\xe3\x82\x9b", "\xe3\x82\x9c", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x24", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\xe0", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x0000007c => "\x4f", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\x4a", 0x000000a5 => "\x5b", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x0000203e => "\xa1", 0x00003001 => "\x44", 0x00003002 => "\x41", 0x0000300c => "\x42", 0x0000300d => "\x43", 0x0000309b => "\xbe", 0x0000309c => "\xbf", 0x000030a1 => "\x47", 0x000030a2 => "\x81", 0x000030a3 => "\x48", 0x000030a4 => "\x82", 0x000030a5 => "\x49", 0x000030a6 => "\x83", 0x000030a7 => "\x51", 0x000030a8 => "\x84", 0x000030a9 => "\x52", 0x000030aa => "\x85", 0x000030ab => "\x86", 0x000030ad => "\x87", 0x000030af => "\x88", 0x000030b1 => "\x89", 0x000030b3 => "\x8a", 0x000030b5 => "\x8c", 0x000030b7 => "\x8d", 0x000030b9 => "\x8e", 0x000030bb => "\x8f", 0x000030bd => "\x90", 0x000030bf => "\x91", 0x000030c1 => "\x92", 0x000030c3 => "\x56", 0x000030c4 => "\x93", 0x000030c6 => "\x94", 0x000030c8 => "\x95", 0x000030ca => "\x96", 0x000030cb => "\x97", 0x000030cc => "\x98", 0x000030cd => "\x99", 0x000030ce => "\x9a", 0x000030cf => "\x9d", 0x000030d2 => "\x9e", 0x000030d5 => "\x9f", 0x000030d8 => "\xa2", 0x000030db => "\xa3", 0x000030de => "\xa4", 0x000030df => "\xa5", 0x000030e0 => "\xa6", 0x000030e1 => "\xa7", 0x000030e2 => "\xa8", 0x000030e3 => "\x53", 0x000030e4 => "\xa9", 0x000030e5 => "\x54", 0x000030e6 => "\xaa", 0x000030e7 => "\x55", 0x000030e8 => "\xac", 0x000030e9 => "\xad", 0x000030ea => "\xae", 0x000030eb => "\xaf", 0x000030ec => "\xba", 0x000030ed => "\xbb", 0x000030ef => "\xbc", 0x000030f2 => "\x46", 0x000030f3 => "\xbd", 0x000030fb => "\x45", 0x000030fc => "\x58", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM290 - Conversion routines for IBM290 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM290. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 alias CP290 alias EBCDIC-JP-KANA Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 00003002 | IDEOGRAPHIC FULL STOP 42 | 0000300C | LEFT CORNER BRACKET 43 | 0000300D | RIGHT CORNER BRACKET 44 | 00003001 | IDEOGRAPHIC COMMA 45 | 000030FB | KATAKANA MIDDLE DOT 46 | 000030F2 | KATAKANA LETTER WO 47 | 000030A1 | KATAKANA LETTER SMALL A 48 | 000030A3 | KATAKANA LETTER SMALL I 49 | 000030A5 | KATAKANA LETTER SMALL U 4A | 000000A3 | POUND SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 000030A7 | KATAKANA LETTER SMALL E 52 | 000030A9 | KATAKANA LETTER SMALL O 53 | 000030E3 | KATAKANA LETTER SMALL YA 54 | 000030E5 | KATAKANA LETTER SMALL YU 55 | 000030E7 | KATAKANA LETTER SMALL YO 56 | 000030C3 | KATAKANA LETTER SMALL TU 58 | 000030FC | KATAKANA-HIRAGANA PROLONGED SOUND MARK 5A | 00000021 | EXCLAMATION MARK 5B | 000000A5 | YEN SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 000030A2 | KATAKANA LETTER A 82 | 000030A4 | KATAKANA LETTER I 83 | 000030A6 | KATAKANA LETTER U 84 | 000030A8 | KATAKANA LETTER E 85 | 000030AA | KATAKANA LETTER O 86 | 000030AB | KATAKANA LETTER KA 87 | 000030AD | KATAKANA LETTER KI 88 | 000030AF | KATAKANA LETTER KU 89 | 000030B1 | KATAKANA LETTER KE 8A | 000030B3 | KATAKANA LETTER KO 8C | 000030B5 | KATAKANA LETTER SA 8D | 000030B7 | KATAKANA LETTER SI 8E | 000030B9 | KATAKANA LETTER SU 8F | 000030BB | KATAKANA LETTER SE 90 | 000030BD | KATAKANA LETTER SO 91 | 000030BF | KATAKANA LETTER TA 92 | 000030C1 | KATAKANA LETTER TI 93 | 000030C4 | KATAKANA LETTER TU 94 | 000030C6 | KATAKANA LETTER TE 95 | 000030C8 | KATAKANA LETTER TO 96 | 000030CA | KATAKANA LETTER NA 97 | 000030CB | KATAKANA LETTER NI 98 | 000030CC | KATAKANA LETTER NU 99 | 000030CD | KATAKANA LETTER NE 9A | 000030CE | KATAKANA LETTER NO 9D | 000030CF | KATAKANA LETTER HA 9E | 000030D2 | KATAKANA LETTER HI 9F | 000030D5 | KATAKANA LETTER HU A1 | 0000203E | OVERLINE A2 | 000030D8 | KATAKANA LETTER HE A3 | 000030DB | KATAKANA LETTER HO A4 | 000030DE | KATAKANA LETTER MA A5 | 000030DF | KATAKANA LETTER MI A6 | 000030E0 | KATAKANA LETTER MU A7 | 000030E1 | KATAKANA LETTER ME A8 | 000030E2 | KATAKANA LETTER MO A9 | 000030E4 | KATAKANA LETTER YA AA | 000030E6 | KATAKANA LETTER YU AC | 000030E8 | KATAKANA LETTER YO AD | 000030E9 | KATAKANA LETTER RA AE | 000030EA | KATAKANA LETTER RI AF | 000030EB | KATAKANA LETTER RU BA | 000030EC | KATAKANA LETTER RE BB | 000030ED | KATAKANA LETTER RO BC | 000030EF | KATAKANA LETTER WA BD | 000030F3 | KATAKANA LETTER N BE | 0000309B | KATAKANA-HIRAGANA VOICED SOUND MARK BF | 0000309C | KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R E0 | 00000024 | DOLLAR SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM297.pm000644 000765 000024 00000065340 12716422333 021473 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM297. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM297; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0040, 0x00e1, 0x00e3, 0x00e5, 0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x007b, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00b5, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x0060, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x005d, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x203e, 0x007e, 0x00b4, 0x00d7, 0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00a6, 0x00fa, 0x00ff, 0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\x40", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\x5c", "\xc3\xb1", "\xc2\xb0", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\x7b", "\xc3\xaa", "\xc3\xab", "\x7d", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\xc2\xa7", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc3\xb9", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc2\xb5", "\x3a", "\xc2\xa3", "\xc3\xa0", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\x5b", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\x60", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\x23", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\x5d", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xe2\x80\xbe", "\x7e", "\xc2\xb4", "\xc3\x97", "\xc3\xa9", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\xc3\xa8", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc2\xa6", "\xc3\xba", "\xc3\xbf", "\xc3\xa7", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\xb1", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x44", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x90", 0x0000005c => "\x48", 0x0000005d => "\xb5", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\xa0", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x51", 0x0000007c => "\xbb", 0x0000007d => "\x54", 0x0000007e => "\xbd", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\x7b", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\xdd", 0x000000a7 => "\x5a", 0x000000a8 => "\xa1", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x4a", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\x79", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x7c", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\xe0", 0x000000e8 => "\xd0", 0x000000e9 => "\xc0", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\x6a", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", 0x0000203e => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM297 - Conversion routines for IBM297 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM297. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP297 alias EBCDIC-CP-FR Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 00000040 | COMMERCIAL AT 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 0000005C | REVERSE SOLIDUS 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000B0 | DEGREE SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 0000007B | LEFT CURLY BRACKET 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 0000007D | RIGHT CURLY BRACKET 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 000000A7 | SECTION SIGN 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 000000B5 | MICRO SIGN 7A | 0000003A | COLON 7B | 000000A3 | POUND SIGN 7C | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 0000005B | LEFT SQUARE BRACKET 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 00000060 | GRAVE ACCENT A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 00000023 | NUMBER SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 0000005D | RIGHT SQUARE BRACKET B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 0000203E | OVERLINE BD | 0000007E | TILDE BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000A6 | BROKEN BAR DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM420.pm000644 000765 000024 00000064127 12716422333 021461 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM420. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM420; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x0651, 0xfe7d, 0x0640, 0xfffd, 0x0621, 0x0622, 0xfe82, 0x0623, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0xfe84, 0x0624, 0xfffd, 0xfffd, 0x0626, 0x0627, 0xfe8e, 0x0628, 0xfe91, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x0629, 0x062a, 0xfe97, 0x062b, 0xfe9b, 0x062c, 0xfe9f, 0x062d, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfea3, 0x062e, 0xfea7, 0x062f, 0x0630, 0x0631, 0x0632, 0x0633, 0xfeb3, 0x060c, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0634, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0xfeb7, 0x0635, 0xfebb, 0x0636, 0xfebf, 0x0637, 0x0638, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0639, 0xfeca, 0xfecb, 0xfecc, 0x063a, 0xfece, 0xfecf, 0x00f7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfed0, 0x0641, 0xfed3, 0x0642, 0xfed7, 0x0643, 0xfedb, 0x0644, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfffd, 0xfffd, 0xfefb, 0xfefc, 0xfedf, 0x0645, 0xfee3, 0x0646, 0xfee7, 0x0647, 0x061b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0xfeeb, 0xfffd, 0xfeec, 0xfffd, 0x0648, 0x061f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0649, 0xfef0, 0x064a, 0xfef2, 0xfef3, 0x0660, 0x00d7, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0661, 0x0662, 0xfffd, 0x0663, 0x0664, 0x0665, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0x0666, 0x0667, 0x0668, 0x0669, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xd9\x91", "\xef\xb9\xbd", "\xd9\x80", "\xef\xbf\xbd", "\xd8\xa1", "\xd8\xa2", "\xef\xba\x82", "\xd8\xa3", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xef\xba\x84", "\xd8\xa4", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\xa6", "\xd8\xa7", "\xef\xba\x8e", "\xd8\xa8", "\xef\xba\x91", "\x21", "\x24", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xd8\xa9", "\xd8\xaa", "\xef\xba\x97", "\xd8\xab", "\xef\xba\x9b", "\xd8\xac", "\xef\xba\x9f", "\xd8\xad", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xba\xa3", "\xd8\xae", "\xef\xba\xa7", "\xd8\xaf", "\xd8\xb0", "\xd8\xb1", "\xd8\xb2", "\xd8\xb3", "\xef\xba\xb3", "\xd8\x8c", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xd8\xb4", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xef\xba\xb7", "\xd8\xb5", "\xef\xba\xbb", "\xd8\xb6", "\xef\xba\xbf", "\xd8\xb7", "\xd8\xb8", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xd8\xb9", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xef\xbb\x8c", "\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xc3\xb7", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbb\x90", "\xd9\x81", "\xef\xbb\x93", "\xd9\x82", "\xef\xbb\x97", "\xd9\x83", "\xef\xbb\x9b", "\xd9\x84", "\xef\xbb\xb5", "\xef\xbb\xb6", "\xef\xbb\xb7", "\xef\xbb\xb8", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbb\xbb", "\xef\xbb\xbc", "\xef\xbb\x9f", "\xd9\x85", "\xef\xbb\xa3", "\xd9\x86", "\xef\xbb\xa7", "\xd9\x87", "\xd8\x9b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xef\xbb\xab", "\xef\xbf\xbd", "\xef\xbb\xac", "\xef\xbf\xbd", "\xd9\x88", "\xd8\x9f", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xd9\x89", "\xef\xbb\xb0", "\xd9\x8a", "\xef\xbb\xb2", "\xef\xbb\xb3", "\xd9\xa0", "\xc3\x97", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xd9\xa1", "\xd9\xa2", "\xef\xbf\xbd", "\xd9\xa3", "\xd9\xa4", "\xd9\xa5", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xd9\xa6", "\xd9\xa7", "\xd9\xa8", "\xd9\xa9", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007c => "\x4f", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a2 => "\x4a", 0x000000a6 => "\x6a", 0x000000ac => "\x5f", 0x000000ad => "\xca", 0x000000d7 => "\xe0", 0x000000f7 => "\xa1", 0x0000060c => "\x79", 0x0000061b => "\xc0", 0x0000061f => "\xd0", 0x00000621 => "\x46", 0x00000622 => "\x47", 0x00000623 => "\x49", 0x00000624 => "\x52", 0x00000626 => "\x55", 0x00000627 => "\x56", 0x00000628 => "\x58", 0x00000629 => "\x62", 0x0000062a => "\x63", 0x0000062b => "\x65", 0x0000062c => "\x67", 0x0000062d => "\x69", 0x0000062e => "\x71", 0x0000062f => "\x73", 0x00000630 => "\x74", 0x00000631 => "\x75", 0x00000632 => "\x76", 0x00000633 => "\x77", 0x00000634 => "\x80", 0x00000635 => "\x8b", 0x00000636 => "\x8d", 0x00000637 => "\x8f", 0x00000638 => "\x90", 0x00000639 => "\x9a", 0x0000063a => "\x9e", 0x00000640 => "\x44", 0x00000641 => "\xab", 0x00000642 => "\xad", 0x00000643 => "\xaf", 0x00000644 => "\xb1", 0x00000645 => "\xbb", 0x00000646 => "\xbd", 0x00000647 => "\xbf", 0x00000648 => "\xcf", 0x00000649 => "\xda", 0x0000064a => "\xdc", 0x00000651 => "\x42", 0x00000660 => "\xdf", 0x00000661 => "\xea", 0x00000662 => "\xeb", 0x00000663 => "\xed", 0x00000664 => "\xee", 0x00000665 => "\xef", 0x00000666 => "\xfb", 0x00000667 => "\xfc", 0x00000668 => "\xfd", 0x00000669 => "\xfe", 0x0000fe7d => "\x43", 0x0000fe82 => "\x48", 0x0000fe84 => "\x51", 0x0000fe8e => "\x57", 0x0000fe91 => "\x59", 0x0000fe97 => "\x64", 0x0000fe9b => "\x66", 0x0000fe9f => "\x68", 0x0000fea3 => "\x70", 0x0000fea7 => "\x72", 0x0000feb3 => "\x78", 0x0000feb7 => "\x8a", 0x0000febb => "\x8c", 0x0000febf => "\x8e", 0x0000feca => "\x9b", 0x0000fecb => "\x9c", 0x0000fecc => "\x9d", 0x0000fece => "\x9f", 0x0000fecf => "\xa0", 0x0000fed0 => "\xaa", 0x0000fed3 => "\xac", 0x0000fed7 => "\xae", 0x0000fedb => "\xb0", 0x0000fedf => "\xba", 0x0000fee3 => "\xbc", 0x0000fee7 => "\xbe", 0x0000feeb => "\xcb", 0x0000feec => "\xcd", 0x0000fef0 => "\xdb", 0x0000fef2 => "\xdd", 0x0000fef3 => "\xde", 0x0000fef5 => "\xb2", 0x0000fef6 => "\xb3", 0x0000fef7 => "\xb4", 0x0000fef8 => "\xb5", 0x0000fefb => "\xb8", 0x0000fefc => "\xb9", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\xd0"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM420 - Conversion routines for IBM420 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM420. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 IBM NLS RM p 11-11 alias CP420 alias EBCDIC-CP-AR1 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 00000651 | ARABIC SHADDA 43 | 0000FE7D | ARABIC SHADDA MEDIAL FORM 44 | 00000640 | ARABIC TATWEEL 46 | 00000621 | ARABIC LETTER HAMZA 47 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE 48 | 0000FE82 | ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM 49 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 0000FE84 | ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM 52 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE 55 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE 56 | 00000627 | ARABIC LETTER ALEF 57 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM 58 | 00000628 | ARABIC LETTER BEH 59 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM 5A | 00000021 | EXCLAMATION MARK 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 00000629 | ARABIC LETTER TEH MARBUTA 63 | 0000062A | ARABIC LETTER TEH 64 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM 65 | 0000062B | ARABIC LETTER THEH 66 | 0000FE9B | ARABIC LETTER THEH INITIAL FORM 67 | 0000062C | ARABIC LETTER JEEM 68 | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM 69 | 0000062D | ARABIC LETTER HAH 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM 71 | 0000062E | ARABIC LETTER KHAH 72 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM 73 | 0000062F | ARABIC LETTER DAL 74 | 00000630 | ARABIC LETTER THAL 75 | 00000631 | ARABIC LETTER REH 76 | 00000632 | ARABIC LETTER ZAIN 77 | 00000633 | ARABIC LETTER SEEN 78 | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM 79 | 0000060C | ARABIC COMMA 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 00000634 | ARABIC LETTER SHEEN 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM 8B | 00000635 | ARABIC LETTER SAD 8C | 0000FEBB | ARABIC LETTER SAD INITIAL FORM 8D | 00000636 | ARABIC LETTER DAD 8E | 0000FEBF | ARABIC LETTER DAD INITIAL FORM 8F | 00000637 | ARABIC LETTER TAH 90 | 00000638 | ARABIC LETTER ZAH 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 00000639 | ARABIC LETTER AIN 9B | 0000FECA | ARABIC LETTER AIN FINAL FORM 9C | 0000FECB | ARABIC LETTER AIN INITIAL FORM 9D | 0000FECC | ARABIC LETTER AIN MEDIAL FORM 9E | 0000063A | ARABIC LETTER GHAIN 9F | 0000FECE | ARABIC LETTER GHAIN FINAL FORM A0 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM A1 | 000000F7 | DIVISION SIGN A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM AB | 00000641 | ARABIC LETTER FEH AC | 0000FED3 | ARABIC LETTER FEH INITIAL FORM AD | 00000642 | ARABIC LETTER QAF AE | 0000FED7 | ARABIC LETTER QAF INITIAL FORM AF | 00000643 | ARABIC LETTER KAF B0 | 0000FEDB | ARABIC LETTER KAF INITIAL FORM B1 | 00000644 | ARABIC LETTER LAM B2 | 0000FEF5 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM B3 | 0000FEF6 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM B4 | 0000FEF7 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM B5 | 0000FEF8 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM B8 | 0000FEFB | ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM B9 | 0000FEFC | ARABIC LIGATURE LAM WITH ALEF FINAL FORM BA | 0000FEDF | ARABIC LETTER LAM INITIAL FORM BB | 00000645 | ARABIC LETTER MEEM BC | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM BD | 00000646 | ARABIC LETTER NOON BE | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM BF | 00000647 | ARABIC LETTER HEH C0 | 0000061B | ARABIC SEMICOLON C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 0000FEEB | ARABIC LETTER HEH INITIAL FORM CD | 0000FEEC | ARABIC LETTER HEH MEDIAL FORM CF | 00000648 | ARABIC LETTER WAW D0 | 0000061F | ARABIC QUESTION MARK D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 00000649 | ARABIC LETTER ALEF MAKSURA DB | 0000FEF0 | ARABIC LETTER ALEF MAKSURA FINAL FORM DC | 0000064A | ARABIC LETTER YEH DD | 0000FEF2 | ARABIC LETTER YEH FINAL FORM DE | 0000FEF3 | ARABIC LETTER YEH INITIAL FORM DF | 00000660 | ARABIC-INDIC DIGIT ZERO E0 | 000000D7 | MULTIPLICATION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 00000661 | ARABIC-INDIC DIGIT ONE EB | 00000662 | ARABIC-INDIC DIGIT TWO ED | 00000663 | ARABIC-INDIC DIGIT THREE EE | 00000664 | ARABIC-INDIC DIGIT FOUR EF | 00000665 | ARABIC-INDIC DIGIT FIVE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FB | 00000666 | ARABIC-INDIC DIGIT SIX FC | 00000667 | ARABIC-INDIC DIGIT SEVEN FD | 00000668 | ARABIC-INDIC DIGIT EIGHT FE | 00000669 | ARABIC-INDIC DIGIT NINE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM423.pm000644 000765 000024 00000064221 12716422334 021460 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM423. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM423; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0xfffd, 0xfffd, 0xfffd, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0x0386, 0x0388, 0x0389, 0xfffd, 0x038a, 0x038c, 0x038e, 0x038f, 0x0060, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022, 0x00c4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x00d6, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x00dc, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0xfffd, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd, 0x03cb, 0x03ce, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x00b8, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xfffd, 0x03c9, 0x00c2, 0x00e0, 0x00e4, 0x00ea, 0x00b4, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b1, 0x00e9, 0x00e8, 0x00eb, 0x00ee, 0x00ef, 0x00b0, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00bd, 0x00f6, 0x00f4, 0x00fb, 0x00f9, 0x00fc, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00ff, 0x00e7, 0x00c7, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xce\xa3", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xce\x86", "\xce\x88", "\xce\x89", "\xef\xbf\xbd", "\xce\x8a", "\xce\x8c", "\xce\x8e", "\xce\x8f", "\x60", "\x3a", "\xc2\xa3", "\xc2\xa7", "\x27", "\x3d", "\x22", "\xc3\x84", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xc3\x96", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xc3\x9c", "\xc2\xa8", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xef\xbf\xbd", "\xce\xac", "\xce\xad", "\xce\xae", "\xcf\x8a", "\xce\xaf", "\xcf\x8c", "\xcf\x8d", "\xcf\x8b", "\xcf\x8e", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xc2\xb8", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xef\xbf\xbd", "\xcf\x89", "\xc3\x82", "\xc3\xa0", "\xc3\xa4", "\xc3\xaa", "\xc2\xb4", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb1", "\xc3\xa9", "\xc3\xa8", "\xc3\xab", "\xc3\xae", "\xc3\xaf", "\xc2\xb0", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xbd", "\xc3\xb6", "\xc3\xb4", "\xc3\xbb", "\xc3\xb9", "\xc3\xbc", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc3\xbf", "\xc3\xa7", "\xc3\x87", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\x7b", 0x000000a7 => "\x7c", 0x000000a8 => "\xa1", 0x000000b0 => "\xe0", 0x000000b1 => "\xda", 0x000000b4 => "\xd0", 0x000000b8 => "\xc0", 0x000000bd => "\xea", 0x000000c2 => "\xcc", 0x000000c4 => "\x80", 0x000000c7 => "\xfc", 0x000000d6 => "\x90", 0x000000dc => "\xa0", 0x000000e0 => "\xcd", 0x000000e4 => "\xce", 0x000000e7 => "\xfb", 0x000000e8 => "\xdc", 0x000000e9 => "\xdb", 0x000000ea => "\xcf", 0x000000eb => "\xdd", 0x000000ee => "\xde", 0x000000ef => "\xdf", 0x000000f4 => "\xec", 0x000000f6 => "\xeb", 0x000000f9 => "\xee", 0x000000fb => "\xed", 0x000000fc => "\xef", 0x000000ff => "\xfa", 0x00000386 => "\x71", 0x00000388 => "\x72", 0x00000389 => "\x73", 0x0000038a => "\x75", 0x0000038c => "\x76", 0x0000038e => "\x77", 0x0000038f => "\x78", 0x00000391 => "\x41", 0x00000392 => "\x42", 0x00000393 => "\x43", 0x00000394 => "\x44", 0x00000395 => "\x45", 0x00000396 => "\x46", 0x00000397 => "\x47", 0x00000398 => "\x48", 0x00000399 => "\x49", 0x0000039a => "\x51", 0x0000039b => "\x52", 0x0000039c => "\x53", 0x0000039d => "\x54", 0x0000039e => "\x55", 0x0000039f => "\x56", 0x000003a0 => "\x57", 0x000003a1 => "\x58", 0x000003a3 => "\x59", 0x000003a4 => "\x62", 0x000003a5 => "\x63", 0x000003a6 => "\x64", 0x000003a7 => "\x65", 0x000003a8 => "\x66", 0x000003a9 => "\x67", 0x000003ac => "\xb1", 0x000003ad => "\xb2", 0x000003ae => "\xb3", 0x000003af => "\xb5", 0x000003b1 => "\x8a", 0x000003b2 => "\x8b", 0x000003b3 => "\x8c", 0x000003b4 => "\x8d", 0x000003b5 => "\x8e", 0x000003b6 => "\x8f", 0x000003b7 => "\x9a", 0x000003b8 => "\x9b", 0x000003b9 => "\x9c", 0x000003ba => "\x9d", 0x000003bb => "\x9e", 0x000003bc => "\x9f", 0x000003bd => "\xaa", 0x000003be => "\xab", 0x000003bf => "\xac", 0x000003c0 => "\xad", 0x000003c1 => "\xae", 0x000003c2 => "\xaf", 0x000003c3 => "\xba", 0x000003c4 => "\xbb", 0x000003c5 => "\xbc", 0x000003c6 => "\xbd", 0x000003c7 => "\xbe", 0x000003c8 => "\xbf", 0x000003c9 => "\xcb", 0x000003ca => "\xb4", 0x000003cb => "\xb8", 0x000003cc => "\xb6", 0x000003cd => "\xb7", 0x000003ce => "\xb9", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM423 - Conversion routines for IBM423 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM423. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP423 alias EBCDIC-CP-GR Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 00000391 | GREEK CAPITAL LETTER ALPHA 42 | 00000392 | GREEK CAPITAL LETTER BETA 43 | 00000393 | GREEK CAPITAL LETTER GAMMA 44 | 00000394 | GREEK CAPITAL LETTER DELTA 45 | 00000395 | GREEK CAPITAL LETTER EPSILON 46 | 00000396 | GREEK CAPITAL LETTER ZETA 47 | 00000397 | GREEK CAPITAL LETTER ETA 48 | 00000398 | GREEK CAPITAL LETTER THETA 49 | 00000399 | GREEK CAPITAL LETTER IOTA 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 0000039A | GREEK CAPITAL LETTER KAPPA 52 | 0000039B | GREEK CAPITAL LETTER LAMDA 53 | 0000039C | GREEK CAPITAL LETTER MU 54 | 0000039D | GREEK CAPITAL LETTER NU 55 | 0000039E | GREEK CAPITAL LETTER XI 56 | 0000039F | GREEK CAPITAL LETTER OMICRON 57 | 000003A0 | GREEK CAPITAL LETTER PI 58 | 000003A1 | GREEK CAPITAL LETTER RHO 59 | 000003A3 | GREEK CAPITAL LETTER SIGMA 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000003A4 | GREEK CAPITAL LETTER TAU 63 | 000003A5 | GREEK CAPITAL LETTER UPSILON 64 | 000003A6 | GREEK CAPITAL LETTER PHI 65 | 000003A7 | GREEK CAPITAL LETTER CHI 66 | 000003A8 | GREEK CAPITAL LETTER PSI 67 | 000003A9 | GREEK CAPITAL LETTER OMEGA 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 71 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS 72 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS 73 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS 75 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS 76 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS 77 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS 78 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 000000A3 | POUND SIGN 7C | 000000A7 | SECTION SIGN 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000003B1 | GREEK SMALL LETTER ALPHA 8B | 000003B2 | GREEK SMALL LETTER BETA 8C | 000003B3 | GREEK SMALL LETTER GAMMA 8D | 000003B4 | GREEK SMALL LETTER DELTA 8E | 000003B5 | GREEK SMALL LETTER EPSILON 8F | 000003B6 | GREEK SMALL LETTER ZETA 90 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000003B7 | GREEK SMALL LETTER ETA 9B | 000003B8 | GREEK SMALL LETTER THETA 9C | 000003B9 | GREEK SMALL LETTER IOTA 9D | 000003BA | GREEK SMALL LETTER KAPPA 9E | 000003BB | GREEK SMALL LETTER LAMDA 9F | 000003BC | GREEK SMALL LETTER MU A0 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS A1 | 000000A8 | DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000003BD | GREEK SMALL LETTER NU AB | 000003BE | GREEK SMALL LETTER XI AC | 000003BF | GREEK SMALL LETTER OMICRON AD | 000003C0 | GREEK SMALL LETTER PI AE | 000003C1 | GREEK SMALL LETTER RHO AF | 000003C2 | GREEK SMALL LETTER FINAL SIGMA B1 | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS B2 | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS B3 | 000003AE | GREEK SMALL LETTER ETA WITH TONOS B4 | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA B5 | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS B6 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS B7 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS B8 | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA B9 | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS BA | 000003C3 | GREEK SMALL LETTER SIGMA BB | 000003C4 | GREEK SMALL LETTER TAU BC | 000003C5 | GREEK SMALL LETTER UPSILON BD | 000003C6 | GREEK SMALL LETTER PHI BE | 000003C7 | GREEK SMALL LETTER CHI BF | 000003C8 | GREEK SMALL LETTER PSI C0 | 000000B8 | CEDILLA C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CB | 000003C9 | GREEK SMALL LETTER OMEGA CC | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX CD | 000000E0 | LATIN SMALL LETTER A WITH GRAVE CE | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS CF | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX D0 | 000000B4 | ACUTE ACCENT D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B1 | PLUS-MINUS SIGN DB | 000000E9 | LATIN SMALL LETTER E WITH ACUTE DC | 000000E8 | LATIN SMALL LETTER E WITH GRAVE DD | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS DE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX DF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS E0 | 000000B0 | DEGREE SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000BD | VULGAR FRACTION ONE HALF EB | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS EC | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX ED | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX EE | 000000F9 | LATIN SMALL LETTER U WITH GRAVE EF | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS FB | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA FC | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM424.pm000644 000765 000024 00000056641 12716422334 021470 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM424. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM424; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c, 0x0026, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac, 0x002d, 0x002f, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0x05ea, 0xfffd, 0xfffd, 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x21d4, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0x00b8, 0xfffd, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ae, 0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x005b, 0x005d, 0x203e, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xd7\x90", "\xd7\x91", "\xd7\x92", "\xd7\x93", "\xd7\x94", "\xd7\x95", "\xd7\x96", "\xd7\x97", "\xd7\x98", "\xc2\xa2", "\x2e", "\x3c", "\x28", "\x2b", "\x7c", "\x26", "\xd7\x99", "\xd7\x9a", "\xd7\x9b", "\xd7\x9c", "\xd7\x9d", "\xd7\x9e", "\xd7\x9f", "\xd7\xa0", "\xd7\xa1", "\x21", "\x24", "\x2a", "\x29", "\x3b", "\xc2\xac", "\x2d", "\x2f", "\xd7\xa2", "\xd7\xa3", "\xd7\xa4", "\xd7\xa5", "\xd7\xa6", "\xd7\xa7", "\xd7\xa8", "\xd7\xa9", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xd7\xaa", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa0", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x87\x94", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb8", "\xef\xbf\xbd", "\xc2\xa4", "\xc2\xb5", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xae", "\x5e", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\x5b", "\x5d", "\xe2\x80\xbe", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x5a", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xba", 0x0000005c => "\xe0", 0x0000005d => "\xbb", 0x0000005e => "\xb0", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x4f", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x74", 0x000000a2 => "\x4a", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000ab => "\x8a", 0x000000ac => "\x5f", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000b0 => "\x90", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000d7 => "\xbf", 0x000000f7 => "\xe1", 0x000005d0 => "\x41", 0x000005d1 => "\x42", 0x000005d2 => "\x43", 0x000005d3 => "\x44", 0x000005d4 => "\x45", 0x000005d5 => "\x46", 0x000005d6 => "\x47", 0x000005d7 => "\x48", 0x000005d8 => "\x49", 0x000005d9 => "\x51", 0x000005da => "\x52", 0x000005db => "\x53", 0x000005dc => "\x54", 0x000005dd => "\x55", 0x000005de => "\x56", 0x000005df => "\x57", 0x000005e0 => "\x58", 0x000005e1 => "\x59", 0x000005e2 => "\x62", 0x000005e3 => "\x63", 0x000005e4 => "\x64", 0x000005e5 => "\x65", 0x000005e6 => "\x66", 0x000005e7 => "\x67", 0x000005e8 => "\x68", 0x000005e9 => "\x69", 0x000005ea => "\x71", 0x0000203e => "\xbc", 0x000021d4 => "\x78", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM424 - Conversion routines for IBM424 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM424. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP424 alias EBCDIC-CP-HE Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000005D0 | HEBREW LETTER ALEF 42 | 000005D1 | HEBREW LETTER BET 43 | 000005D2 | HEBREW LETTER GIMEL 44 | 000005D3 | HEBREW LETTER DALET 45 | 000005D4 | HEBREW LETTER HE 46 | 000005D5 | HEBREW LETTER VAV 47 | 000005D6 | HEBREW LETTER ZAYIN 48 | 000005D7 | HEBREW LETTER HET 49 | 000005D8 | HEBREW LETTER TET 4A | 000000A2 | CENT SIGN 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 0000007C | VERTICAL LINE 50 | 00000026 | AMPERSAND 51 | 000005D9 | HEBREW LETTER YOD 52 | 000005DA | HEBREW LETTER FINAL KAF 53 | 000005DB | HEBREW LETTER KAF 54 | 000005DC | HEBREW LETTER LAMED 55 | 000005DD | HEBREW LETTER FINAL MEM 56 | 000005DE | HEBREW LETTER MEM 57 | 000005DF | HEBREW LETTER FINAL NUN 58 | 000005E0 | HEBREW LETTER NUN 59 | 000005E1 | HEBREW LETTER SAMEKH 5A | 00000021 | EXCLAMATION MARK 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000AC | NOT SIGN 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000005E2 | HEBREW LETTER AYIN 63 | 000005E3 | HEBREW LETTER FINAL PE 64 | 000005E4 | HEBREW LETTER PE 65 | 000005E5 | HEBREW LETTER FINAL TSADI 66 | 000005E6 | HEBREW LETTER TSADI 67 | 000005E7 | HEBREW LETTER QOF 68 | 000005E8 | HEBREW LETTER RESH 69 | 000005E9 | HEBREW LETTER SHIN 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 71 | 000005EA | HEBREW LETTER TAV 74 | 000000A0 | NO-BREAK SPACE 78 | 000021D4 | LEFT RIGHT DOUBLE ARROW 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9D | 000000B8 | CEDILLA 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AF | 000000AE | REGISTERED SIGN B0 | 0000005E | CIRCUMFLEX ACCENT B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 0000005B | LEFT SQUARE BRACKET BB | 0000005D | RIGHT SQUARE BRACKET BC | 0000203E | OVERLINE BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM437.pm000644 000765 000024 00000066224 12716422334 021472 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM437. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM437; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc3\xac", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xbb", "\xc3\xb9", "\xc3\xbf", "\xc3\x96", "\xc3\x9c", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xe2\x82\xa7", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xc3\x9f", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xcf\x86", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000a5 => "\x9d", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b5 => "\xe6", 0x000000b7 => "\xfa", 0x000000ba => "\xa7", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000d1 => "\xa5", 0x000000d6 => "\x99", 0x000000dc => "\x9a", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ec => "\x8d", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000ff => "\x98", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x0000207f => "\xfc", 0x000020a7 => "\x9e", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM437 - Conversion routines for IBM437 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM437. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP437 alias 437 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000A5 | YEN SIGN 9E | 000020A7 | PESETA SIGN 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 000003C6 | GREEK SMALL LETTER PHI EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM500.pm000644 000765 000024 00000065406 12716422334 021462 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM500. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM500; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, 0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\xc3\xb0", "\xc3\xbd", "\xc3\xbe", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\xc3\xa6", "\xc2\xb8", "\xc3\x86", "\xc2\xa4", "\xc2\xb5", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\xc3\x90", "\xc3\x9d", "\xc3\x9e", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xc2\xaf", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\xc3\x96", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\xbb", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000af => "\xbc", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x9e", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\xac", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xae", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\x9c", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x8c", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x8e", 0x000000ff => "\xdf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM500 - Conversion routines for IBM500 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM500. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP500 alias 500 alias 500V1 alias EBCDIC-CP-BE alias EBCDIC-CP-CH Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 000000E6 | LATIN SMALL LETTER AE 9D | 000000B8 | CEDILLA 9E | 000000C6 | LATIN CAPITAL LETTER AE 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 000000AF | MACRON BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM850.pm000644 000765 000024 00000065703 12716422334 021472 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM850. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM850; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc3\xac", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xbb", "\xc3\xb9", "\xc3\xbf", "\xc3\x96", "\xc3\x9c", "\xc3\xb8", "\xc2\xa3", "\xc3\x98", "\xc3\x97", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xc2\xae", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xc3\x81", "\xc3\x82", "\xc3\x80", "\xc2\xa9", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xc2\xa2", "\xc2\xa5", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xc3\xa3", "\xc3\x83", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xc2\xa4", "\xc3\xb0", "\xc3\x90", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc4\xb1", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xc2\xa6", "\xc3\x8c", "\xe2\x96\x80", "\xc3\x93", "\xc3\x9f", "\xc3\x94", "\xc3\x92", "\xc3\xb5", "\xc3\x95", "\xc2\xb5", "\xc3\xbe", "\xc3\x9e", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc3\xbd", "\xc3\x9d", "\xc2\xaf", "\xc2\xb4", "\xc2\xad", "\xc2\xb1", "\xe2\x80\x97", "\xc2\xbe", "\xc2\xb6", "\xc2\xa7", "\xc3\xb7", "\xc2\xb8", "\xc2\xb0", "\xc2\xa8", "\xc2\xb7", "\xc2\xb9", "\xc2\xb3", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a2 => "\xbd", 0x000000a3 => "\x9c", 0x000000a4 => "\xcf", 0x000000a5 => "\xbe", 0x000000a6 => "\xdd", 0x000000a7 => "\xf5", 0x000000a8 => "\xf9", 0x000000a9 => "\xb8", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000ad => "\xf0", 0x000000ae => "\xa9", 0x000000af => "\xee", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b3 => "\xfc", 0x000000b4 => "\xef", 0x000000b5 => "\xe6", 0x000000b6 => "\xf4", 0x000000b7 => "\xfa", 0x000000b8 => "\xf7", 0x000000b9 => "\xfb", 0x000000ba => "\xa7", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000be => "\xf3", 0x000000bf => "\xa8", 0x000000c0 => "\xb7", 0x000000c1 => "\xb5", 0x000000c2 => "\xb6", 0x000000c3 => "\xc7", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c8 => "\xd4", 0x000000c9 => "\x90", 0x000000ca => "\xd2", 0x000000cb => "\xd3", 0x000000cc => "\xde", 0x000000cd => "\xd6", 0x000000ce => "\xd7", 0x000000cf => "\xd8", 0x000000d0 => "\xd1", 0x000000d1 => "\xa5", 0x000000d2 => "\xe3", 0x000000d3 => "\xe0", 0x000000d4 => "\xe2", 0x000000d5 => "\xe5", 0x000000d6 => "\x99", 0x000000d7 => "\x9e", 0x000000d8 => "\x9d", 0x000000d9 => "\xeb", 0x000000da => "\xe9", 0x000000db => "\xea", 0x000000dc => "\x9a", 0x000000dd => "\xed", 0x000000de => "\xe8", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e3 => "\xc6", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ec => "\x8d", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f0 => "\xd0", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f5 => "\xe4", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f8 => "\x9b", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000fd => "\xec", 0x000000fe => "\xe7", 0x000000ff => "\x98", 0x00000131 => "\xd5", 0x00000192 => "\x9f", 0x00002017 => "\xf2", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002554 => "\xc9", 0x00002557 => "\xbb", 0x0000255a => "\xc8", 0x0000255d => "\xbc", 0x00002560 => "\xcc", 0x00002563 => "\xb9", 0x00002566 => "\xcb", 0x00002569 => "\xca", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM850 - Conversion routines for IBM850 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM850. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 source: UNICODE 1.0 alias CP850 alias 850 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE 9C | 000000A3 | POUND SIGN 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 9E | 000000D7 | MULTIPLICATION SIGN 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 000000AE | REGISTERED SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE B6 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX B7 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE B8 | 000000A9 | COPYRIGHT SIGN B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 000000A2 | CENT SIGN BE | 000000A5 | YEN SIGN BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 000000E3 | LATIN SMALL LETTER A WITH TILDE C7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 000000A4 | CURRENCY SIGN D0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) D1 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) D2 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX D3 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS D4 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE D5 | 00000131 | LATIN SMALL LETTER DOTLESS I D6 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE D7 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX D8 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 000000A6 | BROKEN BAR DE | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE DF | 00002580 | UPPER HALF BLOCK E0 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX E3 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE E4 | 000000F5 | LATIN SMALL LETTER O WITH TILDE E5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE E6 | 000000B5 | MICRO SIGN E7 | 000000FE | LATIN SMALL LETTER THORN (Icelandic) E8 | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) E9 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE EA | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX EB | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE EC | 000000FD | LATIN SMALL LETTER Y WITH ACUTE ED | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE EE | 000000AF | MACRON EF | 000000B4 | ACUTE ACCENT F0 | 000000AD | SOFT HYPHEN F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002017 | DOUBLE LOW LINE F3 | 000000BE | VULGAR FRACTION THREE QUARTERS F4 | 000000B6 | PILCROW SIGN F5 | 000000A7 | SECTION SIGN F6 | 000000F7 | DIVISION SIGN F7 | 000000B8 | CEDILLA F8 | 000000B0 | DEGREE SIGN F9 | 000000A8 | DIAERESIS FA | 000000B7 | MIDDLE DOT FB | 000000B9 | SUPERSCRIPT ONE FC | 000000B3 | SUPERSCRIPT THREE FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM851.pm000644 000765 000024 00000065616 12716422334 021476 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM851. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM851; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x0386, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0388, 0x00c4, 0x0389, 0x038a, 0xfffd, 0x038c, 0x00f4, 0x00f6, 0x038e, 0x00fb, 0x00f9, 0x038f, 0x00d6, 0x00dc, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039d, 0x039c, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x00b4, 0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x02db, 0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xce\x86", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xce\x88", "\xc3\x84", "\xce\x89", "\xce\x8a", "\xef\xbf\xbd", "\xce\x8c", "\xc3\xb4", "\xc3\xb6", "\xce\x8e", "\xc3\xbb", "\xc3\xb9", "\xce\x8f", "\xc3\x96", "\xc3\x9c", "\xce\xac", "\xc2\xa3", "\xce\xad", "\xce\xae", "\xce\xaf", "\xcf\x8a", "\xce\x90", "\xcf\x8c", "\xcf\x8d", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xc2\xbd", "\xce\x98", "\xce\x99", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xce\x9a", "\xce\x9b", "\xce\x9d", "\xce\x9c", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xce\x9e", "\xce\x9f", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xce\xa0", "\xce\xa1", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xce\xb4", "\xce\xb5", "\xe2\x96\x80", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x83", "\xcf\x82", "\xcf\x84", "\xc2\xb4", "\xc2\xad", "\xc2\xb1", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xc2\xa7", "\xcf\x88", "\xcb\x9b", "\xc2\xb0", "\xc2\xa8", "\xcf\x89", "\xcf\x8b", "\xce\xb0", "\xcf\x8e", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a3 => "\x9c", 0x000000a7 => "\xf5", 0x000000a8 => "\xf9", 0x000000ab => "\xae", 0x000000ad => "\xf0", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b4 => "\xef", 0x000000bb => "\xaf", 0x000000bd => "\xab", 0x000000c4 => "\x8e", 0x000000c7 => "\x80", 0x000000d6 => "\x99", 0x000000dc => "\x9a", 0x000000e0 => "\x85", 0x000000e2 => "\x83", 0x000000e4 => "\x84", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f4 => "\x93", 0x000000f6 => "\x94", 0x000000f9 => "\x97", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000002db => "\xf7", 0x00000386 => "\x86", 0x00000388 => "\x8d", 0x00000389 => "\x8f", 0x0000038a => "\x90", 0x0000038c => "\x92", 0x0000038e => "\x95", 0x0000038f => "\x98", 0x00000390 => "\xa1", 0x00000391 => "\xa4", 0x00000392 => "\xa5", 0x00000393 => "\xa6", 0x00000394 => "\xa7", 0x00000395 => "\xa8", 0x00000396 => "\xa9", 0x00000397 => "\xaa", 0x00000398 => "\xac", 0x00000399 => "\xad", 0x0000039a => "\xb5", 0x0000039b => "\xb6", 0x0000039c => "\xb8", 0x0000039d => "\xb7", 0x0000039e => "\xbd", 0x0000039f => "\xbe", 0x000003a0 => "\xc6", 0x000003a1 => "\xc7", 0x000003a3 => "\xcf", 0x000003a4 => "\xd0", 0x000003a5 => "\xd1", 0x000003a6 => "\xd2", 0x000003a7 => "\xd3", 0x000003a8 => "\xd4", 0x000003a9 => "\xd5", 0x000003ac => "\x9b", 0x000003ad => "\x9d", 0x000003ae => "\x9e", 0x000003af => "\x9f", 0x000003b0 => "\xfc", 0x000003b1 => "\xd6", 0x000003b2 => "\xd7", 0x000003b3 => "\xd8", 0x000003b4 => "\xdd", 0x000003b5 => "\xde", 0x000003b6 => "\xe0", 0x000003b7 => "\xe1", 0x000003b8 => "\xe2", 0x000003b9 => "\xe3", 0x000003ba => "\xe4", 0x000003bb => "\xe5", 0x000003bc => "\xe6", 0x000003bd => "\xe7", 0x000003be => "\xe8", 0x000003bf => "\xe9", 0x000003c0 => "\xea", 0x000003c1 => "\xeb", 0x000003c2 => "\xed", 0x000003c3 => "\xec", 0x000003c4 => "\xee", 0x000003c5 => "\xf2", 0x000003c6 => "\xf3", 0x000003c7 => "\xf4", 0x000003c8 => "\xf6", 0x000003c9 => "\xfa", 0x000003ca => "\xa0", 0x000003cb => "\xfb", 0x000003cc => "\xa2", 0x000003cd => "\xa3", 0x000003ce => "\xfd", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002554 => "\xc9", 0x00002557 => "\xbb", 0x0000255a => "\xc8", 0x0000255d => "\xbc", 0x00002560 => "\xcc", 0x00002563 => "\xb9", 0x00002566 => "\xcb", 0x00002569 => "\xca", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM851 - Conversion routines for IBM851 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM851. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP851 alias 851 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS 90 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS 92 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS 9C | 000000A3 | POUND SIGN 9D | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS 9E | 000003AE | GREEK SMALL LETTER ETA WITH TONOS 9F | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS A0 | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA A1 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS A2 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS A3 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS A4 | 00000391 | GREEK CAPITAL LETTER ALPHA A5 | 00000392 | GREEK CAPITAL LETTER BETA A6 | 00000393 | GREEK CAPITAL LETTER GAMMA A7 | 00000394 | GREEK CAPITAL LETTER DELTA A8 | 00000395 | GREEK CAPITAL LETTER EPSILON A9 | 00000396 | GREEK CAPITAL LETTER ZETA AA | 00000397 | GREEK CAPITAL LETTER ETA AB | 000000BD | VULGAR FRACTION ONE HALF AC | 00000398 | GREEK CAPITAL LETTER THETA AD | 00000399 | GREEK CAPITAL LETTER IOTA AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 0000039A | GREEK CAPITAL LETTER KAPPA B6 | 0000039B | GREEK CAPITAL LETTER LAMDA B7 | 0000039D | GREEK CAPITAL LETTER NU B8 | 0000039C | GREEK CAPITAL LETTER MU B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000039E | GREEK CAPITAL LETTER XI BE | 0000039F | GREEK CAPITAL LETTER OMICRON BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 000003A0 | GREEK CAPITAL LETTER PI C7 | 000003A1 | GREEK CAPITAL LETTER RHO C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 000003A3 | GREEK CAPITAL LETTER SIGMA D0 | 000003A4 | GREEK CAPITAL LETTER TAU D1 | 000003A5 | GREEK CAPITAL LETTER UPSILON D2 | 000003A6 | GREEK CAPITAL LETTER PHI D3 | 000003A7 | GREEK CAPITAL LETTER CHI D4 | 000003A8 | GREEK CAPITAL LETTER PSI D5 | 000003A9 | GREEK CAPITAL LETTER OMEGA D6 | 000003B1 | GREEK SMALL LETTER ALPHA D7 | 000003B2 | GREEK SMALL LETTER BETA D8 | 000003B3 | GREEK SMALL LETTER GAMMA D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 000003B4 | GREEK SMALL LETTER DELTA DE | 000003B5 | GREEK SMALL LETTER EPSILON DF | 00002580 | UPPER HALF BLOCK E0 | 000003B6 | GREEK SMALL LETTER ZETA E1 | 000003B7 | GREEK SMALL LETTER ETA E2 | 000003B8 | GREEK SMALL LETTER THETA E3 | 000003B9 | GREEK SMALL LETTER IOTA E4 | 000003BA | GREEK SMALL LETTER KAPPA E5 | 000003BB | GREEK SMALL LETTER LAMDA E6 | 000003BC | GREEK SMALL LETTER MU E7 | 000003BD | GREEK SMALL LETTER NU E8 | 000003BE | GREEK SMALL LETTER XI E9 | 000003BF | GREEK SMALL LETTER OMICRON EA | 000003C0 | GREEK SMALL LETTER PI EB | 000003C1 | GREEK SMALL LETTER RHO EC | 000003C3 | GREEK SMALL LETTER SIGMA ED | 000003C2 | GREEK SMALL LETTER FINAL SIGMA EE | 000003C4 | GREEK SMALL LETTER TAU EF | 000000B4 | ACUTE ACCENT F0 | 000000AD | SOFT HYPHEN F1 | 000000B1 | PLUS-MINUS SIGN F2 | 000003C5 | GREEK SMALL LETTER UPSILON F3 | 000003C6 | GREEK SMALL LETTER PHI F4 | 000003C7 | GREEK SMALL LETTER CHI F5 | 000000A7 | SECTION SIGN F6 | 000003C8 | GREEK SMALL LETTER PSI F7 | 000002DB | OGONEK F8 | 000000B0 | DEGREE SIGN F9 | 000000A8 | DIAERESIS FA | 000003C9 | GREEK SMALL LETTER OMEGA FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA FC | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS FD | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM852.pm000644 000765 000024 00000066344 12716422334 021476 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM852. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM852; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7, 0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106, 0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a, 0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e, 0x0118, 0x0119, 0x00ac, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a, 0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce, 0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580, 0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, 0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4, 0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc5\xaf", "\xc4\x87", "\xc3\xa7", "\xc5\x82", "\xc3\xab", "\xc5\x90", "\xc5\x91", "\xc3\xae", "\xc5\xb9", "\xc3\x84", "\xc4\x86", "\xc3\x89", "\xc4\xb9", "\xc4\xba", "\xc3\xb4", "\xc3\xb6", "\xc4\xbd", "\xc4\xbe", "\xc5\x9a", "\xc5\x9b", "\xc3\x96", "\xc3\x9c", "\xc5\xa4", "\xc5\xa5", "\xc5\x81", "\xc3\x97", "\xc4\x8d", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc4\x84", "\xc4\x85", "\xc5\xbd", "\xc5\xbe", "\xc4\x98", "\xc4\x99", "\xc2\xac", "\xc5\xba", "\xc4\x8c", "\xc5\x9f", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xc3\x81", "\xc3\x82", "\xc4\x9a", "\xc5\x9e", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xc5\xbb", "\xc5\xbc", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xc4\x82", "\xc4\x83", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xc2\xa4", "\xc4\x91", "\xc4\x90", "\xc4\x8e", "\xc3\x8b", "\xc4\x8f", "\xc5\x87", "\xc3\x8d", "\xc3\x8e", "\xc4\x9b", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xc5\xa2", "\xc5\xae", "\xe2\x96\x80", "\xc3\x93", "\xc3\x9f", "\xc3\x94", "\xc5\x83", "\xc5\x84", "\xc5\x88", "\xc5\xa0", "\xc5\xa1", "\xc5\x94", "\xc3\x9a", "\xc5\x95", "\xc5\xb0", "\xc3\xbd", "\xc3\x9d", "\xc5\xa3", "\xc2\xb4", "\xc2\xad", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", "\xcb\x98", "\xc2\xa7", "\xc3\xb7", "\xc2\xb8", "\xc2\xb0", "\xc2\xa8", "\xcb\x99", "\xc5\xb1", "\xc5\x98", "\xc5\x99", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a4 => "\xcf", 0x000000a7 => "\xf5", 0x000000a8 => "\xf9", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000ad => "\xf0", 0x000000b0 => "\xf8", 0x000000b4 => "\xef", 0x000000b8 => "\xf7", 0x000000bb => "\xaf", 0x000000c1 => "\xb5", 0x000000c2 => "\xb6", 0x000000c4 => "\x8e", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000cb => "\xd3", 0x000000cd => "\xd6", 0x000000ce => "\xd7", 0x000000d3 => "\xe0", 0x000000d4 => "\xe2", 0x000000d6 => "\x99", 0x000000d7 => "\x9e", 0x000000da => "\xe9", 0x000000dc => "\x9a", 0x000000dd => "\xed", 0x000000df => "\xe1", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e4 => "\x84", 0x000000e7 => "\x87", 0x000000e9 => "\x82", 0x000000eb => "\x89", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000fa => "\xa3", 0x000000fc => "\x81", 0x000000fd => "\xec", 0x00000102 => "\xc6", 0x00000103 => "\xc7", 0x00000104 => "\xa4", 0x00000105 => "\xa5", 0x00000106 => "\x8f", 0x00000107 => "\x86", 0x0000010c => "\xac", 0x0000010d => "\x9f", 0x0000010e => "\xd2", 0x0000010f => "\xd4", 0x00000110 => "\xd1", 0x00000111 => "\xd0", 0x00000118 => "\xa8", 0x00000119 => "\xa9", 0x0000011a => "\xb7", 0x0000011b => "\xd8", 0x00000139 => "\x91", 0x0000013a => "\x92", 0x0000013d => "\x95", 0x0000013e => "\x96", 0x00000141 => "\x9d", 0x00000142 => "\x88", 0x00000143 => "\xe3", 0x00000144 => "\xe4", 0x00000147 => "\xd5", 0x00000148 => "\xe5", 0x00000150 => "\x8a", 0x00000151 => "\x8b", 0x00000154 => "\xe8", 0x00000155 => "\xea", 0x00000158 => "\xfc", 0x00000159 => "\xfd", 0x0000015a => "\x97", 0x0000015b => "\x98", 0x0000015e => "\xb8", 0x0000015f => "\xad", 0x00000160 => "\xe6", 0x00000161 => "\xe7", 0x00000162 => "\xdd", 0x00000163 => "\xee", 0x00000164 => "\x9b", 0x00000165 => "\x9c", 0x0000016e => "\xde", 0x0000016f => "\x85", 0x00000170 => "\xeb", 0x00000171 => "\xfb", 0x00000179 => "\x8d", 0x0000017a => "\xab", 0x0000017b => "\xbd", 0x0000017c => "\xbe", 0x0000017d => "\xa6", 0x0000017e => "\xa7", 0x000002c7 => "\xf3", 0x000002d8 => "\xf4", 0x000002d9 => "\xfa", 0x000002db => "\xf2", 0x000002dd => "\xf1", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002554 => "\xc9", 0x00002557 => "\xbb", 0x0000255a => "\xc8", 0x0000255d => "\xbc", 0x00002560 => "\xcc", 0x00002563 => "\xb9", 0x00002566 => "\xcb", 0x00002569 => "\xca", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM852 - Conversion routines for IBM852 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM852. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP852 alias 852 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE 86 | 00000107 | LATIN SMALL LETTER C WITH ACUTE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 00000142 | LATIN SMALL LETTER L WITH STROKE 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 8B | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE 92 | 0000013A | LATIN SMALL LETTER L WITH ACUTE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 0000013D | LATIN CAPITAL LETTER L WITH CARON 96 | 0000013E | LATIN SMALL LETTER L WITH CARON 97 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE 98 | 0000015B | LATIN SMALL LETTER S WITH ACUTE 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 00000164 | LATIN CAPITAL LETTER T WITH CARON 9C | 00000165 | LATIN SMALL LETTER T WITH CARON 9D | 00000141 | LATIN CAPITAL LETTER L WITH STROKE 9E | 000000D7 | MULTIPLICATION SIGN 9F | 0000010D | LATIN SMALL LETTER C WITH CARON A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A5 | 00000105 | LATIN SMALL LETTER A WITH OGONEK A6 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON A7 | 0000017E | LATIN SMALL LETTER Z WITH CARON A8 | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK A9 | 00000119 | LATIN SMALL LETTER E WITH OGONEK AA | 000000AC | NOT SIGN AB | 0000017A | LATIN SMALL LETTER Z WITH ACUTE AC | 0000010C | LATIN CAPITAL LETTER C WITH CARON AD | 0000015F | LATIN SMALL LETTER S WITH CEDILLA AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE B6 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX B7 | 0000011A | LATIN CAPITAL LETTER E WITH CARON B8 | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE BE | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE C7 | 00000103 | LATIN SMALL LETTER A WITH BREVE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 000000A4 | CURRENCY SIGN D0 | 00000111 | LATIN SMALL LETTER D WITH STROKE D1 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D2 | 0000010E | LATIN CAPITAL LETTER D WITH CARON D3 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS D4 | 0000010F | LATIN SMALL LETTER D WITH CARON D5 | 00000147 | LATIN CAPITAL LETTER N WITH CARON D6 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE D7 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX D8 | 0000011B | LATIN SMALL LETTER E WITH CARON D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA DE | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE DF | 00002580 | UPPER HALF BLOCK E0 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX E3 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE E4 | 00000144 | LATIN SMALL LETTER N WITH ACUTE E5 | 00000148 | LATIN SMALL LETTER N WITH CARON E6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON E7 | 00000161 | LATIN SMALL LETTER S WITH CARON E8 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE E9 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE EA | 00000155 | LATIN SMALL LETTER R WITH ACUTE EB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE EC | 000000FD | LATIN SMALL LETTER Y WITH ACUTE ED | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE EE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA EF | 000000B4 | ACUTE ACCENT F0 | 000000AD | SOFT HYPHEN F1 | 000002DD | DOUBLE ACUTE ACCENT F2 | 000002DB | OGONEK F3 | 000002C7 | CARON (Mandarin Chinese third tone) F4 | 000002D8 | BREVE F5 | 000000A7 | SECTION SIGN F6 | 000000F7 | DIVISION SIGN F7 | 000000B8 | CEDILLA F8 | 000000B0 | DEGREE SIGN F9 | 000000A8 | DIAERESIS FA | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE FC | 00000158 | LATIN CAPITAL LETTER R WITH CARON FD | 00000159 | LATIN SMALL LETTER R WITH CARON FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM855.pm000644 000765 000024 00000065611 12716422334 021475 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM855. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM855; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, 0x0459, 0x0409, 0x045a, 0x040a, 0x045b, 0x040b, 0x045c, 0x040c, 0x045e, 0x040e, 0x045f, 0x040f, 0x044e, 0x042e, 0x044a, 0x042a, 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, 0x0418, 0x2563, 0x2551, 0x2557, 0x255d, 0x0439, 0x0419, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x043a, 0x041a, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 0x043b, 0x041b, 0x043c, 0x041c, 0x043d, 0x041d, 0x043e, 0x041e, 0x043f, 0x2518, 0x250c, 0x2588, 0x2584, 0x041f, 0x044f, 0x2580, 0x042f, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044c, 0x042c, 0x2116, 0x00ad, 0x044b, 0x042b, 0x0437, 0x0417, 0x0448, 0x0428, 0x044d, 0x042d, 0x0449, 0x0429, 0x0447, 0x0427, 0x00a7, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd1\x92", "\xd0\x82", "\xd1\x93", "\xd0\x83", "\xd1\x91", "\xd0\x81", "\xd1\x94", "\xd0\x84", "\xd1\x95", "\xd0\x85", "\xd1\x96", "\xd0\x86", "\xd1\x97", "\xd0\x87", "\xd1\x98", "\xd0\x88", "\xd1\x99", "\xd0\x89", "\xd1\x9a", "\xd0\x8a", "\xd1\x9b", "\xd0\x8b", "\xd1\x9c", "\xd0\x8c", "\xd1\x9e", "\xd0\x8e", "\xd1\x9f", "\xd0\x8f", "\xd1\x8e", "\xd0\xae", "\xd1\x8a", "\xd0\xaa", "\xd0\xb0", "\xd0\x90", "\xd0\xb1", "\xd0\x91", "\xd1\x86", "\xd0\xa6", "\xd0\xb4", "\xd0\x94", "\xd0\xb5", "\xd0\x95", "\xd1\x84", "\xd0\xa4", "\xd0\xb3", "\xd0\x93", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xd1\x85", "\xd0\xa5", "\xd0\xb8", "\xd0\x98", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xd0\xb9", "\xd0\x99", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xd0\xba", "\xd0\x9a", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xc2\xa4", "\xd0\xbb", "\xd0\x9b", "\xd0\xbc", "\xd0\x9c", "\xd0\xbd", "\xd0\x9d", "\xd0\xbe", "\xd0\x9e", "\xd0\xbf", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xd0\x9f", "\xd1\x8f", "\xe2\x96\x80", "\xd0\xaf", "\xd1\x80", "\xd0\xa0", "\xd1\x81", "\xd0\xa1", "\xd1\x82", "\xd0\xa2", "\xd1\x83", "\xd0\xa3", "\xd0\xb6", "\xd0\x96", "\xd0\xb2", "\xd0\x92", "\xd1\x8c", "\xd0\xac", "\xe2\x84\x96", "\xc2\xad", "\xd1\x8b", "\xd0\xab", "\xd0\xb7", "\xd0\x97", "\xd1\x88", "\xd0\xa8", "\xd1\x8d", "\xd0\xad", "\xd1\x89", "\xd0\xa9", "\xd1\x87", "\xd0\xa7", "\xc2\xa7", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a4 => "\xcf", 0x000000a7 => "\xfd", 0x000000ab => "\xae", 0x000000ad => "\xf0", 0x000000bb => "\xaf", 0x00000401 => "\x85", 0x00000402 => "\x81", 0x00000403 => "\x83", 0x00000404 => "\x87", 0x00000405 => "\x89", 0x00000406 => "\x8b", 0x00000407 => "\x8d", 0x00000408 => "\x8f", 0x00000409 => "\x91", 0x0000040a => "\x93", 0x0000040b => "\x95", 0x0000040c => "\x97", 0x0000040e => "\x99", 0x0000040f => "\x9b", 0x00000410 => "\xa1", 0x00000411 => "\xa3", 0x00000412 => "\xec", 0x00000413 => "\xad", 0x00000414 => "\xa7", 0x00000415 => "\xa9", 0x00000416 => "\xea", 0x00000417 => "\xf4", 0x00000418 => "\xb8", 0x00000419 => "\xbe", 0x0000041a => "\xc7", 0x0000041b => "\xd1", 0x0000041c => "\xd3", 0x0000041d => "\xd5", 0x0000041e => "\xd7", 0x0000041f => "\xdd", 0x00000420 => "\xe2", 0x00000421 => "\xe4", 0x00000422 => "\xe6", 0x00000423 => "\xe8", 0x00000424 => "\xab", 0x00000425 => "\xb6", 0x00000426 => "\xa5", 0x00000427 => "\xfc", 0x00000428 => "\xf6", 0x00000429 => "\xfa", 0x0000042a => "\x9f", 0x0000042b => "\xf2", 0x0000042c => "\xee", 0x0000042d => "\xf8", 0x0000042e => "\x9d", 0x0000042f => "\xe0", 0x00000430 => "\xa0", 0x00000431 => "\xa2", 0x00000432 => "\xeb", 0x00000433 => "\xac", 0x00000434 => "\xa6", 0x00000435 => "\xa8", 0x00000436 => "\xe9", 0x00000437 => "\xf3", 0x00000438 => "\xb7", 0x00000439 => "\xbd", 0x0000043a => "\xc6", 0x0000043b => "\xd0", 0x0000043c => "\xd2", 0x0000043d => "\xd4", 0x0000043e => "\xd6", 0x0000043f => "\xd8", 0x00000440 => "\xe1", 0x00000441 => "\xe3", 0x00000442 => "\xe5", 0x00000443 => "\xe7", 0x00000444 => "\xaa", 0x00000445 => "\xb5", 0x00000446 => "\xa4", 0x00000447 => "\xfb", 0x00000448 => "\xf5", 0x00000449 => "\xf9", 0x0000044a => "\x9e", 0x0000044b => "\xf1", 0x0000044c => "\xed", 0x0000044d => "\xf7", 0x0000044e => "\x9c", 0x0000044f => "\xde", 0x00000451 => "\x84", 0x00000452 => "\x80", 0x00000453 => "\x82", 0x00000454 => "\x86", 0x00000455 => "\x88", 0x00000456 => "\x8a", 0x00000457 => "\x8c", 0x00000458 => "\x8e", 0x00000459 => "\x90", 0x0000045a => "\x92", 0x0000045b => "\x94", 0x0000045c => "\x96", 0x0000045e => "\x98", 0x0000045f => "\x9a", 0x00002116 => "\xef", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002554 => "\xc9", 0x00002557 => "\xbb", 0x0000255a => "\xc8", 0x0000255d => "\xbc", 0x00002560 => "\xcc", 0x00002563 => "\xb9", 0x00002566 => "\xcb", 0x00002569 => "\xca", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM855 - Conversion routines for IBM855 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM855. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP855 alias 855 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian) 81 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian) 82 | 00000453 | CYRILLIC SMALL LETTER GJE 83 | 00000403 | CYRILLIC CAPITAL LETTER GJE 84 | 00000451 | CYRILLIC SMALL LETTER IO 85 | 00000401 | CYRILLIC CAPITAL LETTER IO 86 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE 87 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE 88 | 00000455 | CYRILLIC SMALL LETTER DZE 89 | 00000405 | CYRILLIC CAPITAL LETTER DZE 8A | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 8B | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 8C | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian) 8D | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian) 8E | 00000458 | CYRILLIC SMALL LETTER JE 8F | 00000408 | CYRILLIC CAPITAL LETTER JE 90 | 00000459 | CYRILLIC SMALL LETTER LJE 91 | 00000409 | CYRILLIC CAPITAL LETTER LJE 92 | 0000045A | CYRILLIC SMALL LETTER NJE 93 | 0000040A | CYRILLIC CAPITAL LETTER NJE 94 | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian) 95 | 0000040B | CYRILLIC CAPITAL LETTER TSHE 96 | 0000045C | CYRILLIC SMALL LETTER KJE 97 | 0000040C | CYRILLIC CAPITAL LETTER KJE 98 | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian) 99 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) 9A | 0000045F | CYRILLIC SMALL LETTER DZHE 9B | 0000040F | CYRILLIC CAPITAL LETTER DZHE 9C | 0000044E | CYRILLIC SMALL LETTER YU 9D | 0000042E | CYRILLIC CAPITAL LETTER YU 9E | 0000044A | CYRILLIC SMALL LETTER HARD SIGN 9F | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN A0 | 00000430 | CYRILLIC SMALL LETTER A A1 | 00000410 | CYRILLIC CAPITAL LETTER A A2 | 00000431 | CYRILLIC SMALL LETTER BE A3 | 00000411 | CYRILLIC CAPITAL LETTER BE A4 | 00000446 | CYRILLIC SMALL LETTER TSE A5 | 00000426 | CYRILLIC CAPITAL LETTER TSE A6 | 00000434 | CYRILLIC SMALL LETTER DE A7 | 00000414 | CYRILLIC CAPITAL LETTER DE A8 | 00000435 | CYRILLIC SMALL LETTER IE A9 | 00000415 | CYRILLIC CAPITAL LETTER IE AA | 00000444 | CYRILLIC SMALL LETTER EF AB | 00000424 | CYRILLIC CAPITAL LETTER EF AC | 00000433 | CYRILLIC SMALL LETTER GHE AD | 00000413 | CYRILLIC CAPITAL LETTER GHE AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00000445 | CYRILLIC SMALL LETTER HA B6 | 00000425 | CYRILLIC CAPITAL LETTER HA B7 | 00000438 | CYRILLIC SMALL LETTER I B8 | 00000418 | CYRILLIC CAPITAL LETTER I B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 00000439 | CYRILLIC SMALL LETTER SHORT I BE | 00000419 | CYRILLIC CAPITAL LETTER SHORT I BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000043A | CYRILLIC SMALL LETTER KA C7 | 0000041A | CYRILLIC CAPITAL LETTER KA C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 000000A4 | CURRENCY SIGN D0 | 0000043B | CYRILLIC SMALL LETTER EL D1 | 0000041B | CYRILLIC CAPITAL LETTER EL D2 | 0000043C | CYRILLIC SMALL LETTER EM D3 | 0000041C | CYRILLIC CAPITAL LETTER EM D4 | 0000043D | CYRILLIC SMALL LETTER EN D5 | 0000041D | CYRILLIC CAPITAL LETTER EN D6 | 0000043E | CYRILLIC SMALL LETTER O D7 | 0000041E | CYRILLIC CAPITAL LETTER O D8 | 0000043F | CYRILLIC SMALL LETTER PE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000041F | CYRILLIC CAPITAL LETTER PE DE | 0000044F | CYRILLIC SMALL LETTER YA DF | 00002580 | UPPER HALF BLOCK E0 | 0000042F | CYRILLIC CAPITAL LETTER YA E1 | 00000440 | CYRILLIC SMALL LETTER ER E2 | 00000420 | CYRILLIC CAPITAL LETTER ER E3 | 00000441 | CYRILLIC SMALL LETTER ES E4 | 00000421 | CYRILLIC CAPITAL LETTER ES E5 | 00000442 | CYRILLIC SMALL LETTER TE E6 | 00000422 | CYRILLIC CAPITAL LETTER TE E7 | 00000443 | CYRILLIC SMALL LETTER U E8 | 00000423 | CYRILLIC CAPITAL LETTER U E9 | 00000436 | CYRILLIC SMALL LETTER ZHE EA | 00000416 | CYRILLIC CAPITAL LETTER ZHE EB | 00000432 | CYRILLIC SMALL LETTER VE EC | 00000412 | CYRILLIC CAPITAL LETTER VE ED | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN EE | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN EF | 00002116 | NUMERO SIGN F0 | 000000AD | SOFT HYPHEN F1 | 0000044B | CYRILLIC SMALL LETTER YERU F2 | 0000042B | CYRILLIC CAPITAL LETTER YERU F3 | 00000437 | CYRILLIC SMALL LETTER ZE F4 | 00000417 | CYRILLIC CAPITAL LETTER ZE F5 | 00000448 | CYRILLIC SMALL LETTER SHA F6 | 00000428 | CYRILLIC CAPITAL LETTER SHA F7 | 0000044D | CYRILLIC SMALL LETTER E F8 | 0000042D | CYRILLIC CAPITAL LETTER E F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA FA | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FB | 00000447 | CYRILLIC SMALL LETTER CHE FC | 00000427 | CYRILLIC CAPITAL LETTER CHE FD | 000000A7 | SECTION SIGN FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM857.pm000644 000765 000024 00000065321 12716422334 021475 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM857. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM857; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f, 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, 0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8, 0xfffd, 0x00cd, 0x00ce, 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0xfffd, 0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x00af, 0x00b4, 0x00ad, 0x00b1, 0xfffd, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc4\xb1", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xbb", "\xc3\xb9", "\xc4\xb0", "\xc3\x96", "\xc3\x9c", "\xc3\xb8", "\xc2\xa3", "\xc3\x98", "\xc5\x9e", "\xc5\x9f", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc4\x9e", "\xc4\x9f", "\xc2\xbf", "\xc2\xae", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xc3\x81", "\xc3\x82", "\xc3\x80", "\xc2\xa9", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xc2\xa2", "\xc2\xa5", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xc3\xa3", "\xc3\x83", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xc2\xa4", "\xc2\xba", "\xc2\xaa", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xef\xbf\xbd", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xc2\xa6", "\xc3\x8c", "\xe2\x96\x80", "\xc3\x93", "\xc3\x9f", "\xc3\x94", "\xc3\x92", "\xc3\xb5", "\xc3\x95", "\xc2\xb5", "\xef\xbf\xbd", "\xc3\x97", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc3\xac", "\xc3\xbf", "\xc2\xaf", "\xc2\xb4", "\xc2\xad", "\xc2\xb1", "\xef\xbf\xbd", "\xc2\xbe", "\xc2\xb6", "\xc2\xa7", "\xc3\xb7", "\xc2\xb8", "\xc2\xb0", "\xc2\xa8", "\xc2\xb7", "\xc2\xb9", "\xc2\xb3", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a2 => "\xbd", 0x000000a3 => "\x9c", 0x000000a4 => "\xcf", 0x000000a5 => "\xbe", 0x000000a6 => "\xdd", 0x000000a7 => "\xf5", 0x000000a8 => "\xf9", 0x000000a9 => "\xb8", 0x000000aa => "\xd1", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000ad => "\xf0", 0x000000ae => "\xa9", 0x000000af => "\xee", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b3 => "\xfc", 0x000000b4 => "\xef", 0x000000b5 => "\xe6", 0x000000b6 => "\xf4", 0x000000b7 => "\xfa", 0x000000b8 => "\xf7", 0x000000b9 => "\xfb", 0x000000ba => "\xd0", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000be => "\xf3", 0x000000bf => "\xa8", 0x000000c0 => "\xb7", 0x000000c1 => "\xb5", 0x000000c2 => "\xb6", 0x000000c3 => "\xc7", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c8 => "\xd4", 0x000000c9 => "\x90", 0x000000ca => "\xd2", 0x000000cb => "\xd3", 0x000000cc => "\xde", 0x000000cd => "\xd6", 0x000000ce => "\xd7", 0x000000cf => "\xd8", 0x000000d1 => "\xa5", 0x000000d2 => "\xe3", 0x000000d3 => "\xe0", 0x000000d4 => "\xe2", 0x000000d5 => "\xe5", 0x000000d6 => "\x99", 0x000000d7 => "\xe8", 0x000000d8 => "\x9d", 0x000000d9 => "\xeb", 0x000000da => "\xe9", 0x000000db => "\xea", 0x000000dc => "\x9a", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e3 => "\xc6", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ec => "\xec", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f5 => "\xe4", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f8 => "\x9b", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000ff => "\xed", 0x0000011e => "\xa6", 0x0000011f => "\xa7", 0x00000130 => "\x98", 0x00000131 => "\x8d", 0x0000015e => "\x9e", 0x0000015f => "\x9f", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002554 => "\xc9", 0x00002557 => "\xbb", 0x0000255a => "\xc8", 0x0000255d => "\xbc", 0x00002560 => "\xcc", 0x00002563 => "\xb9", 0x00002566 => "\xcb", 0x00002569 => "\xca", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM857 - Conversion routines for IBM857 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM857. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP857 alias 857 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 00000131 | LATIN SMALL LETTER DOTLESS I 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE 9C | 000000A3 | POUND SIGN 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 9E | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA 9F | 0000015F | LATIN SMALL LETTER S WITH CEDILLA A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 0000011E | LATIN CAPITAL LETTER G WITH BREVE A7 | 0000011F | LATIN SMALL LETTER G WITH BREVE A8 | 000000BF | INVERTED QUESTION MARK A9 | 000000AE | REGISTERED SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE B6 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX B7 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE B8 | 000000A9 | COPYRIGHT SIGN B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 000000A2 | CENT SIGN BE | 000000A5 | YEN SIGN BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 000000E3 | LATIN SMALL LETTER A WITH TILDE C7 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 000000A4 | CURRENCY SIGN D0 | 000000BA | MASCULINE ORDINAL INDICATOR D1 | 000000AA | FEMININE ORDINAL INDICATOR D2 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX D3 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS D4 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE D6 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE D7 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX D8 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 000000A6 | BROKEN BAR DE | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE DF | 00002580 | UPPER HALF BLOCK E0 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX E3 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE E4 | 000000F5 | LATIN SMALL LETTER O WITH TILDE E5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE E6 | 000000B5 | MICRO SIGN E8 | 000000D7 | MULTIPLICATION SIGN E9 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE EA | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX EB | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS EE | 000000AF | MACRON EF | 000000B4 | ACUTE ACCENT F0 | 000000AD | SOFT HYPHEN F1 | 000000B1 | PLUS-MINUS SIGN F3 | 000000BE | VULGAR FRACTION THREE QUARTERS F4 | 000000B6 | PILCROW SIGN F5 | 000000A7 | SECTION SIGN F6 | 000000F7 | DIVISION SIGN F7 | 000000B8 | CEDILLA F8 | 000000B0 | DEGREE SIGN F9 | 000000A8 | DIAERESIS FA | 000000B7 | MIDDLE DOT FB | 000000B9 | SUPERSCRIPT ONE FC | 000000B3 | SUPERSCRIPT THREE FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM860.pm000644 000765 000024 00000066275 12716422334 021500 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM860. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM860; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7, 0x00ea, 0x00ca, 0x00e8, 0x00cd, 0x00d4, 0x00ec, 0x00c3, 0x00c2, 0x00c9, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9, 0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d3, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00d2, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa3", "\xc3\xa0", "\xc3\x81", "\xc3\xa7", "\xc3\xaa", "\xc3\x8a", "\xc3\xa8", "\xc3\x8d", "\xc3\x94", "\xc3\xac", "\xc3\x83", "\xc3\x82", "\xc3\x89", "\xc3\x80", "\xc3\x88", "\xc3\xb4", "\xc3\xb5", "\xc3\xb2", "\xc3\x9a", "\xc3\xb9", "\xc3\x8c", "\xc3\x95", "\xc3\x9c", "\xc2\xa2", "\xc2\xa3", "\xc3\x99", "\xe2\x82\xa7", "\xc3\x93", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xc3\x92", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xc3\x9f", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xcf\x86", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b5 => "\xe6", 0x000000b7 => "\xfa", 0x000000ba => "\xa7", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c0 => "\x91", 0x000000c1 => "\x86", 0x000000c2 => "\x8f", 0x000000c3 => "\x8e", 0x000000c7 => "\x80", 0x000000c8 => "\x92", 0x000000c9 => "\x90", 0x000000ca => "\x89", 0x000000cc => "\x98", 0x000000cd => "\x8b", 0x000000d1 => "\xa5", 0x000000d2 => "\xa9", 0x000000d3 => "\x9f", 0x000000d4 => "\x8c", 0x000000d5 => "\x99", 0x000000d9 => "\x9d", 0x000000da => "\x96", 0x000000dc => "\x9a", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e3 => "\x84", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000ec => "\x8d", 0x000000ed => "\xa1", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f5 => "\x94", 0x000000f7 => "\xf6", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fc => "\x81", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x0000207f => "\xfc", 0x000020a7 => "\x9e", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM860 - Conversion routines for IBM860 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM860. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP860 alias 860 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 8C | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE 8E | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 8F | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 92 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F5 | LATIN SMALL LETTER O WITH TILDE 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 99 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE 9E | 000020A7 | PESETA SIGN 9F | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 000003C6 | GREEK SMALL LETTER PHI EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM861.pm000644 000765 000024 00000066352 12716422334 021475 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM861. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM861; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00d0, 0x00f0, 0x00de, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00fe, 0x00fb, 0x00dd, 0x00fd, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00c1, 0x00cd, 0x00d3, 0x00da, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\x90", "\xc3\xb0", "\xc3\x9e", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xbe", "\xc3\xbb", "\xc3\x9d", "\xc3\xbd", "\xc3\x96", "\xc3\x9c", "\xc3\xb8", "\xc2\xa3", "\xc3\x98", "\xe2\x82\xa7", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\x81", "\xc3\x8d", "\xc3\x93", "\xc3\x9a", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xc3\x9f", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xcf\x86", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a3 => "\x9c", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b5 => "\xe6", 0x000000b7 => "\xfa", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c1 => "\xa4", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000cd => "\xa5", 0x000000d0 => "\x8b", 0x000000d3 => "\xa6", 0x000000d6 => "\x99", 0x000000d8 => "\x9d", 0x000000da => "\xa7", 0x000000dc => "\x9a", 0x000000dd => "\x97", 0x000000de => "\x8d", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ed => "\xa1", 0x000000f0 => "\x8c", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f8 => "\x9b", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000fd => "\x98", 0x000000fe => "\x95", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x0000207f => "\xfc", 0x000020a7 => "\x9e", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM861 - Conversion routines for IBM861 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM861. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP861 alias 861 alias CP-IS Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) 8C | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 8D | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE 98 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE 9C | 000000A3 | POUND SIGN 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 9E | 000020A7 | PESETA SIGN 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE A5 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE A6 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE A7 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 000003C6 | GREEK SMALL LETTER PHI EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM862.pm000644 000765 000024 00000065403 12716422334 021472 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM862. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM862; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd7\x90", "\xd7\x91", "\xd7\x92", "\xd7\x93", "\xd7\x94", "\xd7\x95", "\xd7\x96", "\xd7\x97", "\xd7\x98", "\xd7\x99", "\xd7\x9a", "\xd7\x9b", "\xd7\x9c", "\xd7\x9d", "\xd7\x9e", "\xd7\x9f", "\xd7\xa0", "\xd7\xa1", "\xd7\xa2", "\xd7\xa3", "\xd7\xa4", "\xd7\xa5", "\xd7\xa6", "\xd7\xa7", "\xd7\xa8", "\xd7\xa9", "\xd7\xaa", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xe2\x82\xa7", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xc3\x9f", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xcf\x86", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000a5 => "\x9d", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b5 => "\xe6", 0x000000b7 => "\xfa", 0x000000ba => "\xa7", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000d1 => "\xa5", 0x000000df => "\xe1", 0x000000e1 => "\xa0", 0x000000ed => "\xa1", 0x000000f1 => "\xa4", 0x000000f3 => "\xa2", 0x000000f7 => "\xf6", 0x000000fa => "\xa3", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x000005d0 => "\x80", 0x000005d1 => "\x81", 0x000005d2 => "\x82", 0x000005d3 => "\x83", 0x000005d4 => "\x84", 0x000005d5 => "\x85", 0x000005d6 => "\x86", 0x000005d7 => "\x87", 0x000005d8 => "\x88", 0x000005d9 => "\x89", 0x000005da => "\x8a", 0x000005db => "\x8b", 0x000005dc => "\x8c", 0x000005dd => "\x8d", 0x000005de => "\x8e", 0x000005df => "\x8f", 0x000005e0 => "\x90", 0x000005e1 => "\x91", 0x000005e2 => "\x92", 0x000005e3 => "\x93", 0x000005e4 => "\x94", 0x000005e5 => "\x95", 0x000005e6 => "\x96", 0x000005e7 => "\x97", 0x000005e8 => "\x98", 0x000005e9 => "\x99", 0x000005ea => "\x9a", 0x0000207f => "\xfc", 0x000020a7 => "\x9e", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM862 - Conversion routines for IBM862 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM862. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP862 alias 862 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000005D0 | HEBREW LETTER ALEF 81 | 000005D1 | HEBREW LETTER BET 82 | 000005D2 | HEBREW LETTER GIMEL 83 | 000005D3 | HEBREW LETTER DALET 84 | 000005D4 | HEBREW LETTER HE 85 | 000005D5 | HEBREW LETTER VAV 86 | 000005D6 | HEBREW LETTER ZAYIN 87 | 000005D7 | HEBREW LETTER HET 88 | 000005D8 | HEBREW LETTER TET 89 | 000005D9 | HEBREW LETTER YOD 8A | 000005DA | HEBREW LETTER FINAL KAF 8B | 000005DB | HEBREW LETTER KAF 8C | 000005DC | HEBREW LETTER LAMED 8D | 000005DD | HEBREW LETTER FINAL MEM 8E | 000005DE | HEBREW LETTER MEM 8F | 000005DF | HEBREW LETTER FINAL NUN 90 | 000005E0 | HEBREW LETTER NUN 91 | 000005E1 | HEBREW LETTER SAMEKH 92 | 000005E2 | HEBREW LETTER AYIN 93 | 000005E3 | HEBREW LETTER FINAL PE 94 | 000005E4 | HEBREW LETTER PE 95 | 000005E5 | HEBREW LETTER FINAL TSADI 96 | 000005E6 | HEBREW LETTER TSADI 97 | 000005E7 | HEBREW LETTER QOF 98 | 000005E8 | HEBREW LETTER RESH 99 | 000005E9 | HEBREW LETTER SHIN 9A | 000005EA | HEBREW LETTER TAV 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000A5 | YEN SIGN 9E | 000020A7 | PESETA SIGN 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 000003C6 | GREEK SMALL LETTER PHI EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM863.pm000644 000765 000024 00000066103 12716422334 021471 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM863. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM863; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00c2, 0x00e0, 0x00b6, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x2017, 0x00c0, 0x00a7, 0x00c9, 0x00c8, 0x00ca, 0x00f4, 0x00cb, 0x00cf, 0x00fb, 0x00f9, 0x00a4, 0x00d4, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x00db, 0x0192, 0x00a6, 0x00b4, 0x00f3, 0x00fa, 0x00a8, 0x00b8, 0x00b3, 0x00af, 0x00ce, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00be, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\x82", "\xc3\xa0", "\xc2\xb6", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xe2\x80\x97", "\xc3\x80", "\xc2\xa7", "\xc3\x89", "\xc3\x88", "\xc3\x8a", "\xc3\xb4", "\xc3\x8b", "\xc3\x8f", "\xc3\xbb", "\xc3\xb9", "\xc2\xa4", "\xc3\x94", "\xc3\x9c", "\xc2\xa2", "\xc2\xa3", "\xc3\x99", "\xc3\x9b", "\xc6\x92", "\xc2\xa6", "\xc2\xb4", "\xc3\xb3", "\xc3\xba", "\xc2\xa8", "\xc2\xb8", "\xc2\xb3", "\xc2\xaf", "\xc3\x8e", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xbe", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xc3\x9f", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xcf\x86", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a2 => "\x9b", 0x000000a3 => "\x9c", 0x000000a4 => "\x98", 0x000000a6 => "\xa0", 0x000000a7 => "\x8f", 0x000000a8 => "\xa4", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000af => "\xa7", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b3 => "\xa6", 0x000000b4 => "\xa1", 0x000000b5 => "\xe6", 0x000000b6 => "\x86", 0x000000b7 => "\xfa", 0x000000b8 => "\xa5", 0x000000bb => "\xaf", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000be => "\xad", 0x000000c0 => "\x8e", 0x000000c2 => "\x84", 0x000000c7 => "\x80", 0x000000c8 => "\x91", 0x000000c9 => "\x90", 0x000000ca => "\x92", 0x000000cb => "\x94", 0x000000ce => "\xa8", 0x000000cf => "\x95", 0x000000d4 => "\x99", 0x000000d9 => "\x9d", 0x000000db => "\x9e", 0x000000dc => "\x9a", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e2 => "\x83", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f7 => "\xf6", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x00002017 => "\x8d", 0x0000207f => "\xfc", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM863 - Conversion routines for IBM863 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM863. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 alias CP863 alias 863 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000B6 | PILCROW SIGN 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 00002017 | DOUBLE LOW LINE 8E | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 8F | 000000A7 | SECTION SIGN 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 92 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 95 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000A4 | CURRENCY SIGN 99 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000A2 | CENT SIGN 9C | 000000A3 | POUND SIGN 9D | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE 9E | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000A6 | BROKEN BAR A1 | 000000B4 | ACUTE ACCENT A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000A8 | DIAERESIS A5 | 000000B8 | CEDILLA A6 | 000000B3 | SUPERSCRIPT THREE A7 | 000000AF | MACRON A8 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000BE | VULGAR FRACTION THREE QUARTERS AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 000003C6 | GREEK SMALL LETTER PHI EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM864.pm000644 000765 000024 00000065254 12716422334 021500 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM864. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM864; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x066a, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00b0, 0x00b7, 0x2219, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c, 0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518, 0x03b2, 0x221e, 0x03c6, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab, 0x00bb, 0xfef7, 0xfef8, 0xfffd, 0xfffd, 0xfefb, 0xfefc, 0xfffd, 0x00a0, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84, 0xfffd, 0xfffd, 0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 0x060c, 0xfe9d, 0xfea1, 0xfea5, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0xfed1, 0x061b, 0xfeb1, 0xfeb5, 0xfeb9, 0x061f, 0x00a2, 0xfe80, 0xfe81, 0xfe83, 0xfe85, 0xfeca, 0xfe8b, 0xfe8d, 0xfe91, 0xfe93, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0xfea9, 0xfeab, 0xfead, 0xfeaf, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0xfec1, 0xfec5, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0xfec9, 0x0640, 0xfed3, 0xfed7, 0xfedb, 0xfedf, 0xfee3, 0xfee7, 0xfeeb, 0xfeed, 0xfeef, 0xfef3, 0xfebd, 0xfecc, 0xfece, 0xfecd, 0xfee1, 0xfe7d, 0x0651, 0xfee5, 0xfee9, 0xfeec, 0xfef0, 0xfef2, 0xfed0, 0xfed5, 0xfef5, 0xfef6, 0xfedd, 0xfed9, 0xfef1, 0x25a0, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\xd9\xaa", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\xb0", "\xc2\xb7", "\xe2\x88\x99", "\xe2\x88\x9a", "\xe2\x96\x92", "\xe2\x94\x80", "\xe2\x94\x82", "\xe2\x94\xbc", "\xe2\x94\xa4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\xb4", "\xe2\x94\x90", "\xe2\x94\x8c", "\xe2\x94\x94", "\xe2\x94\x98", "\xce\xb2", "\xe2\x88\x9e", "\xcf\x86", "\xc2\xb1", "\xc2\xbd", "\xc2\xbc", "\xe2\x89\x88", "\xc2\xab", "\xc2\xbb", "\xef\xbb\xb7", "\xef\xbb\xb8", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbb\xbb", "\xef\xbb\xbc", "\xef\xbf\xbd", "\xc2\xa0", "\xc2\xad", "\xef\xba\x82", "\xc2\xa3", "\xc2\xa4", "\xef\xba\x84", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xba\x8e", "\xef\xba\x8f", "\xef\xba\x95", "\xef\xba\x99", "\xd8\x8c", "\xef\xba\x9d", "\xef\xba\xa1", "\xef\xba\xa5", "\xd9\xa0", "\xd9\xa1", "\xd9\xa2", "\xd9\xa3", "\xd9\xa4", "\xd9\xa5", "\xd9\xa6", "\xd9\xa7", "\xd9\xa8", "\xd9\xa9", "\xef\xbb\x91", "\xd8\x9b", "\xef\xba\xb1", "\xef\xba\xb5", "\xef\xba\xb9", "\xd8\x9f", "\xc2\xa2", "\xef\xba\x80", "\xef\xba\x81", "\xef\xba\x83", "\xef\xba\x85", "\xef\xbb\x8a", "\xef\xba\x8b", "\xef\xba\x8d", "\xef\xba\x91", "\xef\xba\x93", "\xef\xba\x97", "\xef\xba\x9b", "\xef\xba\x9f", "\xef\xba\xa3", "\xef\xba\xa7", "\xef\xba\xa9", "\xef\xba\xab", "\xef\xba\xad", "\xef\xba\xaf", "\xef\xba\xb3", "\xef\xba\xb7", "\xef\xba\xbb", "\xef\xba\xbf", "\xef\xbb\x81", "\xef\xbb\x85", "\xef\xbb\x8b", "\xef\xbb\x8f", "\xc2\xa6", "\xc2\xac", "\xc3\xb7", "\xc3\x97", "\xef\xbb\x89", "\xd9\x80", "\xef\xbb\x93", "\xef\xbb\x97", "\xef\xbb\x9b", "\xef\xbb\x9f", "\xef\xbb\xa3", "\xef\xbb\xa7", "\xef\xbb\xab", "\xef\xbb\xad", "\xef\xbb\xaf", "\xef\xbb\xb3", "\xef\xba\xbd", "\xef\xbb\x8c", "\xef\xbb\x8e", "\xef\xbb\x8d", "\xef\xbb\xa1", "\xef\xb9\xbd", "\xd9\x91", "\xef\xbb\xa5", "\xef\xbb\xa9", "\xef\xbb\xac", "\xef\xbb\xb0", "\xef\xbb\xb2", "\xef\xbb\x90", "\xef\xbb\x95", "\xef\xbb\xb5", "\xef\xbb\xb6", "\xef\xbb\x9d", "\xef\xbb\x99", "\xef\xbb\xb1", "\xe2\x96\xa0", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a2 => "\xc0", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a6 => "\xdb", 0x000000ab => "\x97", 0x000000ac => "\xdc", 0x000000ad => "\xa1", 0x000000b0 => "\x80", 0x000000b1 => "\x93", 0x000000b7 => "\x81", 0x000000bb => "\x98", 0x000000bc => "\x95", 0x000000bd => "\x94", 0x000000d7 => "\xde", 0x000000f7 => "\xdd", 0x000003b2 => "\x90", 0x000003c6 => "\x92", 0x0000060c => "\xac", 0x0000061b => "\xbb", 0x0000061f => "\xbf", 0x00000640 => "\xe0", 0x00000651 => "\xf1", 0x00000660 => "\xb0", 0x00000661 => "\xb1", 0x00000662 => "\xb2", 0x00000663 => "\xb3", 0x00000664 => "\xb4", 0x00000665 => "\xb5", 0x00000666 => "\xb6", 0x00000667 => "\xb7", 0x00000668 => "\xb8", 0x00000669 => "\xb9", 0x0000066a => "\x25", 0x00002219 => "\x82", 0x0000221a => "\x83", 0x0000221e => "\x91", 0x00002248 => "\x96", 0x00002500 => "\x85", 0x00002502 => "\x86", 0x0000250c => "\x8d", 0x00002510 => "\x8c", 0x00002514 => "\x8e", 0x00002518 => "\x8f", 0x0000251c => "\x8a", 0x00002524 => "\x88", 0x0000252c => "\x89", 0x00002534 => "\x8b", 0x0000253c => "\x87", 0x00002592 => "\x84", 0x000025a0 => "\xfe", 0x0000fe7d => "\xf0", 0x0000fe80 => "\xc1", 0x0000fe81 => "\xc2", 0x0000fe82 => "\xa2", 0x0000fe83 => "\xc3", 0x0000fe84 => "\xa5", 0x0000fe85 => "\xc4", 0x0000fe8b => "\xc6", 0x0000fe8d => "\xc7", 0x0000fe8e => "\xa8", 0x0000fe8f => "\xa9", 0x0000fe91 => "\xc8", 0x0000fe93 => "\xc9", 0x0000fe95 => "\xaa", 0x0000fe97 => "\xca", 0x0000fe99 => "\xab", 0x0000fe9b => "\xcb", 0x0000fe9d => "\xad", 0x0000fe9f => "\xcc", 0x0000fea1 => "\xae", 0x0000fea3 => "\xcd", 0x0000fea5 => "\xaf", 0x0000fea7 => "\xce", 0x0000fea9 => "\xcf", 0x0000feab => "\xd0", 0x0000fead => "\xd1", 0x0000feaf => "\xd2", 0x0000feb1 => "\xbc", 0x0000feb3 => "\xd3", 0x0000feb5 => "\xbd", 0x0000feb7 => "\xd4", 0x0000feb9 => "\xbe", 0x0000febb => "\xd5", 0x0000febd => "\xeb", 0x0000febf => "\xd6", 0x0000fec1 => "\xd7", 0x0000fec5 => "\xd8", 0x0000fec9 => "\xdf", 0x0000feca => "\xc5", 0x0000fecb => "\xd9", 0x0000fecc => "\xec", 0x0000fecd => "\xee", 0x0000fece => "\xed", 0x0000fecf => "\xda", 0x0000fed0 => "\xf7", 0x0000fed1 => "\xba", 0x0000fed3 => "\xe1", 0x0000fed5 => "\xf8", 0x0000fed7 => "\xe2", 0x0000fed9 => "\xfc", 0x0000fedb => "\xe3", 0x0000fedd => "\xfb", 0x0000fedf => "\xe4", 0x0000fee1 => "\xef", 0x0000fee3 => "\xe5", 0x0000fee5 => "\xf2", 0x0000fee7 => "\xe6", 0x0000fee9 => "\xf3", 0x0000feeb => "\xe7", 0x0000feec => "\xf4", 0x0000feed => "\xe8", 0x0000feef => "\xe9", 0x0000fef0 => "\xf5", 0x0000fef1 => "\xfd", 0x0000fef2 => "\xf6", 0x0000fef3 => "\xea", 0x0000fef5 => "\xf9", 0x0000fef6 => "\xfa", 0x0000fef7 => "\x99", 0x0000fef8 => "\x9a", 0x0000fefb => "\x9d", 0x0000fefc => "\x9e", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM864 - Conversion routines for IBM864 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM864. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB alias CP864 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 0000066A | ARABIC PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 000000B0 | DEGREE SIGN 81 | 000000B7 | MIDDLE DOT 82 | 00002219 | BULLET OPERATOR 83 | 0000221A | SQUARE ROOT 84 | 00002592 | MEDIUM SHADE 85 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL 86 | 00002502 | BOX DRAWINGS LIGHT VERTICAL 87 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 88 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT 89 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 8A | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT 8B | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL 8C | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT 8D | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT 8E | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT 8F | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT 90 | 000003B2 | GREEK SMALL LETTER BETA 91 | 0000221E | INFINITY 92 | 000003C6 | GREEK SMALL LETTER PHI 93 | 000000B1 | PLUS-MINUS SIGN 94 | 000000BD | VULGAR FRACTION ONE HALF 95 | 000000BC | VULGAR FRACTION ONE QUARTER 96 | 00002248 | ALMOST EQUAL TO 97 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 98 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 99 | 0000FEF7 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM 9A | 0000FEF8 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM 9D | 0000FEFB | ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM 9E | 0000FEFC | ARABIC LIGATURE LAM WITH ALEF FINAL FORM A0 | 000000A0 | NO-BREAK SPACE A1 | 000000AD | SOFT HYPHEN A2 | 0000FE82 | ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 0000FE84 | ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM A8 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM A9 | 0000FE8F | ARABIC LETTER BEH ISOLATED FORM AA | 0000FE95 | ARABIC LETTER TEH ISOLATED FORM AB | 0000FE99 | ARABIC LETTER THEH ISOLATED FORM AC | 0000060C | ARABIC COMMA AD | 0000FE9D | ARABIC LETTER JEEM ISOLATED FORM AE | 0000FEA1 | ARABIC LETTER HAH ISOLATED FORM AF | 0000FEA5 | ARABIC LETTER KHAH ISOLATED FORM B0 | 00000660 | ARABIC-INDIC DIGIT ZERO B1 | 00000661 | ARABIC-INDIC DIGIT ONE B2 | 00000662 | ARABIC-INDIC DIGIT TWO B3 | 00000663 | ARABIC-INDIC DIGIT THREE B4 | 00000664 | ARABIC-INDIC DIGIT FOUR B5 | 00000665 | ARABIC-INDIC DIGIT FIVE B6 | 00000666 | ARABIC-INDIC DIGIT SIX B7 | 00000667 | ARABIC-INDIC DIGIT SEVEN B8 | 00000668 | ARABIC-INDIC DIGIT EIGHT B9 | 00000669 | ARABIC-INDIC DIGIT NINE BA | 0000FED1 | ARABIC LETTER FEH ISOLATED FORM BB | 0000061B | ARABIC SEMICOLON BC | 0000FEB1 | ARABIC LETTER SEEN ISOLATED FORM BD | 0000FEB5 | ARABIC LETTER SHEEN ISOLATED FORM BE | 0000FEB9 | ARABIC LETTER SAD ISOLATED FORM BF | 0000061F | ARABIC QUESTION MARK C0 | 000000A2 | CENT SIGN C1 | 0000FE80 | ARABIC LETTER HAMZA ISOLATED FORM C2 | 0000FE81 | ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM C3 | 0000FE83 | ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM C4 | 0000FE85 | ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM C5 | 0000FECA | ARABIC LETTER AIN FINAL FORM C6 | 0000FE8B | ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM C7 | 0000FE8D | ARABIC LETTER ALEF ISOLATED FORM C8 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM C9 | 0000FE93 | ARABIC LETTER TEH MARBUTA ISOLATED FORM CA | 0000FE97 | ARABIC LETTER TEH INITIAL FORM CB | 0000FE9B | ARABIC LETTER THEH INITIAL FORM CC | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM CD | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM CE | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM CF | 0000FEA9 | ARABIC LETTER DAL ISOLATED FORM D0 | 0000FEAB | ARABIC LETTER THAL ISOLATED FORM D1 | 0000FEAD | ARABIC LETTER REH ISOLATED FORM D2 | 0000FEAF | ARABIC LETTER ZAIN ISOLATED FORM D3 | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM D4 | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM D5 | 0000FEBB | ARABIC LETTER SAD INITIAL FORM D6 | 0000FEBF | ARABIC LETTER DAD INITIAL FORM D7 | 0000FEC1 | ARABIC LETTER TAH ISOLATED FORM D8 | 0000FEC5 | ARABIC LETTER ZAH ISOLATED FORM D9 | 0000FECB | ARABIC LETTER AIN INITIAL FORM DA | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM DB | 000000A6 | BROKEN BAR DC | 000000AC | NOT SIGN DD | 000000F7 | DIVISION SIGN DE | 000000D7 | MULTIPLICATION SIGN DF | 0000FEC9 | ARABIC LETTER AIN ISOLATED FORM E0 | 00000640 | ARABIC TATWEEL E1 | 0000FED3 | ARABIC LETTER FEH INITIAL FORM E2 | 0000FED7 | ARABIC LETTER QAF INITIAL FORM E3 | 0000FEDB | ARABIC LETTER KAF INITIAL FORM E4 | 0000FEDF | ARABIC LETTER LAM INITIAL FORM E5 | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM E6 | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM E7 | 0000FEEB | ARABIC LETTER HEH INITIAL FORM E8 | 0000FEED | ARABIC LETTER WAW ISOLATED FORM E9 | 0000FEEF | ARABIC LETTER ALEF MAKSURA ISOLATED FORM EA | 0000FEF3 | ARABIC LETTER YEH INITIAL FORM EB | 0000FEBD | ARABIC LETTER DAD ISOLATED FORM EC | 0000FECC | ARABIC LETTER AIN MEDIAL FORM ED | 0000FECE | ARABIC LETTER GHAIN FINAL FORM EE | 0000FECD | ARABIC LETTER GHAIN ISOLATED FORM EF | 0000FEE1 | ARABIC LETTER MEEM ISOLATED FORM F0 | 0000FE7D | ARABIC SHADDA MEDIAL FORM F1 | 00000651 | ARABIC SHADDA F2 | 0000FEE5 | ARABIC LETTER NOON ISOLATED FORM F3 | 0000FEE9 | ARABIC LETTER HEH ISOLATED FORM F4 | 0000FEEC | ARABIC LETTER HEH MEDIAL FORM F5 | 0000FEF0 | ARABIC LETTER ALEF MAKSURA FINAL FORM F6 | 0000FEF2 | ARABIC LETTER YEH FINAL FORM F7 | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM F8 | 0000FED5 | ARABIC LETTER QAF ISOLATED FORM F9 | 0000FEF5 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM FA | 0000FEF6 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM FB | 0000FEDD | ARABIC LETTER LAM ISOLATED FORM FC | 0000FED9 | ARABIC LETTER KAF ISOLATED FORM FD | 0000FEF1 | ARABIC LETTER YEH ISOLATED FORM FE | 000025A0 | BLACK SQUARE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM865.pm000644 000765 000024 00000066256 12716422334 021504 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM865. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM865; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x87", "\xc3\xbc", "\xc3\xa9", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa5", "\xc3\xa7", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xaf", "\xc3\xae", "\xc3\xac", "\xc3\x84", "\xc3\x85", "\xc3\x89", "\xc3\xa6", "\xc3\x86", "\xc3\xb4", "\xc3\xb6", "\xc3\xb2", "\xc3\xbb", "\xc3\xb9", "\xc3\xbf", "\xc3\x96", "\xc3\x9c", "\xc3\xb8", "\xc2\xa3", "\xc3\x98", "\xe2\x82\xa7", "\xc6\x92", "\xc3\xa1", "\xc3\xad", "\xc3\xb3", "\xc3\xba", "\xc3\xb1", "\xc3\x91", "\xc2\xaa", "\xc2\xba", "\xc2\xbf", "\xe2\x8c\x90", "\xc2\xac", "\xc2\xbd", "\xc2\xbc", "\xc2\xa1", "\xc2\xab", "\xc2\xa4", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xce\xb1", "\xc3\x9f", "\xce\x93", "\xcf\x80", "\xce\xa3", "\xcf\x83", "\xc2\xb5", "\xcf\x84", "\xce\xa6", "\xce\x98", "\xce\xa9", "\xce\xb4", "\xe2\x88\x9e", "\xcf\x86", "\xce\xb5", "\xe2\x88\xa9", "\xe2\x89\xa1", "\xc2\xb1", "\xe2\x89\xa5", "\xe2\x89\xa4", "\xe2\x8c\xa0", "\xe2\x8c\xa1", "\xc3\xb7", "\xe2\x89\x88", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x81\xbf", "\xc2\xb2", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a1 => "\xad", 0x000000a3 => "\x9c", 0x000000a4 => "\xaf", 0x000000aa => "\xa6", 0x000000ab => "\xae", 0x000000ac => "\xaa", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\xfd", 0x000000b5 => "\xe6", 0x000000b7 => "\xfa", 0x000000ba => "\xa7", 0x000000bc => "\xac", 0x000000bd => "\xab", 0x000000bf => "\xa8", 0x000000c4 => "\x8e", 0x000000c5 => "\x8f", 0x000000c6 => "\x92", 0x000000c7 => "\x80", 0x000000c9 => "\x90", 0x000000d1 => "\xa5", 0x000000d6 => "\x99", 0x000000d8 => "\x9d", 0x000000dc => "\x9a", 0x000000df => "\xe1", 0x000000e0 => "\x85", 0x000000e1 => "\xa0", 0x000000e2 => "\x83", 0x000000e4 => "\x84", 0x000000e5 => "\x86", 0x000000e6 => "\x91", 0x000000e7 => "\x87", 0x000000e8 => "\x8a", 0x000000e9 => "\x82", 0x000000ea => "\x88", 0x000000eb => "\x89", 0x000000ec => "\x8d", 0x000000ed => "\xa1", 0x000000ee => "\x8c", 0x000000ef => "\x8b", 0x000000f1 => "\xa4", 0x000000f2 => "\x95", 0x000000f3 => "\xa2", 0x000000f4 => "\x93", 0x000000f6 => "\x94", 0x000000f7 => "\xf6", 0x000000f8 => "\x9b", 0x000000f9 => "\x97", 0x000000fa => "\xa3", 0x000000fb => "\x96", 0x000000fc => "\x81", 0x000000ff => "\x98", 0x00000192 => "\x9f", 0x00000393 => "\xe2", 0x00000398 => "\xe9", 0x000003a3 => "\xe4", 0x000003a6 => "\xe8", 0x000003a9 => "\xea", 0x000003b1 => "\xe0", 0x000003b4 => "\xeb", 0x000003b5 => "\xee", 0x000003c0 => "\xe3", 0x000003c3 => "\xe5", 0x000003c4 => "\xe7", 0x000003c6 => "\xed", 0x0000207f => "\xfc", 0x000020a7 => "\x9e", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x0000221e => "\xec", 0x00002229 => "\xef", 0x00002248 => "\xf7", 0x00002261 => "\xf0", 0x00002264 => "\xf3", 0x00002265 => "\xf2", 0x00002310 => "\xa9", 0x00002320 => "\xf4", 0x00002321 => "\xf5", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM865 - Conversion routines for IBM865 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM865. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987) alias CP865 alias 865 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 81 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS 82 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 83 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 84 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 85 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 86 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 87 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 88 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 89 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 8A | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 8B | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 8C | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 8D | 000000EC | LATIN SMALL LETTER I WITH GRAVE 8E | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 8F | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 90 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 91 | 000000E6 | LATIN SMALL LETTER AE 92 | 000000C6 | LATIN CAPITAL LETTER AE 93 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 94 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 95 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 96 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 97 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 98 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS 99 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000F8 | LATIN SMALL LETTER O WITH STROKE 9C | 000000A3 | POUND SIGN 9D | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 9E | 000020A7 | PESETA SIGN 9F | 00000192 | LATIN SMALL LETTER F WITH HOOK A0 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE A1 | 000000ED | LATIN SMALL LETTER I WITH ACUTE A2 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE A3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE A4 | 000000F1 | LATIN SMALL LETTER N WITH TILDE A5 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE A6 | 000000AA | FEMININE ORDINAL INDICATOR A7 | 000000BA | MASCULINE ORDINAL INDICATOR A8 | 000000BF | INVERTED QUESTION MARK A9 | 00002310 | REVERSED NOT SIGN AA | 000000AC | NOT SIGN AB | 000000BD | VULGAR FRACTION ONE HALF AC | 000000BC | VULGAR FRACTION ONE QUARTER AD | 000000A1 | INVERTED EXCLAMATION MARK AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000A4 | CURRENCY SIGN B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 000003B1 | GREEK SMALL LETTER ALPHA E1 | 000000DF | LATIN SMALL LETTER SHARP S (German) E2 | 00000393 | GREEK CAPITAL LETTER GAMMA E3 | 000003C0 | GREEK SMALL LETTER PI E4 | 000003A3 | GREEK CAPITAL LETTER SIGMA E5 | 000003C3 | GREEK SMALL LETTER SIGMA E6 | 000000B5 | MICRO SIGN E7 | 000003C4 | GREEK SMALL LETTER TAU E8 | 000003A6 | GREEK CAPITAL LETTER PHI E9 | 00000398 | GREEK CAPITAL LETTER THETA EA | 000003A9 | GREEK CAPITAL LETTER OMEGA EB | 000003B4 | GREEK SMALL LETTER DELTA EC | 0000221E | INFINITY ED | 000003C6 | GREEK SMALL LETTER PHI EE | 000003B5 | GREEK SMALL LETTER EPSILON EF | 00002229 | INTERSECTION F0 | 00002261 | IDENTICAL TO F1 | 000000B1 | PLUS-MINUS SIGN F2 | 00002265 | GREATER-THAN OR EQUAL TO F3 | 00002264 | LESS-THAN OR EQUAL TO F4 | 00002320 | TOP HALF INTEGRAL F5 | 00002321 | BOTTOM HALF INTEGRAL F6 | 000000F7 | DIVISION SIGN F7 | 00002248 | ALMOST EQUAL TO F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 0000207F | SUPERSCRIPT LATIN SMALL LETTER N FD | 000000B2 | SUPERSCRIPT TWO FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM866.pm000644 000765 000024 00000065542 12716422334 021502 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM866. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM866; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xe2\x95\xa1", "\xe2\x95\xa2", "\xe2\x95\x96", "\xe2\x95\x95", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xe2\x95\x9c", "\xe2\x95\x9b", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\x99", "\xe2\x95\x98", "\xe2\x95\x92", "\xe2\x95\x93", "\xe2\x95\xab", "\xe2\x95\xaa", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x80", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xd1\x8f", "\xd0\x81", "\xd1\x91", "\xd0\x84", "\xd1\x94", "\xd0\x87", "\xd1\x97", "\xd0\x8e", "\xd1\x9e", "\xc2\xb0", "\xe2\x88\x99", "\xc2\xb7", "\xe2\x88\x9a", "\xe2\x84\x96", "\xc2\xa4", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a4 => "\xfd", 0x000000b0 => "\xf8", 0x000000b7 => "\xfa", 0x00000401 => "\xf0", 0x00000404 => "\xf2", 0x00000407 => "\xf4", 0x0000040e => "\xf6", 0x00000410 => "\x80", 0x00000411 => "\x81", 0x00000412 => "\x82", 0x00000413 => "\x83", 0x00000414 => "\x84", 0x00000415 => "\x85", 0x00000416 => "\x86", 0x00000417 => "\x87", 0x00000418 => "\x88", 0x00000419 => "\x89", 0x0000041a => "\x8a", 0x0000041b => "\x8b", 0x0000041c => "\x8c", 0x0000041d => "\x8d", 0x0000041e => "\x8e", 0x0000041f => "\x8f", 0x00000420 => "\x90", 0x00000421 => "\x91", 0x00000422 => "\x92", 0x00000423 => "\x93", 0x00000424 => "\x94", 0x00000425 => "\x95", 0x00000426 => "\x96", 0x00000427 => "\x97", 0x00000428 => "\x98", 0x00000429 => "\x99", 0x0000042a => "\x9a", 0x0000042b => "\x9b", 0x0000042c => "\x9c", 0x0000042d => "\x9d", 0x0000042e => "\x9e", 0x0000042f => "\x9f", 0x00000430 => "\xa0", 0x00000431 => "\xa1", 0x00000432 => "\xa2", 0x00000433 => "\xa3", 0x00000434 => "\xa4", 0x00000435 => "\xa5", 0x00000436 => "\xa6", 0x00000437 => "\xa7", 0x00000438 => "\xa8", 0x00000439 => "\xa9", 0x0000043a => "\xaa", 0x0000043b => "\xab", 0x0000043c => "\xac", 0x0000043d => "\xad", 0x0000043e => "\xae", 0x0000043f => "\xaf", 0x00000440 => "\xe0", 0x00000441 => "\xe1", 0x00000442 => "\xe2", 0x00000443 => "\xe3", 0x00000444 => "\xe4", 0x00000445 => "\xe5", 0x00000446 => "\xe6", 0x00000447 => "\xe7", 0x00000448 => "\xe8", 0x00000449 => "\xe9", 0x0000044a => "\xea", 0x0000044b => "\xeb", 0x0000044c => "\xec", 0x0000044d => "\xed", 0x0000044e => "\xee", 0x0000044f => "\xef", 0x00000451 => "\xf1", 0x00000454 => "\xf3", 0x00000457 => "\xf5", 0x0000045e => "\xf7", 0x00002116 => "\xfc", 0x00002219 => "\xf9", 0x0000221a => "\xfb", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002552 => "\xd5", 0x00002553 => "\xd6", 0x00002554 => "\xc9", 0x00002555 => "\xb8", 0x00002556 => "\xb7", 0x00002557 => "\xbb", 0x00002558 => "\xd4", 0x00002559 => "\xd3", 0x0000255a => "\xc8", 0x0000255b => "\xbe", 0x0000255c => "\xbd", 0x0000255d => "\xbc", 0x0000255e => "\xc6", 0x0000255f => "\xc7", 0x00002560 => "\xcc", 0x00002561 => "\xb5", 0x00002562 => "\xb6", 0x00002563 => "\xb9", 0x00002564 => "\xd1", 0x00002565 => "\xd2", 0x00002566 => "\xcb", 0x00002567 => "\xcf", 0x00002568 => "\xd0", 0x00002569 => "\xca", 0x0000256a => "\xd8", 0x0000256b => "\xd7", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x0000258c => "\xdd", 0x00002590 => "\xde", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM866 - Conversion routines for IBM866 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM866. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB alias CP866 alias 866 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000410 | CYRILLIC CAPITAL LETTER A 81 | 00000411 | CYRILLIC CAPITAL LETTER BE 82 | 00000412 | CYRILLIC CAPITAL LETTER VE 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE 84 | 00000414 | CYRILLIC CAPITAL LETTER DE 85 | 00000415 | CYRILLIC CAPITAL LETTER IE 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE 88 | 00000418 | CYRILLIC CAPITAL LETTER I 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 8A | 0000041A | CYRILLIC CAPITAL LETTER KA 8B | 0000041B | CYRILLIC CAPITAL LETTER EL 8C | 0000041C | CYRILLIC CAPITAL LETTER EM 8D | 0000041D | CYRILLIC CAPITAL LETTER EN 8E | 0000041E | CYRILLIC CAPITAL LETTER O 8F | 0000041F | CYRILLIC CAPITAL LETTER PE 90 | 00000420 | CYRILLIC CAPITAL LETTER ER 91 | 00000421 | CYRILLIC CAPITAL LETTER ES 92 | 00000422 | CYRILLIC CAPITAL LETTER TE 93 | 00000423 | CYRILLIC CAPITAL LETTER U 94 | 00000424 | CYRILLIC CAPITAL LETTER EF 95 | 00000425 | CYRILLIC CAPITAL LETTER HA 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 9D | 0000042D | CYRILLIC CAPITAL LETTER E 9E | 0000042E | CYRILLIC CAPITAL LETTER YU 9F | 0000042F | CYRILLIC CAPITAL LETTER YA A0 | 00000430 | CYRILLIC SMALL LETTER A A1 | 00000431 | CYRILLIC SMALL LETTER BE A2 | 00000432 | CYRILLIC SMALL LETTER VE A3 | 00000433 | CYRILLIC SMALL LETTER GHE A4 | 00000434 | CYRILLIC SMALL LETTER DE A5 | 00000435 | CYRILLIC SMALL LETTER IE A6 | 00000436 | CYRILLIC SMALL LETTER ZHE A7 | 00000437 | CYRILLIC SMALL LETTER ZE A8 | 00000438 | CYRILLIC SMALL LETTER I A9 | 00000439 | CYRILLIC SMALL LETTER SHORT I AA | 0000043A | CYRILLIC SMALL LETTER KA AB | 0000043B | CYRILLIC SMALL LETTER EL AC | 0000043C | CYRILLIC SMALL LETTER EM AD | 0000043D | CYRILLIC SMALL LETTER EN AE | 0000043E | CYRILLIC SMALL LETTER O AF | 0000043F | CYRILLIC SMALL LETTER PE B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B6 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE B8 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE BE | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE C7 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE D0 | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE D1 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE D2 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE D3 | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE D4 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE D5 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE D6 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE D7 | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE D8 | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 0000258C | LEFT HALF BLOCK DE | 00002590 | RIGHT HALF BLOCK DF | 00002580 | UPPER HALF BLOCK E0 | 00000440 | CYRILLIC SMALL LETTER ER E1 | 00000441 | CYRILLIC SMALL LETTER ES E2 | 00000442 | CYRILLIC SMALL LETTER TE E3 | 00000443 | CYRILLIC SMALL LETTER U E4 | 00000444 | CYRILLIC SMALL LETTER EF E5 | 00000445 | CYRILLIC SMALL LETTER HA E6 | 00000446 | CYRILLIC SMALL LETTER TSE E7 | 00000447 | CYRILLIC SMALL LETTER CHE E8 | 00000448 | CYRILLIC SMALL LETTER SHA E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN EB | 0000044B | CYRILLIC SMALL LETTER YERU EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN ED | 0000044D | CYRILLIC SMALL LETTER E EE | 0000044E | CYRILLIC SMALL LETTER YU EF | 0000044F | CYRILLIC SMALL LETTER YA F0 | 00000401 | CYRILLIC CAPITAL LETTER IO F1 | 00000451 | CYRILLIC SMALL LETTER IO F2 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE F3 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE F4 | 00000407 | CYRILLIC CAPITAL LETTER YI F5 | 00000457 | CYRILLIC SMALL LETTER YI F6 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U F7 | 0000045E | CYRILLIC SMALL LETTER SHORT U F8 | 000000B0 | DEGREE SIGN F9 | 00002219 | BULLET OPERATOR FA | 000000B7 | MIDDLE DOT FB | 0000221A | SQUARE ROOT FC | 00002116 | NUMERO SIGN FD | 000000A4 | CURRENCY SIGN FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM868.pm000644 000765 000024 00000062024 12716422334 021474 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM868. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM868; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0x060c, 0x061b, 0x061f, 0x0622, 0x0627, 0xfe8e, 0xe016, 0x0628, 0xfe91, 0x067e, 0xfffd, 0x0629, 0x062a, 0xfe97, 0xfffd, 0xfffd, 0x062b, 0xfe9b, 0x062c, 0xfe9f, 0xfffd, 0xfffd, 0x062d, 0xfea3, 0x062e, 0xfea7, 0x062f, 0xfffd, 0x0630, 0x0631, 0xfffd, 0x0632, 0xfffd, 0x0633, 0xfeb3, 0x0634, 0x00ab, 0x00bb, 0xfeb7, 0x0635, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xfebb, 0x0636, 0xfebf, 0x0637, 0x2563, 0x2551, 0x2557, 0x255d, 0x0638, 0x0639, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0xfeca, 0xfecb, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0xfecc, 0x063a, 0xfece, 0xfecf, 0xfed0, 0x0641, 0xfed3, 0x0642, 0xfed7, 0xfeda, 0x2518, 0x250c, 0x2588, 0x2580, 0xfedb, 0xfffd, 0x2584, 0xfffd, 0x0644, 0xfede, 0xfee0, 0x0645, 0xfee3, 0xfffd, 0x0646, 0xfee7, 0xfffd, 0x0648, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0621, 0x00ad, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0651, 0xfe7d, 0xfffd, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd9\xa0", "\xd9\xa1", "\xd9\xa2", "\xd9\xa3", "\xd9\xa4", "\xd9\xa5", "\xd9\xa6", "\xd9\xa7", "\xd9\xa8", "\xd9\xa9", "\xd8\x8c", "\xd8\x9b", "\xd8\x9f", "\xd8\xa2", "\xd8\xa7", "\xef\xba\x8e", "\xee\x80\x96", "\xd8\xa8", "\xef\xba\x91", "\xd9\xbe", "\xef\xbf\xbd", "\xd8\xa9", "\xd8\xaa", "\xef\xba\x97", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\xab", "\xef\xba\x9b", "\xd8\xac", "\xef\xba\x9f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\xad", "\xef\xba\xa3", "\xd8\xae", "\xef\xba\xa7", "\xd8\xaf", "\xef\xbf\xbd", "\xd8\xb0", "\xd8\xb1", "\xef\xbf\xbd", "\xd8\xb2", "\xef\xbf\xbd", "\xd8\xb3", "\xef\xba\xb3", "\xd8\xb4", "\xc2\xab", "\xc2\xbb", "\xef\xba\xb7", "\xd8\xb5", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xef\xba\xbb", "\xd8\xb6", "\xef\xba\xbf", "\xd8\xb7", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xd8\xb8", "\xd8\xb9", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xef\xbb\x8c", "\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xef\xbb\x90", "\xd9\x81", "\xef\xbb\x93", "\xd9\x82", "\xef\xbb\x97", "\xef\xbb\x9a", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x80", "\xef\xbb\x9b", "\xef\xbf\xbd", "\xe2\x96\x84", "\xef\xbf\xbd", "\xd9\x84", "\xef\xbb\x9e", "\xef\xbb\xa0", "\xd9\x85", "\xef\xbb\xa3", "\xef\xbf\xbd", "\xd9\x86", "\xef\xbb\xa7", "\xef\xbf\xbd", "\xd9\x88", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\xa1", "\xc2\xad", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\x91", "\xef\xb9\xbd", "\xef\xbf\xbd", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000ab => "\xae", 0x000000ad => "\xf2", 0x000000bb => "\xaf", 0x0000060c => "\x8a", 0x0000061b => "\x8b", 0x0000061f => "\x8c", 0x00000621 => "\xf1", 0x00000622 => "\x8d", 0x00000627 => "\x8e", 0x00000628 => "\x91", 0x00000629 => "\x95", 0x0000062a => "\x96", 0x0000062b => "\x9a", 0x0000062c => "\x9c", 0x0000062d => "\xa0", 0x0000062e => "\xa2", 0x0000062f => "\xa4", 0x00000630 => "\xa6", 0x00000631 => "\xa7", 0x00000632 => "\xa9", 0x00000633 => "\xab", 0x00000634 => "\xad", 0x00000635 => "\xb1", 0x00000636 => "\xb8", 0x00000637 => "\xba", 0x00000638 => "\xbf", 0x00000639 => "\xc0", 0x0000063a => "\xd2", 0x00000641 => "\xd6", 0x00000642 => "\xd8", 0x00000644 => "\xe3", 0x00000645 => "\xe6", 0x00000646 => "\xe9", 0x00000648 => "\xec", 0x00000651 => "\xfb", 0x00000660 => "\x80", 0x00000661 => "\x81", 0x00000662 => "\x82", 0x00000663 => "\x83", 0x00000664 => "\x84", 0x00000665 => "\x85", 0x00000666 => "\x86", 0x00000667 => "\x87", 0x00000668 => "\x88", 0x00000669 => "\x89", 0x0000067e => "\x93", 0x00002500 => "\xc6", 0x00002502 => "\xb5", 0x0000250c => "\xdc", 0x00002510 => "\xc1", 0x00002514 => "\xc2", 0x00002518 => "\xdb", 0x0000251c => "\xc5", 0x00002524 => "\xb6", 0x0000252c => "\xc4", 0x00002534 => "\xc3", 0x0000253c => "\xc7", 0x00002550 => "\xcf", 0x00002551 => "\xbc", 0x00002554 => "\xcb", 0x00002557 => "\xbd", 0x0000255a => "\xca", 0x0000255d => "\xbe", 0x00002560 => "\xce", 0x00002563 => "\xbb", 0x00002566 => "\xcd", 0x00002569 => "\xcc", 0x0000256c => "\xd0", 0x00002580 => "\xde", 0x00002584 => "\xe1", 0x00002588 => "\xdd", 0x00002591 => "\xb2", 0x00002592 => "\xb3", 0x00002593 => "\xb4", 0x000025a0 => "\xfe", 0x0000e016 => "\x90", 0x0000fe7d => "\xfc", 0x0000fe8e => "\x8f", 0x0000fe91 => "\x92", 0x0000fe97 => "\x97", 0x0000fe9b => "\x9b", 0x0000fe9f => "\x9d", 0x0000fea3 => "\xa1", 0x0000fea7 => "\xa3", 0x0000feb3 => "\xac", 0x0000feb7 => "\xb0", 0x0000febb => "\xb7", 0x0000febf => "\xb9", 0x0000feca => "\xc8", 0x0000fecb => "\xc9", 0x0000fecc => "\xd1", 0x0000fece => "\xd3", 0x0000fecf => "\xd4", 0x0000fed0 => "\xd5", 0x0000fed3 => "\xd7", 0x0000fed7 => "\xd9", 0x0000feda => "\xda", 0x0000fedb => "\xdf", 0x0000fede => "\xe4", 0x0000fee0 => "\xe5", 0x0000fee3 => "\xe7", 0x0000fee7 => "\xea", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x8c"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM868 - Conversion routines for IBM868 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM868. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP868 alias CP-AR Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000660 | ARABIC-INDIC DIGIT ZERO 81 | 00000661 | ARABIC-INDIC DIGIT ONE 82 | 00000662 | ARABIC-INDIC DIGIT TWO 83 | 00000663 | ARABIC-INDIC DIGIT THREE 84 | 00000664 | ARABIC-INDIC DIGIT FOUR 85 | 00000665 | ARABIC-INDIC DIGIT FIVE 86 | 00000666 | ARABIC-INDIC DIGIT SIX 87 | 00000667 | ARABIC-INDIC DIGIT SEVEN 88 | 00000668 | ARABIC-INDIC DIGIT EIGHT 89 | 00000669 | ARABIC-INDIC DIGIT NINE 8A | 0000060C | ARABIC COMMA 8B | 0000061B | ARABIC SEMICOLON 8C | 0000061F | ARABIC QUESTION MARK 8D | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE 8E | 00000627 | ARABIC LETTER ALEF 8F | 0000FE8E | ARABIC LETTER ALEF FINAL FORM 90 | 0000E016 | ARABIC LETTER ALEF FINAL FORM COMPATIBILITY EIBM868_90E 91 | 00000628 | ARABIC LETTER BEH 92 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM 93 | 0000067E | ARABIC LETTER PEH 95 | 00000629 | ARABIC LETTER TEH MARBUTA 96 | 0000062A | ARABIC LETTER TEH 97 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM 9A | 0000062B | ARABIC LETTER THEH 9B | 0000FE9B | ARABIC LETTER THEH INITIAL FORM 9C | 0000062C | ARABIC LETTER JEEM 9D | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM A0 | 0000062D | ARABIC LETTER HAH A1 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM A2 | 0000062E | ARABIC LETTER KHAH A3 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM A4 | 0000062F | ARABIC LETTER DAL A6 | 00000630 | ARABIC LETTER THAL A7 | 00000631 | ARABIC LETTER REH A9 | 00000632 | ARABIC LETTER ZAIN AB | 00000633 | ARABIC LETTER SEEN AC | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM AD | 00000634 | ARABIC LETTER SHEEN AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM B1 | 00000635 | ARABIC LETTER SAD B2 | 00002591 | LIGHT SHADE B3 | 00002592 | MEDIUM SHADE B4 | 00002593 | DARK SHADE B5 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B6 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B7 | 0000FEBB | ARABIC LETTER SAD INITIAL FORM B8 | 00000636 | ARABIC LETTER DAD B9 | 0000FEBF | ARABIC LETTER DAD INITIAL FORM BA | 00000637 | ARABIC LETTER TAH BB | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BC | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BD | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BE | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BF | 00000638 | ARABIC LETTER ZAH C0 | 00000639 | ARABIC LETTER AIN C1 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C2 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C3 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C4 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C5 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C6 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C7 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C8 | 0000FECA | ARABIC LETTER AIN FINAL FORM C9 | 0000FECB | ARABIC LETTER AIN INITIAL FORM CA | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT CB | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CC | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CD | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CE | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CF | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL D0 | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL D1 | 0000FECC | ARABIC LETTER AIN MEDIAL FORM D2 | 0000063A | ARABIC LETTER GHAIN D3 | 0000FECE | ARABIC LETTER GHAIN FINAL FORM D4 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM D5 | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM D6 | 00000641 | ARABIC LETTER FEH D7 | 0000FED3 | ARABIC LETTER FEH INITIAL FORM D8 | 00000642 | ARABIC LETTER QAF D9 | 0000FED7 | ARABIC LETTER QAF INITIAL FORM DA | 0000FEDA | ARABIC LETTER KAF FINAL FORM DB | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DC | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DD | 00002588 | FULL BLOCK DE | 00002580 | UPPER HALF BLOCK DF | 0000FEDB | ARABIC LETTER KAF INITIAL FORM E1 | 00002584 | LOWER HALF BLOCK E3 | 00000644 | ARABIC LETTER LAM E4 | 0000FEDE | ARABIC LETTER LAM FINAL FORM E5 | 0000FEE0 | ARABIC LETTER LAM MEDIAL FORM E6 | 00000645 | ARABIC LETTER MEEM E7 | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM E9 | 00000646 | ARABIC LETTER NOON EA | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM EC | 00000648 | ARABIC LETTER WAW F1 | 00000621 | ARABIC LETTER HAMZA F2 | 000000AD | SOFT HYPHEN FB | 00000651 | ARABIC SHADDA FC | 0000FE7D | ARABIC SHADDA MEDIAL FORM FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM869.pm000644 000765 000024 00000064264 12716422334 021505 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM869. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM869; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0386, 0xfffd, 0x00b7, 0x00ac, 0x00a6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389, 0x038a, 0x03aa, 0x038c, 0xfffd, 0xfffd, 0x038e, 0x03ab, 0x00a9, 0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c, 0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x0384, 0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385, 0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xce\x86", "\xef\xbf\xbd", "\xc2\xb7", "\xc2\xac", "\xc2\xa6", "\xe2\x80\x98", "\xe2\x80\x99", "\xce\x88", "\xe2\x80\x95", "\xce\x89", "\xce\x8a", "\xce\xaa", "\xce\x8c", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xce\x8e", "\xce\xab", "\xc2\xa9", "\xce\x8f", "\xc2\xb2", "\xc2\xb3", "\xce\xac", "\xc2\xa3", "\xce\xad", "\xce\xae", "\xce\xaf", "\xcf\x8a", "\xce\x90", "\xcf\x8c", "\xcf\x8d", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xc2\xbd", "\xce\x98", "\xce\x99", "\xc2\xab", "\xc2\xbb", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x94\x82", "\xe2\x94\xa4", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xe2\x95\xa3", "\xe2\x95\x91", "\xe2\x95\x97", "\xe2\x95\x9d", "\xce\x9e", "\xce\x9f", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\xb4", "\xe2\x94\xac", "\xe2\x94\x9c", "\xe2\x94\x80", "\xe2\x94\xbc", "\xce\xa0", "\xce\xa1", "\xe2\x95\x9a", "\xe2\x95\x94", "\xe2\x95\xa9", "\xe2\x95\xa6", "\xe2\x95\xa0", "\xe2\x95\x90", "\xe2\x95\xac", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xe2\x94\x98", "\xe2\x94\x8c", "\xe2\x96\x88", "\xe2\x96\x84", "\xce\xb4", "\xce\xb5", "\xe2\x96\x80", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x83", "\xcf\x82", "\xcf\x84", "\xce\x84", "\xc2\xad", "\xc2\xb1", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xc2\xa7", "\xcf\x88", "\xce\x85", "\xc2\xb0", "\xc2\xa8", "\xcf\x89", "\xcf\x8b", "\xce\xb0", "\xcf\x8e", "\xe2\x96\xa0", "\xc2\xa0", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xff", 0x000000a3 => "\x9c", 0x000000a6 => "\x8a", 0x000000a7 => "\xf5", 0x000000a8 => "\xf9", 0x000000a9 => "\x97", 0x000000ab => "\xae", 0x000000ac => "\x89", 0x000000ad => "\xf0", 0x000000b0 => "\xf8", 0x000000b1 => "\xf1", 0x000000b2 => "\x99", 0x000000b3 => "\x9a", 0x000000b7 => "\x88", 0x000000bb => "\xaf", 0x000000bd => "\xab", 0x00000384 => "\xef", 0x00000385 => "\xf7", 0x00000386 => "\x86", 0x00000388 => "\x8d", 0x00000389 => "\x8f", 0x0000038a => "\x90", 0x0000038c => "\x92", 0x0000038e => "\x95", 0x0000038f => "\x98", 0x00000390 => "\xa1", 0x00000391 => "\xa4", 0x00000392 => "\xa5", 0x00000393 => "\xa6", 0x00000394 => "\xa7", 0x00000395 => "\xa8", 0x00000396 => "\xa9", 0x00000397 => "\xaa", 0x00000398 => "\xac", 0x00000399 => "\xad", 0x0000039a => "\xb5", 0x0000039b => "\xb6", 0x0000039c => "\xb7", 0x0000039d => "\xb8", 0x0000039e => "\xbd", 0x0000039f => "\xbe", 0x000003a0 => "\xc6", 0x000003a1 => "\xc7", 0x000003a3 => "\xcf", 0x000003a4 => "\xd0", 0x000003a5 => "\xd1", 0x000003a6 => "\xd2", 0x000003a7 => "\xd3", 0x000003a8 => "\xd4", 0x000003a9 => "\xd5", 0x000003aa => "\x91", 0x000003ab => "\x96", 0x000003ac => "\x9b", 0x000003ad => "\x9d", 0x000003ae => "\x9e", 0x000003af => "\x9f", 0x000003b0 => "\xfc", 0x000003b1 => "\xd6", 0x000003b2 => "\xd7", 0x000003b3 => "\xd8", 0x000003b4 => "\xdd", 0x000003b5 => "\xde", 0x000003b6 => "\xe0", 0x000003b7 => "\xe1", 0x000003b8 => "\xe2", 0x000003b9 => "\xe3", 0x000003ba => "\xe4", 0x000003bb => "\xe5", 0x000003bc => "\xe6", 0x000003bd => "\xe7", 0x000003be => "\xe8", 0x000003bf => "\xe9", 0x000003c0 => "\xea", 0x000003c1 => "\xeb", 0x000003c2 => "\xed", 0x000003c3 => "\xec", 0x000003c4 => "\xee", 0x000003c5 => "\xf2", 0x000003c6 => "\xf3", 0x000003c7 => "\xf4", 0x000003c8 => "\xf6", 0x000003c9 => "\xfa", 0x000003ca => "\xa0", 0x000003cb => "\xfb", 0x000003cc => "\xa2", 0x000003cd => "\xa3", 0x000003ce => "\xfd", 0x00002015 => "\x8e", 0x00002018 => "\x8b", 0x00002019 => "\x8c", 0x00002500 => "\xc4", 0x00002502 => "\xb3", 0x0000250c => "\xda", 0x00002510 => "\xbf", 0x00002514 => "\xc0", 0x00002518 => "\xd9", 0x0000251c => "\xc3", 0x00002524 => "\xb4", 0x0000252c => "\xc2", 0x00002534 => "\xc1", 0x0000253c => "\xc5", 0x00002550 => "\xcd", 0x00002551 => "\xba", 0x00002554 => "\xc9", 0x00002557 => "\xbb", 0x0000255a => "\xc8", 0x0000255d => "\xbc", 0x00002560 => "\xcc", 0x00002563 => "\xb9", 0x00002566 => "\xcb", 0x00002569 => "\xca", 0x0000256c => "\xce", 0x00002580 => "\xdf", 0x00002584 => "\xdc", 0x00002588 => "\xdb", 0x00002591 => "\xb0", 0x00002592 => "\xb1", 0x00002593 => "\xb2", 0x000025a0 => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM869 - Conversion routines for IBM869 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM869. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991 alias CP869 alias 869 alias CP-GR Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 86 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS 88 | 000000B7 | MIDDLE DOT 89 | 000000AC | NOT SIGN 8A | 000000A6 | BROKEN BAR 8B | 00002018 | LEFT SINGLE QUOTATION MARK 8C | 00002019 | RIGHT SINGLE QUOTATION MARK 8D | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS 8E | 00002015 | HORIZONTAL BAR 8F | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS 90 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS 91 | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 92 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS 95 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS 96 | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 97 | 000000A9 | COPYRIGHT SIGN 98 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS 99 | 000000B2 | SUPERSCRIPT TWO 9A | 000000B3 | SUPERSCRIPT THREE 9B | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS 9C | 000000A3 | POUND SIGN 9D | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS 9E | 000003AE | GREEK SMALL LETTER ETA WITH TONOS 9F | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS A0 | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA A1 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS A2 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS A3 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS A4 | 00000391 | GREEK CAPITAL LETTER ALPHA A5 | 00000392 | GREEK CAPITAL LETTER BETA A6 | 00000393 | GREEK CAPITAL LETTER GAMMA A7 | 00000394 | GREEK CAPITAL LETTER DELTA A8 | 00000395 | GREEK CAPITAL LETTER EPSILON A9 | 00000396 | GREEK CAPITAL LETTER ZETA AA | 00000397 | GREEK CAPITAL LETTER ETA AB | 000000BD | VULGAR FRACTION ONE HALF AC | 00000398 | GREEK CAPITAL LETTER THETA AD | 00000399 | GREEK CAPITAL LETTER IOTA AE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK B0 | 00002591 | LIGHT SHADE B1 | 00002592 | MEDIUM SHADE B2 | 00002593 | DARK SHADE B3 | 00002502 | BOX DRAWINGS LIGHT VERTICAL B4 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT B5 | 0000039A | GREEK CAPITAL LETTER KAPPA B6 | 0000039B | GREEK CAPITAL LETTER LAMDA B7 | 0000039C | GREEK CAPITAL LETTER MU B8 | 0000039D | GREEK CAPITAL LETTER NU B9 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT BA | 00002551 | BOX DRAWINGS DOUBLE VERTICAL BB | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT BC | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT BD | 0000039E | GREEK CAPITAL LETTER XI BE | 0000039F | GREEK CAPITAL LETTER OMICRON BF | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT C0 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT C1 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL C2 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL C3 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT C4 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL C5 | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL C6 | 000003A0 | GREEK CAPITAL LETTER PI C7 | 000003A1 | GREEK CAPITAL LETTER RHO C8 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C9 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT CA | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CB | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL CC | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT CD | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL CE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CF | 000003A3 | GREEK CAPITAL LETTER SIGMA D0 | 000003A4 | GREEK CAPITAL LETTER TAU D1 | 000003A5 | GREEK CAPITAL LETTER UPSILON D2 | 000003A6 | GREEK CAPITAL LETTER PHI D3 | 000003A7 | GREEK CAPITAL LETTER CHI D4 | 000003A8 | GREEK CAPITAL LETTER PSI D5 | 000003A9 | GREEK CAPITAL LETTER OMEGA D6 | 000003B1 | GREEK SMALL LETTER ALPHA D7 | 000003B2 | GREEK SMALL LETTER BETA D8 | 000003B3 | GREEK SMALL LETTER GAMMA D9 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT DA | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT DB | 00002588 | FULL BLOCK DC | 00002584 | LOWER HALF BLOCK DD | 000003B4 | GREEK SMALL LETTER DELTA DE | 000003B5 | GREEK SMALL LETTER EPSILON DF | 00002580 | UPPER HALF BLOCK E0 | 000003B6 | GREEK SMALL LETTER ZETA E1 | 000003B7 | GREEK SMALL LETTER ETA E2 | 000003B8 | GREEK SMALL LETTER THETA E3 | 000003B9 | GREEK SMALL LETTER IOTA E4 | 000003BA | GREEK SMALL LETTER KAPPA E5 | 000003BB | GREEK SMALL LETTER LAMDA E6 | 000003BC | GREEK SMALL LETTER MU E7 | 000003BD | GREEK SMALL LETTER NU E8 | 000003BE | GREEK SMALL LETTER XI E9 | 000003BF | GREEK SMALL LETTER OMICRON EA | 000003C0 | GREEK SMALL LETTER PI EB | 000003C1 | GREEK SMALL LETTER RHO EC | 000003C3 | GREEK SMALL LETTER SIGMA ED | 000003C2 | GREEK SMALL LETTER FINAL SIGMA EE | 000003C4 | GREEK SMALL LETTER TAU EF | 00000384 | GREEK TONOS F0 | 000000AD | SOFT HYPHEN F1 | 000000B1 | PLUS-MINUS SIGN F2 | 000003C5 | GREEK SMALL LETTER UPSILON F3 | 000003C6 | GREEK SMALL LETTER PHI F4 | 000003C7 | GREEK SMALL LETTER CHI F5 | 000000A7 | SECTION SIGN F6 | 000003C8 | GREEK SMALL LETTER PSI F7 | 00000385 | GREEK DIALYTIKA TONOS F8 | 000000B0 | DEGREE SIGN F9 | 000000A8 | DIAERESIS FA | 000003C9 | GREEK SMALL LETTER OMEGA FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA FC | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS FD | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS FE | 000025A0 | BLACK SQUARE FF | 000000A0 | NO-BREAK SPACE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM870.pm000644 000765 000024 00000064204 12716422334 021467 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM870. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM870; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0xfffd, 0x00e4, 0xfffd, 0x00e1, 0x0103, 0x010d, 0x00e7, 0x0107, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0xfffd, 0x00eb, 0x016f, 0x00ed, 0xfffd, 0x013e, 0x013a, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfffd, 0x00c4, 0x02dd, 0x00c1, 0xfffd, 0x010c, 0x00c7, 0x0106, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x02c7, 0x00c9, 0xfffd, 0x00cb, 0x016e, 0x00cd, 0xfffd, 0x013d, 0x0139, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x015b, 0x0148, 0x0111, 0x00fd, 0x0159, 0xfffd, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00b8, 0x02db, 0x00a4, 0x0105, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x015a, 0x0147, 0x0110, 0x00dd, 0x0158, 0xfffd, 0x00b7, 0x0104, 0x017c, 0xfffd, 0x017b, 0x00a7, 0x00b6, 0x017e, 0x017a, 0x017d, 0x0179, 0x0143, 0x0160, 0x00a8, 0x00b4, 0x00d7, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x0155, 0x00f3, 0x0151, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x011a, 0x0171, 0x00fc, 0x0165, 0x00fa, 0x011b, 0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x010f, 0x00d4, 0x00d6, 0x0154, 0x00d3, 0x0150, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xef\xbf\xbd", "\xc3\xa4", "\xef\xbf\xbd", "\xc3\xa1", "\xc4\x83", "\xc4\x8d", "\xc3\xa7", "\xc4\x87", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xef\xbf\xbd", "\xc3\xab", "\xc5\xaf", "\xc3\xad", "\xef\xbf\xbd", "\xc4\xbe", "\xc4\xba", "\xc3\x9f", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xbf\xbd", "\xc3\x84", "\xcb\x9d", "\xc3\x81", "\xef\xbf\xbd", "\xc4\x8c", "\xc3\x87", "\xc4\x86", "\x7c", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xcb\x87", "\xc3\x89", "\xef\xbf\xbd", "\xc3\x8b", "\xc5\xae", "\xc3\x8d", "\xef\xbf\xbd", "\xc4\xbd", "\xc4\xb9", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xcb\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc5\x9b", "\xc5\x88", "\xc4\x91", "\xc3\xbd", "\xc5\x99", "\xef\xbf\xbd", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc5\x82", "\xc5\x84", "\xc5\xa1", "\xc2\xb8", "\xcb\x9b", "\xc2\xa4", "\xc4\x85", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc5\x9a", "\xc5\x87", "\xc4\x90", "\xc3\x9d", "\xc5\x98", "\xef\xbf\xbd", "\xc2\xb7", "\xc4\x84", "\xc5\xbc", "\xef\xbf\xbd", "\xc5\xbb", "\xc2\xa7", "\xc2\xb6", "\xc5\xbe", "\xc5\xba", "\xc5\xbd", "\xc5\xb9", "\xc5\x83", "\xc5\xa0", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\xc3\xb6", "\xc5\x95", "\xc3\xb3", "\xc5\x91", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc4\x9a", "\xc5\xb1", "\xc3\xbc", "\xc5\xa5", "\xc3\xba", "\xc4\x9b", "\x5c", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc4\x8f", "\xc3\x94", "\xc3\x96", "\xc5\x94", "\xc3\x93", "\xc5\x90", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc4\x8e", "\xc5\xb0", "\xc3\x9c", "\xc5\xa4", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\x6a", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a4 => "\x9f", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000ad => "\xca", 0x000000b0 => "\x90", 0x000000b4 => "\xbe", 0x000000b6 => "\xb6", 0x000000b7 => "\xb0", 0x000000b8 => "\x9d", 0x000000c1 => "\x65", 0x000000c4 => "\x63", 0x000000c7 => "\x68", 0x000000c9 => "\x71", 0x000000cb => "\x73", 0x000000cd => "\x75", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d6 => "\xec", 0x000000d7 => "\xbf", 0x000000da => "\xfe", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000df => "\x59", 0x000000e1 => "\x45", 0x000000e4 => "\x43", 0x000000e7 => "\x48", 0x000000e9 => "\x51", 0x000000eb => "\x53", 0x000000ed => "\x55", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f6 => "\xcc", 0x000000f7 => "\xe1", 0x000000fa => "\xde", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x00000103 => "\x46", 0x00000104 => "\xb1", 0x00000105 => "\xa0", 0x00000106 => "\x69", 0x00000107 => "\x49", 0x0000010c => "\x67", 0x0000010d => "\x47", 0x0000010e => "\xfa", 0x0000010f => "\xea", 0x00000110 => "\xac", 0x00000111 => "\x8c", 0x0000011a => "\xda", 0x0000011b => "\xdf", 0x00000139 => "\x78", 0x0000013a => "\x58", 0x0000013d => "\x77", 0x0000013e => "\x57", 0x00000142 => "\x9a", 0x00000143 => "\xbb", 0x00000144 => "\x9b", 0x00000147 => "\xab", 0x00000148 => "\x8b", 0x00000150 => "\xef", 0x00000151 => "\xcf", 0x00000154 => "\xed", 0x00000155 => "\xcd", 0x00000158 => "\xae", 0x00000159 => "\x8e", 0x0000015a => "\xaa", 0x0000015b => "\x8a", 0x00000160 => "\xbc", 0x00000161 => "\x9c", 0x00000164 => "\xfd", 0x00000165 => "\xdd", 0x0000016e => "\x74", 0x0000016f => "\x54", 0x00000170 => "\xfb", 0x00000171 => "\xdb", 0x00000179 => "\xba", 0x0000017a => "\xb8", 0x0000017b => "\xb4", 0x0000017c => "\xb2", 0x0000017d => "\xb9", 0x0000017e => "\xb7", 0x000002c7 => "\x70", 0x000002d8 => "\x80", 0x000002db => "\x9e", 0x000002dd => "\x64", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM870 - Conversion routines for IBM870 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM870. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP870 alias EBCDIC-CP-ROECE alias EBCDIC-CP-YU Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 00000103 | LATIN SMALL LETTER A WITH BREVE 47 | 0000010D | LATIN SMALL LETTER C WITH CARON 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 00000107 | LATIN SMALL LETTER C WITH ACUTE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 57 | 0000013E | LATIN SMALL LETTER L WITH CARON 58 | 0000013A | LATIN SMALL LETTER L WITH ACUTE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000002DD | DOUBLE ACUTE ACCENT 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 67 | 0000010C | LATIN CAPITAL LETTER C WITH CARON 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE 6A | 0000007C | VERTICAL LINE 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000002C7 | CARON (Mandarin Chinese third tone) 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 77 | 0000013D | LATIN CAPITAL LETTER L WITH CARON 78 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000002D8 | BREVE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 0000015B | LATIN SMALL LETTER S WITH ACUTE 8B | 00000148 | LATIN SMALL LETTER N WITH CARON 8C | 00000111 | LATIN SMALL LETTER D WITH STROKE 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 00000159 | LATIN SMALL LETTER R WITH CARON 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 00000142 | LATIN SMALL LETTER L WITH STROKE 9B | 00000144 | LATIN SMALL LETTER N WITH ACUTE 9C | 00000161 | LATIN SMALL LETTER S WITH CARON 9D | 000000B8 | CEDILLA 9E | 000002DB | OGONEK 9F | 000000A4 | CURRENCY SIGN A0 | 00000105 | LATIN SMALL LETTER A WITH OGONEK A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE AB | 00000147 | LATIN CAPITAL LETTER N WITH CARON AC | 00000110 | LATIN CAPITAL LETTER D WITH STROKE AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 00000158 | LATIN CAPITAL LETTER R WITH CARON B0 | 000000B7 | MIDDLE DOT B1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK B2 | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE B4 | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 0000017E | LATIN SMALL LETTER Z WITH CARON B8 | 0000017A | LATIN SMALL LETTER Z WITH ACUTE B9 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON BA | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE BB | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE BC | 00000160 | LATIN CAPITAL LETTER S WITH CARON BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS CD | 00000155 | LATIN SMALL LETTER R WITH ACUTE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 0000011A | LATIN CAPITAL LETTER E WITH CARON DB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 00000165 | LATIN SMALL LETTER T WITH CARON DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 0000011B | LATIN SMALL LETTER E WITH CARON E0 | 0000005C | REVERSE SOLIDUS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 0000010F | LATIN SMALL LETTER D WITH CARON EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS ED | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 0000010E | LATIN CAPITAL LETTER D WITH CARON FB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 00000164 | LATIN CAPITAL LETTER T WITH CARON FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM871.pm000644 000765 000024 00000065332 12716422334 021473 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM871. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM871; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x00e7, 0x00f1, 0x00fe, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x00c6, 0x0024, 0x002a, 0x0029, 0x003b, 0x00d6, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00f0, 0x003a, 0x0023, 0x00d0, 0x0027, 0x003d, 0x0022, 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x0060, 0x00fd, 0x007b, 0x00b1, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x007d, 0x00b8, 0x005d, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x0040, 0x00dd, 0x005b, 0x00ae, 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x005c, 0x00d7, 0x00de, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, 0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff, 0x00b4, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x005e, 0x00d2, 0x00d3, 0x00d5, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xb1", "\xc3\xbe", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\xc3\x86", "\x24", "\x2a", "\x29", "\x3b", "\xc3\x96", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xc3\x83", "\xc3\x85", "\xc3\x87", "\xc3\x91", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc3\xb8", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\xb0", "\x3a", "\x23", "\xc3\x90", "\x27", "\x3d", "\x22", "\xc3\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc2\xab", "\xc2\xbb", "\x60", "\xc3\xbd", "\x7b", "\xc2\xb1", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc2\xaa", "\xc2\xba", "\x7d", "\xc2\xb8", "\x5d", "\xc2\xa4", "\xc2\xb5", "\xc3\xb6", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc2\xa1", "\xc2\xbf", "\x40", "\xc3\x9d", "\x5b", "\xc2\xae", "\xc2\xa2", "\xc2\xa3", "\xc2\xa5", "\xc2\xb7", "\xc2\xa9", "\xc2\xa7", "\xc2\xb6", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xac", "\x7c", "\xc2\xaf", "\xc2\xa8", "\x5c", "\xc3\x97", "\xc3\x9e", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\x7e", "\xc3\xb2", "\xc3\xb3", "\xc3\xb5", "\xc3\xa6", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\xb9", "\xc3\xba", "\xc3\xbf", "\xc2\xb4", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\x5e", "\xc3\x92", "\xc3\x93", "\xc3\x95", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\xc3\x9c", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\xac", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\xae", 0x0000005c => "\xbe", 0x0000005d => "\x9e", 0x0000005e => "\xec", 0x0000005f => "\x6d", 0x00000060 => "\x8c", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x8e", 0x0000007c => "\xbb", 0x0000007d => "\x9c", 0x0000007e => "\xcc", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000a1 => "\xaa", 0x000000a2 => "\xb0", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a5 => "\xb2", 0x000000a6 => "\x6a", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000a9 => "\xb4", 0x000000aa => "\x9a", 0x000000ab => "\x8a", 0x000000ac => "\xba", 0x000000ad => "\xca", 0x000000ae => "\xaf", 0x000000af => "\xbc", 0x000000b0 => "\x90", 0x000000b1 => "\x8f", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xe0", 0x000000b5 => "\xa0", 0x000000b6 => "\xb6", 0x000000b7 => "\xb3", 0x000000b8 => "\x9d", 0x000000b9 => "\xda", 0x000000ba => "\x9b", 0x000000bb => "\x8b", 0x000000bc => "\xb7", 0x000000bd => "\xb8", 0x000000be => "\xb9", 0x000000bf => "\xab", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c3 => "\x66", 0x000000c4 => "\x63", 0x000000c5 => "\x67", 0x000000c6 => "\x5a", 0x000000c7 => "\x68", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d0 => "\x7c", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d5 => "\xef", 0x000000d6 => "\x5f", 0x000000d7 => "\xbf", 0x000000d8 => "\x80", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\xfc", 0x000000dd => "\xad", 0x000000de => "\xc0", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e3 => "\x46", 0x000000e4 => "\x43", 0x000000e5 => "\x47", 0x000000e6 => "\xd0", 0x000000e7 => "\x48", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f0 => "\x79", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f5 => "\xcf", 0x000000f6 => "\xa1", 0x000000f7 => "\xe1", 0x000000f8 => "\x70", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xdc", 0x000000fd => "\x8d", 0x000000fe => "\x4a", 0x000000ff => "\xdf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM871 - Conversion routines for IBM871 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM871. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP871 alias EBCDIC-CP-IS Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 46 | 000000E3 | LATIN SMALL LETTER A WITH TILDE 47 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 48 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000FE | LATIN SMALL LETTER THORN (Icelandic) 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 000000C6 | LATIN CAPITAL LETTER AE 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 66 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 67 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 68 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000F8 | LATIN SMALL LETTER O WITH STROKE 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8B | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 8C | 00000060 | GRAVE ACCENT 8D | 000000FD | LATIN SMALL LETTER Y WITH ACUTE 8E | 0000007B | LEFT CURLY BRACKET 8F | 000000B1 | PLUS-MINUS SIGN 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000000AA | FEMININE ORDINAL INDICATOR 9B | 000000BA | MASCULINE ORDINAL INDICATOR 9C | 0000007D | RIGHT CURLY BRACKET 9D | 000000B8 | CEDILLA 9E | 0000005D | RIGHT SQUARE BRACKET 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000000A1 | INVERTED EXCLAMATION MARK AB | 000000BF | INVERTED QUESTION MARK AC | 00000040 | COMMERCIAL AT AD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE AE | 0000005B | LEFT SQUARE BRACKET AF | 000000AE | REGISTERED SIGN B0 | 000000A2 | CENT SIGN B1 | 000000A3 | POUND SIGN B2 | 000000A5 | YEN SIGN B3 | 000000B7 | MIDDLE DOT B4 | 000000A9 | COPYRIGHT SIGN B5 | 000000A7 | SECTION SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000BC | VULGAR FRACTION ONE QUARTER B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 000000BE | VULGAR FRACTION THREE QUARTERS BA | 000000AC | NOT SIGN BB | 0000007C | VERTICAL LINE BC | 000000AF | MACRON BD | 000000A8 | DIAERESIS BE | 0000005C | REVERSE SOLIDUS BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 0000007E | TILDE CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 000000F5 | LATIN SMALL LETTER O WITH TILDE D0 | 000000E6 | LATIN SMALL LETTER AE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B9 | SUPERSCRIPT ONE DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE DF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS E0 | 000000B4 | ACUTE ACCENT E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 0000005E | CIRCUMFLEX ACCENT ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM874.pm000644 000765 000024 00000060264 12716422334 021475 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM874. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM874; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\xa6", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa0", "\xe0\xb8\x81", "\xe0\xb8\x82", "\xe0\xb8\x83", "\xe0\xb8\x84", "\xe0\xb8\x85", "\xe0\xb8\x86", "\xe0\xb8\x87", "\xe0\xb8\x88", "\xe0\xb8\x89", "\xe0\xb8\x8a", "\xe0\xb8\x8b", "\xe0\xb8\x8c", "\xe0\xb8\x8d", "\xe0\xb8\x8e", "\xe0\xb8\x8f", "\xe0\xb8\x90", "\xe0\xb8\x91", "\xe0\xb8\x92", "\xe0\xb8\x93", "\xe0\xb8\x94", "\xe0\xb8\x95", "\xe0\xb8\x96", "\xe0\xb8\x97", "\xe0\xb8\x98", "\xe0\xb8\x99", "\xe0\xb8\x9a", "\xe0\xb8\x9b", "\xe0\xb8\x9c", "\xe0\xb8\x9d", "\xe0\xb8\x9e", "\xe0\xb8\x9f", "\xe0\xb8\xa0", "\xe0\xb8\xa1", "\xe0\xb8\xa2", "\xe0\xb8\xa3", "\xe0\xb8\xa4", "\xe0\xb8\xa5", "\xe0\xb8\xa6", "\xe0\xb8\xa7", "\xe0\xb8\xa8", "\xe0\xb8\xa9", "\xe0\xb8\xaa", "\xe0\xb8\xab", "\xe0\xb8\xac", "\xe0\xb8\xad", "\xe0\xb8\xae", "\xe0\xb8\xaf", "\xe0\xb8\xb0", "\xe0\xb8\xb1", "\xe0\xb8\xb2", "\xe0\xb8\xb3", "\xe0\xb8\xb4", "\xe0\xb8\xb5", "\xe0\xb8\xb6", "\xe0\xb8\xb7", "\xe0\xb8\xb8", "\xe0\xb8\xb9", "\xe0\xb8\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe0\xb8\xbf", "\xe0\xb9\x80", "\xe0\xb9\x81", "\xe0\xb9\x82", "\xe0\xb9\x83", "\xe0\xb9\x84", "\xe0\xb9\x85", "\xe0\xb9\x86", "\xe0\xb9\x87", "\xe0\xb9\x88", "\xe0\xb9\x89", "\xe0\xb9\x8a", "\xe0\xb9\x8b", "\xe0\xb9\x8c", "\xe0\xb9\x8d", "\xe0\xb9\x8e", "\xe0\xb9\x8f", "\xe0\xb9\x90", "\xe0\xb9\x91", "\xe0\xb9\x92", "\xe0\xb9\x93", "\xe0\xb9\x94", "\xe0\xb9\x95", "\xe0\xb9\x96", "\xe0\xb9\x97", "\xe0\xb9\x98", "\xe0\xb9\x99", "\xe0\xb9\x9a", "\xe0\xb9\x9b", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x00000e01 => "\xa1", 0x00000e02 => "\xa2", 0x00000e03 => "\xa3", 0x00000e04 => "\xa4", 0x00000e05 => "\xa5", 0x00000e06 => "\xa6", 0x00000e07 => "\xa7", 0x00000e08 => "\xa8", 0x00000e09 => "\xa9", 0x00000e0a => "\xaa", 0x00000e0b => "\xab", 0x00000e0c => "\xac", 0x00000e0d => "\xad", 0x00000e0e => "\xae", 0x00000e0f => "\xaf", 0x00000e10 => "\xb0", 0x00000e11 => "\xb1", 0x00000e12 => "\xb2", 0x00000e13 => "\xb3", 0x00000e14 => "\xb4", 0x00000e15 => "\xb5", 0x00000e16 => "\xb6", 0x00000e17 => "\xb7", 0x00000e18 => "\xb8", 0x00000e19 => "\xb9", 0x00000e1a => "\xba", 0x00000e1b => "\xbb", 0x00000e1c => "\xbc", 0x00000e1d => "\xbd", 0x00000e1e => "\xbe", 0x00000e1f => "\xbf", 0x00000e20 => "\xc0", 0x00000e21 => "\xc1", 0x00000e22 => "\xc2", 0x00000e23 => "\xc3", 0x00000e24 => "\xc4", 0x00000e25 => "\xc5", 0x00000e26 => "\xc6", 0x00000e27 => "\xc7", 0x00000e28 => "\xc8", 0x00000e29 => "\xc9", 0x00000e2a => "\xca", 0x00000e2b => "\xcb", 0x00000e2c => "\xcc", 0x00000e2d => "\xcd", 0x00000e2e => "\xce", 0x00000e2f => "\xcf", 0x00000e30 => "\xd0", 0x00000e31 => "\xd1", 0x00000e32 => "\xd2", 0x00000e33 => "\xd3", 0x00000e34 => "\xd4", 0x00000e35 => "\xd5", 0x00000e36 => "\xd6", 0x00000e37 => "\xd7", 0x00000e38 => "\xd8", 0x00000e39 => "\xd9", 0x00000e3a => "\xda", 0x00000e3f => "\xdf", 0x00000e40 => "\xe0", 0x00000e41 => "\xe1", 0x00000e42 => "\xe2", 0x00000e43 => "\xe3", 0x00000e44 => "\xe4", 0x00000e45 => "\xe5", 0x00000e46 => "\xe6", 0x00000e47 => "\xe7", 0x00000e48 => "\xe8", 0x00000e49 => "\xe9", 0x00000e4a => "\xea", 0x00000e4b => "\xeb", 0x00000e4c => "\xec", 0x00000e4d => "\xed", 0x00000e4e => "\xee", 0x00000e4f => "\xef", 0x00000e50 => "\xf0", 0x00000e51 => "\xf1", 0x00000e52 => "\xf2", 0x00000e53 => "\xf3", 0x00000e54 => "\xf4", 0x00000e55 => "\xf5", 0x00000e56 => "\xf6", 0x00000e57 => "\xf7", 0x00000e58 => "\xf8", 0x00000e59 => "\xf9", 0x00000e5a => "\xfa", 0x00000e5b => "\xfb", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x000020ac => "\x80", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM874 - Conversion routines for IBM874 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM874. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB alias CP874 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 000020AC | EURO SIGN 85 | 00002026 | HORIZONTAL ELLIPSIS 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH A0 | 000000A0 | NO-BREAK SPACE A1 | 00000E01 | THAI CHARACTER KO KAI A2 | 00000E02 | THAI CHARACTER KHO KHAI A3 | 00000E03 | THAI CHARACTER KHO KHUAT A4 | 00000E04 | THAI CHARACTER KHO KHWAI A5 | 00000E05 | THAI CHARACTER KHO KHON A6 | 00000E06 | THAI CHARACTER KHO RAKHANG A7 | 00000E07 | THAI CHARACTER NGO NGU A8 | 00000E08 | THAI CHARACTER CHO CHAN A9 | 00000E09 | THAI CHARACTER CHO CHING AA | 00000E0A | THAI CHARACTER CHO CHANG AB | 00000E0B | THAI CHARACTER SO SO AC | 00000E0C | THAI CHARACTER CHO CHOE AD | 00000E0D | THAI CHARACTER YO YING AE | 00000E0E | THAI CHARACTER DO CHADA AF | 00000E0F | THAI CHARACTER TO PATAK B0 | 00000E10 | THAI CHARACTER THO THAN B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO B2 | 00000E12 | THAI CHARACTER THO PHUTHAO B3 | 00000E13 | THAI CHARACTER NO NEN B4 | 00000E14 | THAI CHARACTER DO DEK B5 | 00000E15 | THAI CHARACTER TO TAO B6 | 00000E16 | THAI CHARACTER THO THUNG B7 | 00000E17 | THAI CHARACTER THO THAHAN B8 | 00000E18 | THAI CHARACTER THO THONG B9 | 00000E19 | THAI CHARACTER NO NU BA | 00000E1A | THAI CHARACTER BO BAIMAI BB | 00000E1B | THAI CHARACTER PO PLA BC | 00000E1C | THAI CHARACTER PHO PHUNG BD | 00000E1D | THAI CHARACTER FO FA BE | 00000E1E | THAI CHARACTER PHO PHAN BF | 00000E1F | THAI CHARACTER FO FAN C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO C1 | 00000E21 | THAI CHARACTER MO MA C2 | 00000E22 | THAI CHARACTER YO YAK C3 | 00000E23 | THAI CHARACTER RO RUA C4 | 00000E24 | THAI CHARACTER RU C5 | 00000E25 | THAI CHARACTER LO LING C6 | 00000E26 | THAI CHARACTER LU C7 | 00000E27 | THAI CHARACTER WO WAEN C8 | 00000E28 | THAI CHARACTER SO SALA C9 | 00000E29 | THAI CHARACTER SO RUSI CA | 00000E2A | THAI CHARACTER SO SUA CB | 00000E2B | THAI CHARACTER HO HIP CC | 00000E2C | THAI CHARACTER LO CHULA CD | 00000E2D | THAI CHARACTER O ANG CE | 00000E2E | THAI CHARACTER HO NOKHUK CF | 00000E2F | THAI CHARACTER PAIYANNOI D0 | 00000E30 | THAI CHARACTER SARA A D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT D2 | 00000E32 | THAI CHARACTER SARA AA D3 | 00000E33 | THAI CHARACTER SARA AM D4 | 00000E34 | THAI CHARACTER SARA I D5 | 00000E35 | THAI CHARACTER SARA II D6 | 00000E36 | THAI CHARACTER SARA UE D7 | 00000E37 | THAI CHARACTER SARA UEE D8 | 00000E38 | THAI CHARACTER SARA U D9 | 00000E39 | THAI CHARACTER SARA UU DA | 00000E3A | THAI CHARACTER PHINTHU DF | 00000E3F | THAI CURRENCY SYMBOL BAHT E0 | 00000E40 | THAI CHARACTER SARA E E1 | 00000E41 | THAI CHARACTER SARA AE E2 | 00000E42 | THAI CHARACTER SARA O E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO E6 | 00000E46 | THAI CHARACTER MAIYAMOK E7 | 00000E47 | THAI CHARACTER MAITAIKHU E8 | 00000E48 | THAI CHARACTER MAI EK E9 | 00000E49 | THAI CHARACTER MAI THO EA | 00000E4A | THAI CHARACTER MAI TRI EB | 00000E4B | THAI CHARACTER MAI CHATTAWA EC | 00000E4C | THAI CHARACTER THANTHAKHAT ED | 00000E4D | THAI CHARACTER NIKHAHIT EE | 00000E4E | THAI CHARACTER YAMAKKAN EF | 00000E4F | THAI CHARACTER FONGMAN F0 | 00000E50 | THAI DIGIT ZERO F1 | 00000E51 | THAI DIGIT ONE F2 | 00000E52 | THAI DIGIT TWO F3 | 00000E53 | THAI DIGIT THREE F4 | 00000E54 | THAI DIGIT FOUR F5 | 00000E55 | THAI DIGIT FIVE F6 | 00000E56 | THAI DIGIT SIX F7 | 00000E57 | THAI DIGIT SEVEN F8 | 00000E58 | THAI DIGIT EIGHT F9 | 00000E59 | THAI DIGIT NINE FA | 00000E5A | THAI CHARACTER ANGKHANKHU FB | 00000E5B | THAI CHARACTER KHOMUT =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM875.pm000644 000765 000024 00000064076 12716422334 021503 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM875. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM875; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0xfffd, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x00a8, 0x0386, 0x0388, 0x0389, 0x2207, 0x038a, 0x038c, 0x038e, 0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x0390, 0x03af, 0x03cc, 0x03cd, 0x03b0, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x03c9, 0x03ca, 0x03cb, 0x2018, 0x2015, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b1, 0x00bd, 0xfffd, 0x00b7, 0x2019, 0x00a6, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00a7, 0xfffd, 0xfffd, 0x00ab, 0x00ac, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00a9, 0xfffd, 0xfffd, 0x00bb, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xce\xa3", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xce\xaa", "\xce\xab", "\xef\xbf\xbd", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xc2\xa8", "\xce\x86", "\xce\x88", "\xce\x89", "\xe2\x88\x87", "\xce\x8a", "\xce\x8c", "\xce\x8e", "\xce\x8f", "\x60", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xce\x85", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xc2\xb4", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x83", "\xc2\xa3", "\xce\xac", "\xce\xad", "\xce\xae", "\xce\x90", "\xce\xaf", "\xcf\x8c", "\xcf\x8d", "\xce\xb0", "\xcf\x8e", "\xcf\x82", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xcf\x89", "\xcf\x8a", "\xcf\x8b", "\xe2\x80\x98", "\xe2\x80\x95", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xc2\xb1", "\xc2\xbd", "\xef\xbf\xbd", "\xc2\xb7", "\xe2\x80\x99", "\xc2\xa6", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc2\xa7", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xab", "\xc2\xac", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc2\xa9", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xbb", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x79", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\xb0", 0x000000a6 => "\xdf", 0x000000a7 => "\xeb", 0x000000a8 => "\x70", 0x000000a9 => "\xfb", 0x000000ab => "\xee", 0x000000ac => "\xef", 0x000000ad => "\xca", 0x000000b0 => "\x90", 0x000000b1 => "\xda", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xa0", 0x000000b7 => "\xdd", 0x000000bb => "\xfe", 0x000000bd => "\xdb", 0x00000385 => "\x80", 0x00000386 => "\x71", 0x00000388 => "\x72", 0x00000389 => "\x73", 0x0000038a => "\x75", 0x0000038c => "\x76", 0x0000038e => "\x77", 0x0000038f => "\x78", 0x00000390 => "\xb4", 0x00000391 => "\x41", 0x00000392 => "\x42", 0x00000393 => "\x43", 0x00000394 => "\x44", 0x00000395 => "\x45", 0x00000396 => "\x46", 0x00000397 => "\x47", 0x00000398 => "\x48", 0x00000399 => "\x49", 0x0000039a => "\x51", 0x0000039b => "\x52", 0x0000039c => "\x53", 0x0000039d => "\x54", 0x0000039e => "\x55", 0x0000039f => "\x56", 0x000003a0 => "\x57", 0x000003a1 => "\x58", 0x000003a3 => "\x59", 0x000003a4 => "\x62", 0x000003a5 => "\x63", 0x000003a6 => "\x64", 0x000003a7 => "\x65", 0x000003a8 => "\x66", 0x000003a9 => "\x67", 0x000003aa => "\x68", 0x000003ab => "\x69", 0x000003ac => "\xb1", 0x000003ad => "\xb2", 0x000003ae => "\xb3", 0x000003af => "\xb5", 0x000003b0 => "\xb8", 0x000003b1 => "\x8a", 0x000003b2 => "\x8b", 0x000003b3 => "\x8c", 0x000003b4 => "\x8d", 0x000003b5 => "\x8e", 0x000003b6 => "\x8f", 0x000003b7 => "\x9a", 0x000003b8 => "\x9b", 0x000003b9 => "\x9c", 0x000003ba => "\x9d", 0x000003bb => "\x9e", 0x000003bc => "\x9f", 0x000003bd => "\xaa", 0x000003be => "\xab", 0x000003bf => "\xac", 0x000003c0 => "\xad", 0x000003c1 => "\xae", 0x000003c2 => "\xba", 0x000003c3 => "\xaf", 0x000003c4 => "\xbb", 0x000003c5 => "\xbc", 0x000003c6 => "\xbd", 0x000003c7 => "\xbe", 0x000003c8 => "\xbf", 0x000003c9 => "\xcb", 0x000003ca => "\xcc", 0x000003cb => "\xcd", 0x000003cc => "\xb6", 0x000003cd => "\xb7", 0x000003ce => "\xb9", 0x00002015 => "\xcf", 0x00002018 => "\xce", 0x00002019 => "\xde", 0x00002207 => "\x74", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM875 - Conversion routines for IBM875 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM875. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: UNICODE 1.0 alias CP875 alias EBCDIC-GREEK Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 00000391 | GREEK CAPITAL LETTER ALPHA 42 | 00000392 | GREEK CAPITAL LETTER BETA 43 | 00000393 | GREEK CAPITAL LETTER GAMMA 44 | 00000394 | GREEK CAPITAL LETTER DELTA 45 | 00000395 | GREEK CAPITAL LETTER EPSILON 46 | 00000396 | GREEK CAPITAL LETTER ZETA 47 | 00000397 | GREEK CAPITAL LETTER ETA 48 | 00000398 | GREEK CAPITAL LETTER THETA 49 | 00000399 | GREEK CAPITAL LETTER IOTA 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 0000039A | GREEK CAPITAL LETTER KAPPA 52 | 0000039B | GREEK CAPITAL LETTER LAMDA 53 | 0000039C | GREEK CAPITAL LETTER MU 54 | 0000039D | GREEK CAPITAL LETTER NU 55 | 0000039E | GREEK CAPITAL LETTER XI 56 | 0000039F | GREEK CAPITAL LETTER OMICRON 57 | 000003A0 | GREEK CAPITAL LETTER PI 58 | 000003A1 | GREEK CAPITAL LETTER RHO 59 | 000003A3 | GREEK CAPITAL LETTER SIGMA 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000003A4 | GREEK CAPITAL LETTER TAU 63 | 000003A5 | GREEK CAPITAL LETTER UPSILON 64 | 000003A6 | GREEK CAPITAL LETTER PHI 65 | 000003A7 | GREEK CAPITAL LETTER CHI 66 | 000003A8 | GREEK CAPITAL LETTER PSI 67 | 000003A9 | GREEK CAPITAL LETTER OMEGA 68 | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 69 | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 000000A8 | DIAERESIS 71 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS 72 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS 73 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS 74 | 00002207 | NABLA 75 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS 76 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS 77 | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS 78 | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS 79 | 00000060 | GRAVE ACCENT 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 00000385 | GREEK DIALYTIKA TONOS 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 000003B1 | GREEK SMALL LETTER ALPHA 8B | 000003B2 | GREEK SMALL LETTER BETA 8C | 000003B3 | GREEK SMALL LETTER GAMMA 8D | 000003B4 | GREEK SMALL LETTER DELTA 8E | 000003B5 | GREEK SMALL LETTER EPSILON 8F | 000003B6 | GREEK SMALL LETTER ZETA 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 000003B7 | GREEK SMALL LETTER ETA 9B | 000003B8 | GREEK SMALL LETTER THETA 9C | 000003B9 | GREEK SMALL LETTER IOTA 9D | 000003BA | GREEK SMALL LETTER KAPPA 9E | 000003BB | GREEK SMALL LETTER LAMDA 9F | 000003BC | GREEK SMALL LETTER MU A0 | 000000B4 | ACUTE ACCENT A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 000003BD | GREEK SMALL LETTER NU AB | 000003BE | GREEK SMALL LETTER XI AC | 000003BF | GREEK SMALL LETTER OMICRON AD | 000003C0 | GREEK SMALL LETTER PI AE | 000003C1 | GREEK SMALL LETTER RHO AF | 000003C3 | GREEK SMALL LETTER SIGMA B0 | 000000A3 | POUND SIGN B1 | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS B2 | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS B3 | 000003AE | GREEK SMALL LETTER ETA WITH TONOS B4 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS B5 | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS B6 | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS B7 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS B8 | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS B9 | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS BA | 000003C2 | GREEK SMALL LETTER FINAL SIGMA BB | 000003C4 | GREEK SMALL LETTER TAU BC | 000003C5 | GREEK SMALL LETTER UPSILON BD | 000003C6 | GREEK SMALL LETTER PHI BE | 000003C7 | GREEK SMALL LETTER CHI BF | 000003C8 | GREEK SMALL LETTER PSI C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000003C9 | GREEK SMALL LETTER OMEGA CC | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA CD | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA CE | 00002018 | LEFT SINGLE QUOTATION MARK CF | 00002015 | HORIZONTAL BAR D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 000000B1 | PLUS-MINUS SIGN DB | 000000BD | VULGAR FRACTION ONE HALF DD | 000000B7 | MIDDLE DOT DE | 00002019 | RIGHT SINGLE QUOTATION MARK DF | 000000A6 | BROKEN BAR E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000A7 | SECTION SIGN EE | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK EF | 000000AC | NOT SIGN F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000A9 | COPYRIGHT SIGN FE | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM880.pm000644 000765 000024 00000064041 12716422334 021467 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM880. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM880; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0x0452, 0x0453, 0x0451, 0xfffd, 0x0455, 0x0456, 0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0xfffd, 0x045f, 0x042a, 0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x0403, 0x0401, 0xfffd, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x040a, 0x040b, 0x040c, 0xfffd, 0xfffd, 0x040f, 0x044e, 0x0430, 0x0431, 0xfffd, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0xfffd, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0xfffd, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x005c, 0x00a4, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xd1\x92", "\xd1\x93", "\xd1\x91", "\xef\xbf\xbd", "\xd1\x95", "\xd1\x96", "\xd1\x97", "\xd1\x98", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xd1\x99", "\xd1\x9a", "\xd1\x9b", "\xd1\x9c", "\xef\xbf\xbd", "\xd1\x9f", "\xd0\xaa", "\xe2\x84\x96", "\xd0\x82", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xd0\x83", "\xd0\x81", "\xef\xbf\xbd", "\xd0\x85", "\xd0\x86", "\xd0\x87", "\xd0\x88", "\xd0\x89", "\xc2\xa6", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xd0\x8a", "\xd0\x8b", "\xd0\x8c", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd0\x8f", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xef\xbf\xbd", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xd1\x86", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xef\xbf\xbd", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xef\xbf\xbd", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\x5c", "\xc2\xa4", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a4 => "\xe1", 0x000000a6 => "\x6a", 0x00000401 => "\x63", 0x00000402 => "\x59", 0x00000403 => "\x62", 0x00000405 => "\x65", 0x00000406 => "\x66", 0x00000407 => "\x67", 0x00000408 => "\x68", 0x00000409 => "\x69", 0x0000040a => "\x70", 0x0000040b => "\x71", 0x0000040c => "\x72", 0x0000040f => "\x75", 0x00000410 => "\xb9", 0x00000411 => "\xba", 0x00000412 => "\xed", 0x00000413 => "\xbf", 0x00000414 => "\xbc", 0x00000415 => "\xbd", 0x00000416 => "\xec", 0x00000417 => "\xfa", 0x00000418 => "\xcb", 0x00000419 => "\xcc", 0x0000041a => "\xcd", 0x0000041b => "\xce", 0x0000041c => "\xcf", 0x0000041d => "\xda", 0x0000041e => "\xdb", 0x0000041f => "\xdc", 0x00000420 => "\xde", 0x00000421 => "\xdf", 0x00000422 => "\xea", 0x00000423 => "\xeb", 0x00000424 => "\xbe", 0x00000425 => "\xca", 0x00000426 => "\xbb", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042a => "\x57", 0x0000042b => "\xef", 0x0000042c => "\xee", 0x0000042d => "\xfc", 0x0000042e => "\xb8", 0x0000042f => "\xdd", 0x00000430 => "\x77", 0x00000431 => "\x78", 0x00000432 => "\xaf", 0x00000433 => "\x8d", 0x00000434 => "\x8a", 0x00000435 => "\x8b", 0x00000436 => "\xae", 0x00000437 => "\xb2", 0x00000438 => "\x8f", 0x00000439 => "\x90", 0x0000043a => "\x9a", 0x0000043b => "\x9b", 0x0000043c => "\x9c", 0x0000043d => "\x9d", 0x0000043e => "\x9e", 0x0000043f => "\x9f", 0x00000440 => "\xaa", 0x00000441 => "\xab", 0x00000442 => "\xac", 0x00000443 => "\xad", 0x00000444 => "\x8c", 0x00000445 => "\x8e", 0x00000446 => "\x80", 0x00000447 => "\xb6", 0x00000448 => "\xb3", 0x00000449 => "\xb5", 0x0000044a => "\xb7", 0x0000044b => "\xb1", 0x0000044c => "\xb0", 0x0000044d => "\xb4", 0x0000044e => "\x76", 0x0000044f => "\xa0", 0x00000451 => "\x44", 0x00000452 => "\x42", 0x00000453 => "\x43", 0x00000455 => "\x46", 0x00000456 => "\x47", 0x00000457 => "\x48", 0x00000458 => "\x49", 0x00000459 => "\x51", 0x0000045a => "\x52", 0x0000045b => "\x53", 0x0000045c => "\x54", 0x0000045f => "\x56", 0x00002116 => "\x58", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM880 - Conversion routines for IBM880 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM880. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP880 alias EBCDIC-CYRILLIC Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 42 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian) 43 | 00000453 | CYRILLIC SMALL LETTER GJE 44 | 00000451 | CYRILLIC SMALL LETTER IO 46 | 00000455 | CYRILLIC SMALL LETTER DZE 47 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 48 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian) 49 | 00000458 | CYRILLIC SMALL LETTER JE 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 00000459 | CYRILLIC SMALL LETTER LJE 52 | 0000045A | CYRILLIC SMALL LETTER NJE 53 | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian) 54 | 0000045C | CYRILLIC SMALL LETTER KJE 56 | 0000045F | CYRILLIC SMALL LETTER DZHE 57 | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 58 | 00002116 | NUMERO SIGN 59 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian) 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 00000403 | CYRILLIC CAPITAL LETTER GJE 63 | 00000401 | CYRILLIC CAPITAL LETTER IO 65 | 00000405 | CYRILLIC CAPITAL LETTER DZE 66 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 67 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian) 68 | 00000408 | CYRILLIC CAPITAL LETTER JE 69 | 00000409 | CYRILLIC CAPITAL LETTER LJE 6A | 000000A6 | BROKEN BAR 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 0000040A | CYRILLIC CAPITAL LETTER NJE 71 | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) 72 | 0000040C | CYRILLIC CAPITAL LETTER KJE 75 | 0000040F | CYRILLIC CAPITAL LETTER DZHE 76 | 0000044E | CYRILLIC SMALL LETTER YU 77 | 00000430 | CYRILLIC SMALL LETTER A 78 | 00000431 | CYRILLIC SMALL LETTER BE 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 00000446 | CYRILLIC SMALL LETTER TSE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 00000434 | CYRILLIC SMALL LETTER DE 8B | 00000435 | CYRILLIC SMALL LETTER IE 8C | 00000444 | CYRILLIC SMALL LETTER EF 8D | 00000433 | CYRILLIC SMALL LETTER GHE 8E | 00000445 | CYRILLIC SMALL LETTER HA 8F | 00000438 | CYRILLIC SMALL LETTER I 90 | 00000439 | CYRILLIC SMALL LETTER SHORT I 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 0000043A | CYRILLIC SMALL LETTER KA 9B | 0000043B | CYRILLIC SMALL LETTER EL 9C | 0000043C | CYRILLIC SMALL LETTER EM 9D | 0000043D | CYRILLIC SMALL LETTER EN 9E | 0000043E | CYRILLIC SMALL LETTER O 9F | 0000043F | CYRILLIC SMALL LETTER PE A0 | 0000044F | CYRILLIC SMALL LETTER YA A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 00000440 | CYRILLIC SMALL LETTER ER AB | 00000441 | CYRILLIC SMALL LETTER ES AC | 00000442 | CYRILLIC SMALL LETTER TE AD | 00000443 | CYRILLIC SMALL LETTER U AE | 00000436 | CYRILLIC SMALL LETTER ZHE AF | 00000432 | CYRILLIC SMALL LETTER VE B0 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN B1 | 0000044B | CYRILLIC SMALL LETTER YERU B2 | 00000437 | CYRILLIC SMALL LETTER ZE B3 | 00000448 | CYRILLIC SMALL LETTER SHA B4 | 0000044D | CYRILLIC SMALL LETTER E B5 | 00000449 | CYRILLIC SMALL LETTER SHCHA B6 | 00000447 | CYRILLIC SMALL LETTER CHE B7 | 0000044A | CYRILLIC SMALL LETTER HARD SIGN B8 | 0000042E | CYRILLIC CAPITAL LETTER YU B9 | 00000410 | CYRILLIC CAPITAL LETTER A BA | 00000411 | CYRILLIC CAPITAL LETTER BE BB | 00000426 | CYRILLIC CAPITAL LETTER TSE BC | 00000414 | CYRILLIC CAPITAL LETTER DE BD | 00000415 | CYRILLIC CAPITAL LETTER IE BE | 00000424 | CYRILLIC CAPITAL LETTER EF BF | 00000413 | CYRILLIC CAPITAL LETTER GHE C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 00000425 | CYRILLIC CAPITAL LETTER HA CB | 00000418 | CYRILLIC CAPITAL LETTER I CC | 00000419 | CYRILLIC CAPITAL LETTER SHORT I CD | 0000041A | CYRILLIC CAPITAL LETTER KA CE | 0000041B | CYRILLIC CAPITAL LETTER EL CF | 0000041C | CYRILLIC CAPITAL LETTER EM D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 0000041D | CYRILLIC CAPITAL LETTER EN DB | 0000041E | CYRILLIC CAPITAL LETTER O DC | 0000041F | CYRILLIC CAPITAL LETTER PE DD | 0000042F | CYRILLIC CAPITAL LETTER YA DE | 00000420 | CYRILLIC CAPITAL LETTER ER DF | 00000421 | CYRILLIC CAPITAL LETTER ES E0 | 0000005C | REVERSE SOLIDUS E1 | 000000A4 | CURRENCY SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 00000422 | CYRILLIC CAPITAL LETTER TE EB | 00000423 | CYRILLIC CAPITAL LETTER U EC | 00000416 | CYRILLIC CAPITAL LETTER ZHE ED | 00000412 | CYRILLIC CAPITAL LETTER VE EE | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN EF | 0000042B | CYRILLIC CAPITAL LETTER YERU F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM891.pm000644 000765 000024 00000043476 12716422334 021502 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM891. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM891; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM891 - Conversion routines for IBM891 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM891. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP891 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM903.pm000644 000765 000024 00000043476 12716422334 021474 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM903. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM903; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM903 - Conversion routines for IBM903 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM903. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP903 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM904.pm000644 000765 000024 00000043750 12716422334 021470 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM904. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM904; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00a2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ac, 0x00a6, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\xa2", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xac", "\xc2\xa6", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a2 => "\x80", 0x000000a6 => "\xfe", 0x000000ac => "\xfd", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM904 - Conversion routines for IBM904 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM904. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP904 alias 904 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000A2 | CENT SIGN FD | 000000AC | NOT SIGN FE | 000000A6 | BROKEN BAR =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM905.pm000644 000765 000024 00000064526 12716422334 021475 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM905. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM905; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0xfffd, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0xfffd, 0x010b, 0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0xfffd, 0x010a, 0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0xfffd, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc, 0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x0127, 0x0109, 0x015d, 0x016d, 0xfffd, 0x007c, 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0125, 0x011d, 0x0135, 0x02db, 0xfffd, 0x00a4, 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x0126, 0x0108, 0x015c, 0x016c, 0xfffd, 0x0040, 0x00b7, 0x00a3, 0x017c, 0x007d, 0x017b, 0x00a7, 0x005d, 0xfffd, 0x00bd, 0x0024, 0x0124, 0x011c, 0x0134, 0x00a8, 0x00b4, 0x00d7, 0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x0121, 0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0060, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0xfffd, 0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x0120, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xef\xbf\xbd", "\xc3\xa2", "\xc3\xa4", "\xc3\xa0", "\xc3\xa1", "\xef\xbf\xbd", "\xc4\x8b", "\x7b", "\xc3\xb1", "\xc3\x87", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xa8", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xac", "\xc3\x9f", "\xc4\x9e", "\xc4\xb0", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xc3\x82", "\xc3\x84", "\xc3\x80", "\xc3\x81", "\xef\xbf\xbd", "\xc4\x8a", "\x5b", "\xc3\x91", "\xc5\x9f", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xef\xbf\xbd", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc4\xb1", "\x3a", "\xc3\x96", "\xc5\x9e", "\x27", "\x3d", "\xc3\x9c", "\xcb\x98", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xc4\xa7", "\xc4\x89", "\xc5\x9d", "\xc5\xad", "\xef\xbf\xbd", "\x7c", "\xc2\xb0", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xc4\xa5", "\xc4\x9d", "\xc4\xb5", "\xcb\x9b", "\xef\xbf\xbd", "\xc2\xa4", "\xc2\xb5", "\xc3\xb6", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc4\xa6", "\xc4\x88", "\xc5\x9c", "\xc5\xac", "\xef\xbf\xbd", "\x40", "\xc2\xb7", "\xc2\xa3", "\xc5\xbc", "\x7d", "\xc5\xbb", "\xc2\xa7", "\x5d", "\xef\xbf\xbd", "\xc2\xbd", "\x24", "\xc4\xa4", "\xc4\x9c", "\xc4\xb4", "\xc2\xa8", "\xc2\xb4", "\xc3\x97", "\xc3\xa7", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xc3\xb4", "\x7e", "\xc3\xb2", "\xc3\xb3", "\xc4\xa1", "\xc4\x9f", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x60", "\xc3\xbb", "\x5c", "\xc3\xb9", "\xc3\xba", "\xef\xbf\xbd", "\xc3\xbc", "\xc3\xb7", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc2\xb2", "\xc3\x94", "\x23", "\xc3\x92", "\xc3\x93", "\xc4\xa0", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xc2\xb3", "\xc3\x9b", "\x22", "\xc3\x99", "\xc3\x9a", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\xfc", 0x00000023 => "\xec", 0x00000024 => "\xb9", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\xaf", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x68", 0x0000005c => "\xdc", 0x0000005d => "\xb6", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\xda", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\x48", 0x0000007c => "\x8f", 0x0000007d => "\xb3", 0x0000007e => "\xcc", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a3 => "\xb1", 0x000000a4 => "\x9f", 0x000000a7 => "\xb5", 0x000000a8 => "\xbd", 0x000000ad => "\xca", 0x000000b0 => "\x90", 0x000000b2 => "\xea", 0x000000b3 => "\xfa", 0x000000b4 => "\xbe", 0x000000b5 => "\xa0", 0x000000b7 => "\xb0", 0x000000bd => "\xb8", 0x000000c0 => "\x64", 0x000000c1 => "\x65", 0x000000c2 => "\x62", 0x000000c4 => "\x63", 0x000000c7 => "\x4a", 0x000000c8 => "\x74", 0x000000c9 => "\x71", 0x000000ca => "\x72", 0x000000cb => "\x73", 0x000000cc => "\x78", 0x000000cd => "\x75", 0x000000ce => "\x76", 0x000000cf => "\x77", 0x000000d1 => "\x69", 0x000000d2 => "\xed", 0x000000d3 => "\xee", 0x000000d4 => "\xeb", 0x000000d6 => "\x7b", 0x000000d7 => "\xbf", 0x000000d9 => "\xfd", 0x000000da => "\xfe", 0x000000db => "\xfb", 0x000000dc => "\x7f", 0x000000df => "\x59", 0x000000e0 => "\x44", 0x000000e1 => "\x45", 0x000000e2 => "\x42", 0x000000e4 => "\x43", 0x000000e7 => "\xc0", 0x000000e8 => "\x54", 0x000000e9 => "\x51", 0x000000ea => "\x52", 0x000000eb => "\x53", 0x000000ec => "\x58", 0x000000ed => "\x55", 0x000000ee => "\x56", 0x000000ef => "\x57", 0x000000f1 => "\x49", 0x000000f2 => "\xcd", 0x000000f3 => "\xce", 0x000000f4 => "\xcb", 0x000000f6 => "\xa1", 0x000000f7 => "\xe1", 0x000000f9 => "\xdd", 0x000000fa => "\xde", 0x000000fb => "\xdb", 0x000000fc => "\xe0", 0x00000108 => "\xab", 0x00000109 => "\x8b", 0x0000010a => "\x67", 0x0000010b => "\x47", 0x0000011c => "\xbb", 0x0000011d => "\x9b", 0x0000011e => "\x5a", 0x0000011f => "\xd0", 0x00000120 => "\xef", 0x00000121 => "\xcf", 0x00000124 => "\xba", 0x00000125 => "\x9a", 0x00000126 => "\xaa", 0x00000127 => "\x8a", 0x00000130 => "\x5b", 0x00000131 => "\x79", 0x00000134 => "\xbc", 0x00000135 => "\x9c", 0x0000015c => "\xac", 0x0000015d => "\x8c", 0x0000015e => "\x7c", 0x0000015f => "\x6a", 0x0000016c => "\xad", 0x0000016d => "\x8d", 0x0000017b => "\xb4", 0x0000017c => "\xb2", 0x000002d8 => "\x80", 0x000002db => "\x9d", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM905 - Conversion routines for IBM905 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM905. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990 alias CP905 alias EBCDIC-CP-TR Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 42 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 43 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 44 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 45 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 47 | 0000010B | LATIN SMALL LETTER C WITH DOT ABOVE 48 | 0000007B | LEFT CURLY BRACKET 49 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 4A | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 52 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 53 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 54 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 55 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 56 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 57 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 58 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 59 | 000000DF | LATIN SMALL LETTER SHARP S (German) 5A | 0000011E | LATIN CAPITAL LETTER G WITH BREVE 5B | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 63 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 64 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 65 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 67 | 0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE 68 | 0000005B | LEFT SQUARE BRACKET 69 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 6A | 0000015F | LATIN SMALL LETTER S WITH CEDILLA 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 71 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 72 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 73 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 74 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 75 | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 76 | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 77 | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 78 | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 79 | 00000131 | LATIN SMALL LETTER DOTLESS I 7A | 0000003A | COLON 7B | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 7C | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 80 | 000002D8 | BREVE 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 00000127 | LATIN SMALL LETTER H WITH STROKE 8B | 00000109 | LATIN SMALL LETTER C WITH CIRCUMFLEX 8C | 0000015D | LATIN SMALL LETTER S WITH CIRCUMFLEX 8D | 0000016D | LATIN SMALL LETTER U WITH BREVE 8F | 0000007C | VERTICAL LINE 90 | 000000B0 | DEGREE SIGN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 00000125 | LATIN SMALL LETTER H WITH CIRCUMFLEX 9B | 0000011D | LATIN SMALL LETTER G WITH CIRCUMFLEX 9C | 00000135 | LATIN SMALL LETTER J WITH CIRCUMFLEX 9D | 000002DB | OGONEK 9F | 000000A4 | CURRENCY SIGN A0 | 000000B5 | MICRO SIGN A1 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 00000126 | LATIN CAPITAL LETTER H WITH STROKE AB | 00000108 | LATIN CAPITAL LETTER C WITH CIRCUMFLEX AC | 0000015C | LATIN CAPITAL LETTER S WITH CIRCUMFLEX AD | 0000016C | LATIN CAPITAL LETTER U WITH BREVE AF | 00000040 | COMMERCIAL AT B0 | 000000B7 | MIDDLE DOT B1 | 000000A3 | POUND SIGN B2 | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE B3 | 0000007D | RIGHT CURLY BRACKET B4 | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B5 | 000000A7 | SECTION SIGN B6 | 0000005D | RIGHT SQUARE BRACKET B8 | 000000BD | VULGAR FRACTION ONE HALF B9 | 00000024 | DOLLAR SIGN BA | 00000124 | LATIN CAPITAL LETTER H WITH CIRCUMFLEX BB | 0000011C | LATIN CAPITAL LETTER G WITH CIRCUMFLEX BC | 00000134 | LATIN CAPITAL LETTER J WITH CIRCUMFLEX BD | 000000A8 | DIAERESIS BE | 000000B4 | ACUTE ACCENT BF | 000000D7 | MULTIPLICATION SIGN C0 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CB | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX CC | 0000007E | TILDE CD | 000000F2 | LATIN SMALL LETTER O WITH GRAVE CE | 000000F3 | LATIN SMALL LETTER O WITH ACUTE CF | 00000121 | LATIN SMALL LETTER G WITH DOT ABOVE D0 | 0000011F | LATIN SMALL LETTER G WITH BREVE D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 00000060 | GRAVE ACCENT DB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX DC | 0000005C | REVERSE SOLIDUS DD | 000000F9 | LATIN SMALL LETTER U WITH GRAVE DE | 000000FA | LATIN SMALL LETTER U WITH ACUTE E0 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS E1 | 000000F7 | DIVISION SIGN E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 000000B2 | SUPERSCRIPT TWO EB | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX EC | 00000023 | NUMBER SIGN ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FA | 000000B3 | SUPERSCRIPT THREE FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX FC | 00000022 | QUOTATION MARK FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IBM918.pm000644 000765 000024 00000061233 12716422334 021471 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IBM918. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IBM918; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, 0x0020, 0x00a0, 0x060c, 0x061b, 0x061f, 0x0623, 0x0627, 0xfe8e, 0xfffd, 0x0628, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, 0x0026, 0xfe91, 0x067e, 0xfffd, 0x0629, 0x062a, 0xfe97, 0xfffd, 0xfffd, 0x062b, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, 0x002d, 0x002f, 0xfe9b, 0x062c, 0xfe9f, 0xfffd, 0xfffd, 0x062d, 0xfea3, 0x062e, 0x0060, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, 0xfea7, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x062f, 0xfffd, 0x0630, 0x0631, 0xfffd, 0x0632, 0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0633, 0xfeb3, 0x0634, 0xfeb7, 0x0635, 0xfebb, 0x0636, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfebf, 0x0637, 0x0638, 0x0639, 0xfeca, 0xfecb, 0xfecc, 0x063a, 0xfece, 0xfecf, 0xfed0, 0x0641, 0xfed3, 0x0642, 0xfed7, 0x0643, 0xfedb, 0x007c, 0xfffd, 0xfffd, 0x0644, 0xfede, 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0xfffd, 0x0645, 0xfee3, 0xfffd, 0x0646, 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0xfee7, 0xfffd, 0x0648, 0xfffd, 0xfffd, 0xfffd, 0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0621, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0x0651, 0xfe7d, 0x009f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\xc2\x9c", "\x09", "\xc2\x86", "\x7f", "\xc2\x97", "\xc2\x8d", "\xc2\x8e", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xc2\x9d", "\xc2\x85", "\x08", "\xc2\x87", "\x18", "\x19", "\xc2\x92", "\xc2\x8f", "\x1c", "\x1d", "\x1e", "\x1f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\x0a", "\x17", "\x1b", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\x05", "\x06", "\x07", "\xc2\x90", "\xc2\x91", "\x16", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\x04", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\x14", "\x15", "\xc2\x9e", "\x1a", "\x20", "\xc2\xa0", "\xd8\x8c", "\xd8\x9b", "\xd8\x9f", "\xd8\xa3", "\xd8\xa7", "\xef\xba\x8e", "\xef\xbf\xbd", "\xd8\xa8", "\x5b", "\x2e", "\x3c", "\x28", "\x2b", "\x21", "\x26", "\xef\xba\x91", "\xd9\xbe", "\xef\xbf\xbd", "\xd8\xa9", "\xd8\xaa", "\xef\xba\x97", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\xab", "\x5d", "\x24", "\x2a", "\x29", "\x3b", "\x5e", "\x2d", "\x2f", "\xef\xba\x9b", "\xd8\xac", "\xef\xba\x9f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\xad", "\xef\xba\xa3", "\xd8\xae", "\x60", "\x2c", "\x25", "\x5f", "\x3e", "\x3f", "\xd9\xa0", "\xd9\xa1", "\xd9\xa2", "\xd9\xa3", "\xd9\xa4", "\xd9\xa5", "\xd9\xa6", "\xd9\xa7", "\xd9\xa8", "\xd9\xa9", "\x3a", "\x23", "\x40", "\x27", "\x3d", "\x22", "\xef\xba\xa7", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\xd8\xaf", "\xef\xbf\xbd", "\xd8\xb0", "\xd8\xb1", "\xef\xbf\xbd", "\xd8\xb2", "\xef\xbf\xbd", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\xd8\xb3", "\xef\xba\xb3", "\xd8\xb4", "\xef\xba\xb7", "\xd8\xb5", "\xef\xba\xbb", "\xd8\xb6", "\x7e", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xba\xbf", "\xd8\xb7", "\xd8\xb8", "\xd8\xb9", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xef\xbb\x8c", "\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xef\xbb\x90", "\xd9\x81", "\xef\xbb\x93", "\xd9\x82", "\xef\xbb\x97", "\xd9\x83", "\xef\xbb\x9b", "\x7c", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\x84", "\xef\xbb\x9e", "\x7b", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\xc2\xad", "\xef\xbf\xbd", "\xd9\x85", "\xef\xbb\xa3", "\xef\xbf\xbd", "\xd9\x86", "\x7d", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\xef\xbb\xa7", "\xef\xbf\xbd", "\xd9\x88", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5c", "\xef\xbf\xbd", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xd8\xa1", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\x91", "\xef\xb9\xbd", "\xc2\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x37", 0x00000005 => "\x2d", 0x00000006 => "\x2e", 0x00000007 => "\x2f", 0x00000008 => "\x16", 0x00000009 => "\x05", 0x0000000a => "\x25", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x3c", 0x00000015 => "\x3d", 0x00000016 => "\x32", 0x00000017 => "\x26", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x3f", 0x0000001b => "\x27", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x40", 0x00000021 => "\x4f", 0x00000022 => "\x7f", 0x00000023 => "\x7b", 0x00000024 => "\x5b", 0x00000025 => "\x6c", 0x00000026 => "\x50", 0x00000027 => "\x7d", 0x00000028 => "\x4d", 0x00000029 => "\x5d", 0x0000002a => "\x5c", 0x0000002b => "\x4e", 0x0000002c => "\x6b", 0x0000002d => "\x60", 0x0000002e => "\x4b", 0x0000002f => "\x61", 0x00000030 => "\xf0", 0x00000031 => "\xf1", 0x00000032 => "\xf2", 0x00000033 => "\xf3", 0x00000034 => "\xf4", 0x00000035 => "\xf5", 0x00000036 => "\xf6", 0x00000037 => "\xf7", 0x00000038 => "\xf8", 0x00000039 => "\xf9", 0x0000003a => "\x7a", 0x0000003b => "\x5e", 0x0000003c => "\x4c", 0x0000003d => "\x7e", 0x0000003e => "\x6e", 0x0000003f => "\x6f", 0x00000040 => "\x7c", 0x00000041 => "\xc1", 0x00000042 => "\xc2", 0x00000043 => "\xc3", 0x00000044 => "\xc4", 0x00000045 => "\xc5", 0x00000046 => "\xc6", 0x00000047 => "\xc7", 0x00000048 => "\xc8", 0x00000049 => "\xc9", 0x0000004a => "\xd1", 0x0000004b => "\xd2", 0x0000004c => "\xd3", 0x0000004d => "\xd4", 0x0000004e => "\xd5", 0x0000004f => "\xd6", 0x00000050 => "\xd7", 0x00000051 => "\xd8", 0x00000052 => "\xd9", 0x00000053 => "\xe2", 0x00000054 => "\xe3", 0x00000055 => "\xe4", 0x00000056 => "\xe5", 0x00000057 => "\xe6", 0x00000058 => "\xe7", 0x00000059 => "\xe8", 0x0000005a => "\xe9", 0x0000005b => "\x4a", 0x0000005c => "\xe0", 0x0000005d => "\x5a", 0x0000005e => "\x5f", 0x0000005f => "\x6d", 0x00000060 => "\x6a", 0x00000061 => "\x81", 0x00000062 => "\x82", 0x00000063 => "\x83", 0x00000064 => "\x84", 0x00000065 => "\x85", 0x00000066 => "\x86", 0x00000067 => "\x87", 0x00000068 => "\x88", 0x00000069 => "\x89", 0x0000006a => "\x91", 0x0000006b => "\x92", 0x0000006c => "\x93", 0x0000006d => "\x94", 0x0000006e => "\x95", 0x0000006f => "\x96", 0x00000070 => "\x97", 0x00000071 => "\x98", 0x00000072 => "\x99", 0x00000073 => "\xa2", 0x00000074 => "\xa3", 0x00000075 => "\xa4", 0x00000076 => "\xa5", 0x00000077 => "\xa6", 0x00000078 => "\xa7", 0x00000079 => "\xa8", 0x0000007a => "\xa9", 0x0000007b => "\xc0", 0x0000007c => "\xbb", 0x0000007d => "\xd0", 0x0000007e => "\xa1", 0x0000007f => "\x07", 0x00000080 => "\x20", 0x00000081 => "\x21", 0x00000082 => "\x22", 0x00000083 => "\x23", 0x00000084 => "\x24", 0x00000085 => "\x15", 0x00000086 => "\x06", 0x00000087 => "\x17", 0x00000088 => "\x28", 0x00000089 => "\x29", 0x0000008a => "\x2a", 0x0000008b => "\x2b", 0x0000008c => "\x2c", 0x0000008d => "\x09", 0x0000008e => "\x0a", 0x0000008f => "\x1b", 0x00000090 => "\x30", 0x00000091 => "\x31", 0x00000092 => "\x1a", 0x00000093 => "\x33", 0x00000094 => "\x34", 0x00000095 => "\x35", 0x00000096 => "\x36", 0x00000097 => "\x08", 0x00000098 => "\x38", 0x00000099 => "\x39", 0x0000009a => "\x3a", 0x0000009b => "\x3b", 0x0000009c => "\x04", 0x0000009d => "\x14", 0x0000009e => "\x3e", 0x0000009f => "\xff", 0x000000a0 => "\x41", 0x000000ad => "\xca", 0x0000060c => "\x42", 0x0000061b => "\x43", 0x0000061f => "\x44", 0x00000621 => "\xea", 0x00000623 => "\x45", 0x00000627 => "\x46", 0x00000628 => "\x49", 0x00000629 => "\x54", 0x0000062a => "\x55", 0x0000062b => "\x59", 0x0000062c => "\x63", 0x0000062d => "\x67", 0x0000062e => "\x69", 0x0000062f => "\x8a", 0x00000630 => "\x8c", 0x00000631 => "\x8d", 0x00000632 => "\x8f", 0x00000633 => "\x9a", 0x00000634 => "\x9c", 0x00000635 => "\x9e", 0x00000636 => "\xa0", 0x00000637 => "\xab", 0x00000638 => "\xac", 0x00000639 => "\xad", 0x0000063a => "\xb1", 0x00000641 => "\xb5", 0x00000642 => "\xb7", 0x00000643 => "\xb9", 0x00000644 => "\xbe", 0x00000645 => "\xcc", 0x00000646 => "\xcf", 0x00000648 => "\xdc", 0x00000651 => "\xfd", 0x00000660 => "\x70", 0x00000661 => "\x71", 0x00000662 => "\x72", 0x00000663 => "\x73", 0x00000664 => "\x74", 0x00000665 => "\x75", 0x00000666 => "\x76", 0x00000667 => "\x77", 0x00000668 => "\x78", 0x00000669 => "\x79", 0x0000067e => "\x52", 0x0000fe7d => "\xfe", 0x0000fe8e => "\x47", 0x0000fe91 => "\x51", 0x0000fe97 => "\x56", 0x0000fe9b => "\x62", 0x0000fe9f => "\x64", 0x0000fea3 => "\x68", 0x0000fea7 => "\x80", 0x0000feb3 => "\x9b", 0x0000feb7 => "\x9d", 0x0000febb => "\x9f", 0x0000febf => "\xaa", 0x0000feca => "\xae", 0x0000fecb => "\xaf", 0x0000fecc => "\xb0", 0x0000fece => "\xb2", 0x0000fecf => "\xb3", 0x0000fed0 => "\xb4", 0x0000fed3 => "\xb6", 0x0000fed7 => "\xb8", 0x0000fedb => "\xba", 0x0000fede => "\xbf", 0x0000fee3 => "\xcd", 0x0000fee7 => "\xda", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x6f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IBM918 - Conversion routines for IBM918 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IBM918. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: IBM NLS RM Vol2 SE09-8002-01, March 1990 alias CP918 alias EBCDIC-CP-AR2 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 0000009C | STRING TERMINATOR (ST) 05 | 00000009 | CHARACTER TABULATION (HT) 06 | 00000086 | START OF SELECTED AREA (SSA) 07 | 0000007F | DELETE (DEL) 08 | 00000097 | END OF GUARDED AREA (EPA) 09 | 0000008D | REVERSE LINE FEED (RI) 0A | 0000008E | SINGLE-SHIFT TWO (SS2) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 0000009D | OPERATING SYSTEM COMMAND (OSC) 15 | 00000085 | NEXT LINE (NEL) 16 | 00000008 | BACKSPACE (BS) 17 | 00000087 | END OF SELECTED AREA (ESA) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 00000092 | PRIVATE USE TWO (PU2) 1B | 0000008F | SINGLE-SHIFT THREE (SS3) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000080 | PADDING CHARACTER (PAD) 21 | 00000081 | HIGH OCTET PRESET (HOP) 22 | 00000082 | BREAK PERMITTED HERE (BPH) 23 | 00000083 | NO BREAK HERE (NBH) 24 | 00000084 | INDEX (IND) 25 | 0000000A | LINE FEED (LF) 26 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 27 | 0000001B | ESCAPE (ESC) 28 | 00000088 | CHARACTER TABULATION SET (HTS) 29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 2A | 0000008A | LINE TABULATION SET (VTS) 2B | 0000008B | PARTIAL LINE FORWARD (PLD) 2C | 0000008C | PARTIAL LINE BACKWARD (PLU) 2D | 00000005 | ENQUIRY (ENQ) 2E | 00000006 | ACKNOWLEDGE (ACK) 2F | 00000007 | BELL (BEL) 30 | 00000090 | DEVICE CONTROL STRING (DCS) 31 | 00000091 | PRIVATE USE ONE (PU1) 32 | 00000016 | SYNCHRONOUS IDLE (SYN) 33 | 00000093 | SET TRANSMIT STATE (STS) 34 | 00000094 | CANCEL CHARACTER (CCH) 35 | 00000095 | MESSAGE WAITING (MW) 36 | 00000096 | START OF GUARDED AREA (SPA) 37 | 00000004 | END OF TRANSMISSION (EOT) 38 | 00000098 | START OF STRING (SOS) 39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 3C | 00000014 | DEVICE CONTROL FOUR (DC4) 3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 3E | 0000009E | PRIVACY MESSAGE (PM) 3F | 0000001A | SUBSTITUTE (SUB) 40 | 00000020 | SPACE 41 | 000000A0 | NO-BREAK SPACE 42 | 0000060C | ARABIC COMMA 43 | 0000061B | ARABIC SEMICOLON 44 | 0000061F | ARABIC QUESTION MARK 45 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE 46 | 00000627 | ARABIC LETTER ALEF 47 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM 49 | 00000628 | ARABIC LETTER BEH 4A | 0000005B | LEFT SQUARE BRACKET 4B | 0000002E | FULL STOP 4C | 0000003C | LESS-THAN SIGN 4D | 00000028 | LEFT PARENTHESIS 4E | 0000002B | PLUS SIGN 4F | 00000021 | EXCLAMATION MARK 50 | 00000026 | AMPERSAND 51 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM 52 | 0000067E | ARABIC LETTER PEH 54 | 00000629 | ARABIC LETTER TEH MARBUTA 55 | 0000062A | ARABIC LETTER TEH 56 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM 59 | 0000062B | ARABIC LETTER THEH 5A | 0000005D | RIGHT SQUARE BRACKET 5B | 00000024 | DOLLAR SIGN 5C | 0000002A | ASTERISK 5D | 00000029 | RIGHT PARENTHESIS 5E | 0000003B | SEMICOLON 5F | 0000005E | CIRCUMFLEX ACCENT 60 | 0000002D | HYPHEN-MINUS 61 | 0000002F | SOLIDUS 62 | 0000FE9B | ARABIC LETTER THEH INITIAL FORM 63 | 0000062C | ARABIC LETTER JEEM 64 | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM 67 | 0000062D | ARABIC LETTER HAH 68 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM 69 | 0000062E | ARABIC LETTER KHAH 6A | 00000060 | GRAVE ACCENT 6B | 0000002C | COMMA 6C | 00000025 | PERCENT SIGN 6D | 0000005F | LOW LINE 6E | 0000003E | GREATER-THAN SIGN 6F | 0000003F | QUESTION MARK 70 | 00000660 | ARABIC-INDIC DIGIT ZERO 71 | 00000661 | ARABIC-INDIC DIGIT ONE 72 | 00000662 | ARABIC-INDIC DIGIT TWO 73 | 00000663 | ARABIC-INDIC DIGIT THREE 74 | 00000664 | ARABIC-INDIC DIGIT FOUR 75 | 00000665 | ARABIC-INDIC DIGIT FIVE 76 | 00000666 | ARABIC-INDIC DIGIT SIX 77 | 00000667 | ARABIC-INDIC DIGIT SEVEN 78 | 00000668 | ARABIC-INDIC DIGIT EIGHT 79 | 00000669 | ARABIC-INDIC DIGIT NINE 7A | 0000003A | COLON 7B | 00000023 | NUMBER SIGN 7C | 00000040 | COMMERCIAL AT 7D | 00000027 | APOSTROPHE 7E | 0000003D | EQUALS SIGN 7F | 00000022 | QUOTATION MARK 80 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM 81 | 00000061 | LATIN SMALL LETTER A 82 | 00000062 | LATIN SMALL LETTER B 83 | 00000063 | LATIN SMALL LETTER C 84 | 00000064 | LATIN SMALL LETTER D 85 | 00000065 | LATIN SMALL LETTER E 86 | 00000066 | LATIN SMALL LETTER F 87 | 00000067 | LATIN SMALL LETTER G 88 | 00000068 | LATIN SMALL LETTER H 89 | 00000069 | LATIN SMALL LETTER I 8A | 0000062F | ARABIC LETTER DAL 8C | 00000630 | ARABIC LETTER THAL 8D | 00000631 | ARABIC LETTER REH 8F | 00000632 | ARABIC LETTER ZAIN 91 | 0000006A | LATIN SMALL LETTER J 92 | 0000006B | LATIN SMALL LETTER K 93 | 0000006C | LATIN SMALL LETTER L 94 | 0000006D | LATIN SMALL LETTER M 95 | 0000006E | LATIN SMALL LETTER N 96 | 0000006F | LATIN SMALL LETTER O 97 | 00000070 | LATIN SMALL LETTER P 98 | 00000071 | LATIN SMALL LETTER Q 99 | 00000072 | LATIN SMALL LETTER R 9A | 00000633 | ARABIC LETTER SEEN 9B | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM 9C | 00000634 | ARABIC LETTER SHEEN 9D | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM 9E | 00000635 | ARABIC LETTER SAD 9F | 0000FEBB | ARABIC LETTER SAD INITIAL FORM A0 | 00000636 | ARABIC LETTER DAD A1 | 0000007E | TILDE A2 | 00000073 | LATIN SMALL LETTER S A3 | 00000074 | LATIN SMALL LETTER T A4 | 00000075 | LATIN SMALL LETTER U A5 | 00000076 | LATIN SMALL LETTER V A6 | 00000077 | LATIN SMALL LETTER W A7 | 00000078 | LATIN SMALL LETTER X A8 | 00000079 | LATIN SMALL LETTER Y A9 | 0000007A | LATIN SMALL LETTER Z AA | 0000FEBF | ARABIC LETTER DAD INITIAL FORM AB | 00000637 | ARABIC LETTER TAH AC | 00000638 | ARABIC LETTER ZAH AD | 00000639 | ARABIC LETTER AIN AE | 0000FECA | ARABIC LETTER AIN FINAL FORM AF | 0000FECB | ARABIC LETTER AIN INITIAL FORM B0 | 0000FECC | ARABIC LETTER AIN MEDIAL FORM B1 | 0000063A | ARABIC LETTER GHAIN B2 | 0000FECE | ARABIC LETTER GHAIN FINAL FORM B3 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM B4 | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM B5 | 00000641 | ARABIC LETTER FEH B6 | 0000FED3 | ARABIC LETTER FEH INITIAL FORM B7 | 00000642 | ARABIC LETTER QAF B8 | 0000FED7 | ARABIC LETTER QAF INITIAL FORM B9 | 00000643 | ARABIC LETTER KAF BA | 0000FEDB | ARABIC LETTER KAF INITIAL FORM BB | 0000007C | VERTICAL LINE BE | 00000644 | ARABIC LETTER LAM BF | 0000FEDE | ARABIC LETTER LAM FINAL FORM C0 | 0000007B | LEFT CURLY BRACKET C1 | 00000041 | LATIN CAPITAL LETTER A C2 | 00000042 | LATIN CAPITAL LETTER B C3 | 00000043 | LATIN CAPITAL LETTER C C4 | 00000044 | LATIN CAPITAL LETTER D C5 | 00000045 | LATIN CAPITAL LETTER E C6 | 00000046 | LATIN CAPITAL LETTER F C7 | 00000047 | LATIN CAPITAL LETTER G C8 | 00000048 | LATIN CAPITAL LETTER H C9 | 00000049 | LATIN CAPITAL LETTER I CA | 000000AD | SOFT HYPHEN CC | 00000645 | ARABIC LETTER MEEM CD | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM CF | 00000646 | ARABIC LETTER NOON D0 | 0000007D | RIGHT CURLY BRACKET D1 | 0000004A | LATIN CAPITAL LETTER J D2 | 0000004B | LATIN CAPITAL LETTER K D3 | 0000004C | LATIN CAPITAL LETTER L D4 | 0000004D | LATIN CAPITAL LETTER M D5 | 0000004E | LATIN CAPITAL LETTER N D6 | 0000004F | LATIN CAPITAL LETTER O D7 | 00000050 | LATIN CAPITAL LETTER P D8 | 00000051 | LATIN CAPITAL LETTER Q D9 | 00000052 | LATIN CAPITAL LETTER R DA | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM DC | 00000648 | ARABIC LETTER WAW E0 | 0000005C | REVERSE SOLIDUS E2 | 00000053 | LATIN CAPITAL LETTER S E3 | 00000054 | LATIN CAPITAL LETTER T E4 | 00000055 | LATIN CAPITAL LETTER U E5 | 00000056 | LATIN CAPITAL LETTER V E6 | 00000057 | LATIN CAPITAL LETTER W E7 | 00000058 | LATIN CAPITAL LETTER X E8 | 00000059 | LATIN CAPITAL LETTER Y E9 | 0000005A | LATIN CAPITAL LETTER Z EA | 00000621 | ARABIC LETTER HAMZA F0 | 00000030 | DIGIT ZERO F1 | 00000031 | DIGIT ONE F2 | 00000032 | DIGIT TWO F3 | 00000033 | DIGIT THREE F4 | 00000034 | DIGIT FOUR F5 | 00000035 | DIGIT FIVE F6 | 00000036 | DIGIT SIX F7 | 00000037 | DIGIT SEVEN F8 | 00000038 | DIGIT EIGHT F9 | 00000039 | DIGIT NINE FD | 00000651 | ARABIC SHADDA FE | 0000FE7D | ARABIC SHADDA MEDIAL FORM FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/IEC_P27_1.pm000644 000765 000024 00000063746 12716422334 022103 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for IEC_P27-1. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::IEC_P27_1; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x02c7, 0x2261, 0x2227, 0x2228, 0x2229, 0x222a, 0x2282, 0x2283, 0x21d0, 0x21d2, 0x2234, 0x2235, 0x2208, 0x220b, 0x2286, 0x2287, 0x222b, 0x222e, 0x221e, 0x2207, 0x2202, 0x223c, 0x2248, 0x2243, 0x2245, 0x2264, 0x2260, 0x2265, 0x2194, 0x00ac, 0x2200, 0x2203, 0x05d0, 0x25a1, 0x2225, 0x0393, 0x0394, 0x22a5, 0x2220, 0x221f, 0x0398, 0x2329, 0x232a, 0x039b, 0x2032, 0x2033, 0x039e, 0x2213, 0x03a0, 0x00b2, 0x03a3, 0x00d7, 0x00b3, 0x03a5, 0x03a6, 0x00b7, 0x03a8, 0x03a9, 0x2205, 0x21c0, 0x221a, 0x0192, 0x221d, 0x00b1, 0x00b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x2030, 0x03c0, 0x03c1, 0x03c3, 0x00f7, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x2020, 0x2190, 0x2191, 0x2192, 0x2193, 0x203e, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xcb\x87", "\xe2\x89\xa1", "\xe2\x88\xa7", "\xe2\x88\xa8", "\xe2\x88\xa9", "\xe2\x88\xaa", "\xe2\x8a\x82", "\xe2\x8a\x83", "\xe2\x87\x90", "\xe2\x87\x92", "\xe2\x88\xb4", "\xe2\x88\xb5", "\xe2\x88\x88", "\xe2\x88\x8b", "\xe2\x8a\x86", "\xe2\x8a\x87", "\xe2\x88\xab", "\xe2\x88\xae", "\xe2\x88\x9e", "\xe2\x88\x87", "\xe2\x88\x82", "\xe2\x88\xbc", "\xe2\x89\x88", "\xe2\x89\x83", "\xe2\x89\x85", "\xe2\x89\xa4", "\xe2\x89\xa0", "\xe2\x89\xa5", "\xe2\x86\x94", "\xc2\xac", "\xe2\x88\x80", "\xe2\x88\x83", "\xd7\x90", "\xe2\x96\xa1", "\xe2\x88\xa5", "\xce\x93", "\xce\x94", "\xe2\x8a\xa5", "\xe2\x88\xa0", "\xe2\x88\x9f", "\xce\x98", "\xe2\x8c\xa9", "\xe2\x8c\xaa", "\xce\x9b", "\xe2\x80\xb2", "\xe2\x80\xb3", "\xce\x9e", "\xe2\x88\x93", "\xce\xa0", "\xc2\xb2", "\xce\xa3", "\xc3\x97", "\xc2\xb3", "\xce\xa5", "\xce\xa6", "\xc2\xb7", "\xce\xa8", "\xce\xa9", "\xe2\x88\x85", "\xe2\x87\x80", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x88\x9d", "\xc2\xb1", "\xc2\xb0", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xe2\x80\xb0", "\xcf\x80", "\xcf\x81", "\xcf\x83", "\xc3\xb7", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x80\xa0", "\xe2\x86\x90", "\xe2\x86\x91", "\xe2\x86\x92", "\xe2\x86\x93", "\xe2\x80\xbe", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000ac => "\xbd", 0x000000b0 => "\xe0", 0x000000b1 => "\xdf", 0x000000b2 => "\xd1", 0x000000b3 => "\xd4", 0x000000b7 => "\xd7", 0x000000d7 => "\xd3", 0x000000f7 => "\xf3", 0x00000192 => "\xdd", 0x000002c7 => "\xa0", 0x00000393 => "\xc3", 0x00000394 => "\xc4", 0x00000398 => "\xc8", 0x0000039b => "\xcb", 0x0000039e => "\xce", 0x000003a0 => "\xd0", 0x000003a3 => "\xd2", 0x000003a5 => "\xd5", 0x000003a6 => "\xd6", 0x000003a8 => "\xd8", 0x000003a9 => "\xd9", 0x000003b1 => "\xe1", 0x000003b2 => "\xe2", 0x000003b3 => "\xe3", 0x000003b4 => "\xe4", 0x000003b5 => "\xe5", 0x000003b6 => "\xe6", 0x000003b7 => "\xe7", 0x000003b8 => "\xe8", 0x000003b9 => "\xe9", 0x000003ba => "\xea", 0x000003bb => "\xeb", 0x000003bc => "\xec", 0x000003bd => "\xed", 0x000003be => "\xee", 0x000003c0 => "\xf0", 0x000003c1 => "\xf1", 0x000003c3 => "\xf2", 0x000003c4 => "\xf4", 0x000003c5 => "\xf5", 0x000003c6 => "\xf6", 0x000003c7 => "\xf7", 0x000003c8 => "\xf8", 0x000003c9 => "\xf9", 0x000005d0 => "\xc0", 0x00002020 => "\xfa", 0x00002030 => "\xef", 0x00002032 => "\xcc", 0x00002033 => "\xcd", 0x0000203e => "\xff", 0x00002190 => "\xfb", 0x00002191 => "\xfc", 0x00002192 => "\xfd", 0x00002193 => "\xfe", 0x00002194 => "\xbc", 0x000021c0 => "\xdb", 0x000021d0 => "\xa8", 0x000021d2 => "\xa9", 0x00002200 => "\xbe", 0x00002202 => "\xb4", 0x00002203 => "\xbf", 0x00002205 => "\xda", 0x00002207 => "\xb3", 0x00002208 => "\xac", 0x0000220b => "\xad", 0x00002213 => "\xcf", 0x0000221a => "\xdc", 0x0000221d => "\xde", 0x0000221e => "\xb2", 0x0000221f => "\xc7", 0x00002220 => "\xc6", 0x00002225 => "\xc2", 0x00002227 => "\xa2", 0x00002228 => "\xa3", 0x00002229 => "\xa4", 0x0000222a => "\xa5", 0x0000222b => "\xb0", 0x0000222e => "\xb1", 0x00002234 => "\xaa", 0x00002235 => "\xab", 0x0000223c => "\xb5", 0x00002243 => "\xb7", 0x00002245 => "\xb8", 0x00002248 => "\xb6", 0x00002260 => "\xba", 0x00002261 => "\xa1", 0x00002264 => "\xb9", 0x00002265 => "\xbb", 0x00002282 => "\xa6", 0x00002283 => "\xa7", 0x00002286 => "\xae", 0x00002287 => "\xaf", 0x000022a5 => "\xc5", 0x00002329 => "\xc9", 0x0000232a => "\xca", 0x000025a1 => "\xc1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::IEC_P27_1 - Conversion routines for IEC_P27_1 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for IEC_P27-1. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-143 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000002C7 | CARON (Mandarin Chinese third tone) A1 | 00002261 | IDENTICAL TO A2 | 00002227 | LOGICAL AND A3 | 00002228 | LOGICAL OR A4 | 00002229 | INTERSECTION A5 | 0000222A | UNION A6 | 00002282 | SUBSET OF A7 | 00002283 | SUPERSET OF A8 | 000021D0 | LEFTWARDS DOUBLE ARROW A9 | 000021D2 | RIGHTWARDS DOUBLE ARROW AA | 00002234 | THEREFORE AB | 00002235 | BECAUSE AC | 00002208 | ELEMENT OF AD | 0000220B | CONTAINS AS MEMBER AE | 00002286 | SUBSET OF OR EQUAL TO AF | 00002287 | SUPERSET OF OR EQUAL TO B0 | 0000222B | INTEGRAL B1 | 0000222E | CONTOUR INTEGRAL B2 | 0000221E | INFINITY B3 | 00002207 | NABLA B4 | 00002202 | PARTIAL DIFFERENTIAL B5 | 0000223C | TILDE OPERATOR B6 | 00002248 | ALMOST EQUAL TO B7 | 00002243 | ASYMPTOTICALLY EQUAL TO B8 | 00002245 | APPROXIMATELY EQUAL TO B9 | 00002264 | LESS-THAN OR EQUAL TO BA | 00002260 | NOT EQUAL TO BB | 00002265 | GREATER-THAN OR EQUAL TO BC | 00002194 | LEFT RIGHT ARROW BD | 000000AC | NOT SIGN BE | 00002200 | FOR ALL BF | 00002203 | THERE EXISTS C0 | 000005D0 | HEBREW LETTER ALEF C1 | 000025A1 | WHITE SQUARE C2 | 00002225 | PARALLEL TO C3 | 00000393 | GREEK CAPITAL LETTER GAMMA C4 | 00000394 | GREEK CAPITAL LETTER DELTA C5 | 000022A5 | UP TACK C6 | 00002220 | ANGLE C7 | 0000221F | RIGHT ANGLE C8 | 00000398 | GREEK CAPITAL LETTER THETA C9 | 00002329 | LEFT-POINTING ANGLE BRACKET CA | 0000232A | RIGHT-POINTING ANGLE BRACKET CB | 0000039B | GREEK CAPITAL LETTER LAMDA CC | 00002032 | PRIME CD | 00002033 | DOUBLE PRIME CE | 0000039E | GREEK CAPITAL LETTER XI CF | 00002213 | MINUS-OR-PLUS SIGN D0 | 000003A0 | GREEK CAPITAL LETTER PI D1 | 000000B2 | SUPERSCRIPT TWO D2 | 000003A3 | GREEK CAPITAL LETTER SIGMA D3 | 000000D7 | MULTIPLICATION SIGN D4 | 000000B3 | SUPERSCRIPT THREE D5 | 000003A5 | GREEK CAPITAL LETTER UPSILON D6 | 000003A6 | GREEK CAPITAL LETTER PHI D7 | 000000B7 | MIDDLE DOT D8 | 000003A8 | GREEK CAPITAL LETTER PSI D9 | 000003A9 | GREEK CAPITAL LETTER OMEGA DA | 00002205 | EMPTY SET DB | 000021C0 | RIGHTWARDS HARPOON WITH BARB UPWARDS DC | 0000221A | SQUARE ROOT DD | 00000192 | LATIN SMALL LETTER F WITH HOOK DE | 0000221D | PROPORTIONAL TO DF | 000000B1 | PLUS-MINUS SIGN E0 | 000000B0 | DEGREE SIGN E1 | 000003B1 | GREEK SMALL LETTER ALPHA E2 | 000003B2 | GREEK SMALL LETTER BETA E3 | 000003B3 | GREEK SMALL LETTER GAMMA E4 | 000003B4 | GREEK SMALL LETTER DELTA E5 | 000003B5 | GREEK SMALL LETTER EPSILON E6 | 000003B6 | GREEK SMALL LETTER ZETA E7 | 000003B7 | GREEK SMALL LETTER ETA E8 | 000003B8 | GREEK SMALL LETTER THETA E9 | 000003B9 | GREEK SMALL LETTER IOTA EA | 000003BA | GREEK SMALL LETTER KAPPA EB | 000003BB | GREEK SMALL LETTER LAMDA EC | 000003BC | GREEK SMALL LETTER MU ED | 000003BD | GREEK SMALL LETTER NU EE | 000003BE | GREEK SMALL LETTER XI EF | 00002030 | PER MILLE SIGN F0 | 000003C0 | GREEK SMALL LETTER PI F1 | 000003C1 | GREEK SMALL LETTER RHO F2 | 000003C3 | GREEK SMALL LETTER SIGMA F3 | 000000F7 | DIVISION SIGN F4 | 000003C4 | GREEK SMALL LETTER TAU F5 | 000003C5 | GREEK SMALL LETTER UPSILON F6 | 000003C6 | GREEK SMALL LETTER PHI F7 | 000003C7 | GREEK SMALL LETTER CHI F8 | 000003C8 | GREEK SMALL LETTER PSI F9 | 000003C9 | GREEK SMALL LETTER OMEGA FA | 00002020 | DAGGER FB | 00002190 | LEFTWARDS ARROW FC | 00002191 | UPWARDS ARROW FD | 00002192 | RIGHTWARDS ARROW FE | 00002193 | DOWNWARDS ARROW FF | 0000203E | OVERLINE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/INIS.pm000644 000765 000024 00000042153 12716422334 021362 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for INIS. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::INIS; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0x0024, 0x0025, 0xfffd, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0xfffd, 0xfffd, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0xfffd, 0x005d, 0xfffd, 0xfffd, 0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0xfffd, 0x007c, 0xfffd, 0xfffd, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x24", "\x25", "\xef\xbf\xbd", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\xef\xbf\xbd", "\x5d", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xef\xbf\xbd", "\x7c", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005d => "\x5d", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007c => "\x7c", 0x0000007f => "\x7f", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::INIS - Conversion routines for INIS =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for INIS. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-49 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5D | 0000005D | RIGHT SQUARE BRACKET 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7C | 0000007C | VERTICAL LINE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/INIS_8.pm000644 000765 000024 00000035762 12716422334 021621 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for INIS-8. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::INIS_8; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x039e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2192, 0x222b, 0x2070, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x207a, 0x207b, 0x30eb, 0x0394, 0x039b, 0x03a9, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, 0x03a3, 0x03bc, 0x03bd, 0x03c9, 0x03c0, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\x9e", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x86\x92", "\xe2\x88\xab", "\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2", "\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6", "\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9", "\xe2\x81\xba", "\xe2\x81\xbb", "\xe3\x83\xab", "\xce\x94", "\xce\x9b", "\xce\xa9", "\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82", "\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86", "\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89", "\xce\xa3", "\xce\xbc", "\xce\xbd", "\xcf\x89", "\xcf\x80", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x0000007f => "\x7f", 0x000000b2 => "\x62", 0x000000b3 => "\x63", 0x000000b9 => "\x61", 0x00000394 => "\x6d", 0x0000039b => "\x6e", 0x0000039e => "\x3e", 0x000003a3 => "\x7a", 0x000003a9 => "\x6f", 0x000003b1 => "\x3a", 0x000003b2 => "\x3b", 0x000003b3 => "\x3c", 0x000003b4 => "\x3d", 0x000003bc => "\x7b", 0x000003bd => "\x7c", 0x000003c0 => "\x7e", 0x000003c9 => "\x7d", 0x00002070 => "\x60", 0x00002074 => "\x64", 0x00002075 => "\x65", 0x00002076 => "\x66", 0x00002077 => "\x67", 0x00002078 => "\x68", 0x00002079 => "\x69", 0x0000207a => "\x6a", 0x0000207b => "\x6b", 0x00002080 => "\x70", 0x00002081 => "\x71", 0x00002082 => "\x72", 0x00002083 => "\x73", 0x00002084 => "\x74", 0x00002085 => "\x75", 0x00002086 => "\x76", 0x00002087 => "\x77", 0x00002088 => "\x78", 0x00002089 => "\x79", 0x00002192 => "\x5e", 0x0000222b => "\x5f", 0x000030eb => "\x6c", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::INIS_8 - Conversion routines for INIS_8 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for INIS-8. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: ECMA registry alias ISO-IR-50 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 3A | 000003B1 | GREEK SMALL LETTER ALPHA 3B | 000003B2 | GREEK SMALL LETTER BETA 3C | 000003B3 | GREEK SMALL LETTER GAMMA 3D | 000003B4 | GREEK SMALL LETTER DELTA 3E | 0000039E | GREEK CAPITAL LETTER XI 5E | 00002192 | RIGHTWARDS ARROW 5F | 0000222B | INTEGRAL 60 | 00002070 | SUPERSCRIPT ZERO 61 | 000000B9 | SUPERSCRIPT ONE 62 | 000000B2 | SUPERSCRIPT TWO 63 | 000000B3 | SUPERSCRIPT THREE 64 | 00002074 | SUPERSCRIPT FOUR 65 | 00002075 | SUPERSCRIPT FIVE 66 | 00002076 | SUPERSCRIPT SIX 67 | 00002077 | SUPERSCRIPT SEVEN 68 | 00002078 | SUPERSCRIPT EIGHT 69 | 00002079 | SUPERSCRIPT NINE 6A | 0000207A | SUPERSCRIPT PLUS SIGN 6B | 0000207B | SUPERSCRIPT MINUS 6C | 000030EB | KATAKANA LETTER RU 6D | 00000394 | GREEK CAPITAL LETTER DELTA 6E | 0000039B | GREEK CAPITAL LETTER LAMDA 6F | 000003A9 | GREEK CAPITAL LETTER OMEGA 70 | 00002080 | SUBSCRIPT ZERO 71 | 00002081 | SUBSCRIPT ONE 72 | 00002082 | SUBSCRIPT TWO 73 | 00002083 | SUBSCRIPT THREE 74 | 00002084 | SUBSCRIPT FOUR 75 | 00002085 | SUBSCRIPT FIVE 76 | 00002086 | SUBSCRIPT SIX 77 | 00002087 | SUBSCRIPT SEVEN 78 | 00002088 | SUBSCRIPT EIGHT 79 | 00002089 | SUBSCRIPT NINE 7A | 000003A3 | GREEK CAPITAL LETTER SIGMA 7B | 000003BC | GREEK SMALL LETTER MU 7C | 000003BD | GREEK SMALL LETTER NU 7D | 000003C9 | GREEK SMALL LETTER OMEGA 7E | 000003C0 | GREEK SMALL LETTER PI 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/INIS_CYRILLIC.pm000644 000765 000024 00000044202 12716422334 022651 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for INIS-CYRILLIC. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::INIS_CYRILLIC; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x221a, 0xfffd, 0x2192, 0x222b, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03a3, 0x03bc, 0x03bd, 0x03c9, 0x03c0, 0x039e, 0x0394, 0x039b, 0x03a9, 0x042a, 0x207b, 0x207a, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x88\x9a", "\xef\xbf\xbd", "\xe2\x86\x92", "\xe2\x88\xab", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xa3", "\xce\xbc", "\xce\xbd", "\xcf\x89", "\xcf\x80", "\xce\x9e", "\xce\x94", "\xce\x9b", "\xce\xa9", "\xd0\xaa", "\xe2\x81\xbb", "\xe2\x81\xba", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x0000007f => "\x7f", 0x00000394 => "\x3a", 0x0000039b => "\x3b", 0x0000039e => "\x39", 0x000003a3 => "\x34", 0x000003a9 => "\x3c", 0x000003b1 => "\x30", 0x000003b2 => "\x31", 0x000003b3 => "\x32", 0x000003b4 => "\x33", 0x000003bc => "\x35", 0x000003bd => "\x36", 0x000003c0 => "\x38", 0x000003c9 => "\x37", 0x00000410 => "\x61", 0x00000411 => "\x62", 0x00000412 => "\x77", 0x00000413 => "\x67", 0x00000414 => "\x64", 0x00000415 => "\x65", 0x00000416 => "\x76", 0x00000417 => "\x7a", 0x00000418 => "\x69", 0x00000419 => "\x6a", 0x0000041a => "\x6b", 0x0000041b => "\x6c", 0x0000041c => "\x6d", 0x0000041d => "\x6e", 0x0000041e => "\x6f", 0x0000041f => "\x70", 0x00000420 => "\x72", 0x00000421 => "\x73", 0x00000422 => "\x74", 0x00000423 => "\x75", 0x00000424 => "\x66", 0x00000425 => "\x68", 0x00000426 => "\x63", 0x00000427 => "\x7e", 0x00000428 => "\x7b", 0x00000429 => "\x7d", 0x0000042a => "\x3d", 0x0000042b => "\x79", 0x0000042c => "\x78", 0x0000042d => "\x7c", 0x0000042e => "\x60", 0x0000042f => "\x71", 0x00000430 => "\x41", 0x00000431 => "\x42", 0x00000432 => "\x57", 0x00000433 => "\x47", 0x00000434 => "\x44", 0x00000435 => "\x45", 0x00000436 => "\x56", 0x00000437 => "\x5a", 0x00000438 => "\x49", 0x00000439 => "\x4a", 0x0000043a => "\x4b", 0x0000043b => "\x4c", 0x0000043c => "\x4d", 0x0000043d => "\x4e", 0x0000043e => "\x4f", 0x0000043f => "\x50", 0x00000440 => "\x52", 0x00000441 => "\x53", 0x00000442 => "\x54", 0x00000443 => "\x55", 0x00000444 => "\x46", 0x00000445 => "\x48", 0x00000446 => "\x43", 0x00000447 => "\x5e", 0x00000448 => "\x5b", 0x00000449 => "\x5d", 0x0000044a => "\x5f", 0x0000044b => "\x59", 0x0000044c => "\x58", 0x0000044d => "\x5c", 0x0000044e => "\x40", 0x0000044f => "\x51", 0x0000207a => "\x3f", 0x0000207b => "\x3e", 0x00002192 => "\x2e", 0x0000221a => "\x2c", 0x0000222b => "\x2f", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::INIS_CYRILLIC - Conversion routines for INIS_CYRILLIC =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for INIS-CYRILLIC. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-51 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 2C | 0000221A | SQUARE ROOT 2E | 00002192 | RIGHTWARDS ARROW 2F | 0000222B | INTEGRAL 30 | 000003B1 | GREEK SMALL LETTER ALPHA 31 | 000003B2 | GREEK SMALL LETTER BETA 32 | 000003B3 | GREEK SMALL LETTER GAMMA 33 | 000003B4 | GREEK SMALL LETTER DELTA 34 | 000003A3 | GREEK CAPITAL LETTER SIGMA 35 | 000003BC | GREEK SMALL LETTER MU 36 | 000003BD | GREEK SMALL LETTER NU 37 | 000003C9 | GREEK SMALL LETTER OMEGA 38 | 000003C0 | GREEK SMALL LETTER PI 39 | 0000039E | GREEK CAPITAL LETTER XI 3A | 00000394 | GREEK CAPITAL LETTER DELTA 3B | 0000039B | GREEK CAPITAL LETTER LAMDA 3C | 000003A9 | GREEK CAPITAL LETTER OMEGA 3D | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 3E | 0000207B | SUPERSCRIPT MINUS 3F | 0000207A | SUPERSCRIPT PLUS SIGN 40 | 0000044E | CYRILLIC SMALL LETTER YU 41 | 00000430 | CYRILLIC SMALL LETTER A 42 | 00000431 | CYRILLIC SMALL LETTER BE 43 | 00000446 | CYRILLIC SMALL LETTER TSE 44 | 00000434 | CYRILLIC SMALL LETTER DE 45 | 00000435 | CYRILLIC SMALL LETTER IE 46 | 00000444 | CYRILLIC SMALL LETTER EF 47 | 00000433 | CYRILLIC SMALL LETTER GHE 48 | 00000445 | CYRILLIC SMALL LETTER HA 49 | 00000438 | CYRILLIC SMALL LETTER I 4A | 00000439 | CYRILLIC SMALL LETTER SHORT I 4B | 0000043A | CYRILLIC SMALL LETTER KA 4C | 0000043B | CYRILLIC SMALL LETTER EL 4D | 0000043C | CYRILLIC SMALL LETTER EM 4E | 0000043D | CYRILLIC SMALL LETTER EN 4F | 0000043E | CYRILLIC SMALL LETTER O 50 | 0000043F | CYRILLIC SMALL LETTER PE 51 | 0000044F | CYRILLIC SMALL LETTER YA 52 | 00000440 | CYRILLIC SMALL LETTER ER 53 | 00000441 | CYRILLIC SMALL LETTER ES 54 | 00000442 | CYRILLIC SMALL LETTER TE 55 | 00000443 | CYRILLIC SMALL LETTER U 56 | 00000436 | CYRILLIC SMALL LETTER ZHE 57 | 00000432 | CYRILLIC SMALL LETTER VE 58 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN 59 | 0000044B | CYRILLIC SMALL LETTER YERU 5A | 00000437 | CYRILLIC SMALL LETTER ZE 5B | 00000448 | CYRILLIC SMALL LETTER SHA 5C | 0000044D | CYRILLIC SMALL LETTER E 5D | 00000449 | CYRILLIC SMALL LETTER SHCHA 5E | 00000447 | CYRILLIC SMALL LETTER CHE 5F | 0000044A | CYRILLIC SMALL LETTER HARD SIGN 60 | 0000042E | CYRILLIC CAPITAL LETTER YU 61 | 00000410 | CYRILLIC CAPITAL LETTER A 62 | 00000411 | CYRILLIC CAPITAL LETTER BE 63 | 00000426 | CYRILLIC CAPITAL LETTER TSE 64 | 00000414 | CYRILLIC CAPITAL LETTER DE 65 | 00000415 | CYRILLIC CAPITAL LETTER IE 66 | 00000424 | CYRILLIC CAPITAL LETTER EF 67 | 00000413 | CYRILLIC CAPITAL LETTER GHE 68 | 00000425 | CYRILLIC CAPITAL LETTER HA 69 | 00000418 | CYRILLIC CAPITAL LETTER I 6A | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 6B | 0000041A | CYRILLIC CAPITAL LETTER KA 6C | 0000041B | CYRILLIC CAPITAL LETTER EL 6D | 0000041C | CYRILLIC CAPITAL LETTER EM 6E | 0000041D | CYRILLIC CAPITAL LETTER EN 6F | 0000041E | CYRILLIC CAPITAL LETTER O 70 | 0000041F | CYRILLIC CAPITAL LETTER PE 71 | 0000042F | CYRILLIC CAPITAL LETTER YA 72 | 00000420 | CYRILLIC CAPITAL LETTER ER 73 | 00000421 | CYRILLIC CAPITAL LETTER ES 74 | 00000422 | CYRILLIC CAPITAL LETTER TE 75 | 00000423 | CYRILLIC CAPITAL LETTER U 76 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 77 | 00000412 | CYRILLIC CAPITAL LETTER VE 78 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 79 | 0000042B | CYRILLIC CAPITAL LETTER YERU 7A | 00000417 | CYRILLIC CAPITAL LETTER ZE 7B | 00000428 | CYRILLIC CAPITAL LETTER SHA 7C | 0000042D | CYRILLIC CAPITAL LETTER E 7D | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 7E | 00000427 | CYRILLIC CAPITAL LETTER CHE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_10367_BOX.pm000644 000765 000024 00000054312 12716422334 022522 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO_10367-BOX. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_10367_BOX; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2551, 0x2550, 0x2554, 0x2557, 0x255a, 0x255d, 0x2560, 0x2563, 0x2566, 0x2569, 0x256c, 0xe019, 0x2584, 0x2588, 0x25aa, 0xfffd, 0x2502, 0x2500, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2591, 0x2592, 0x2593, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x95\x91", "\xe2\x95\x90", "\xe2\x95\x94", "\xe2\x95\x97", "\xe2\x95\x9a", "\xe2\x95\x9d", "\xe2\x95\xa0", "\xe2\x95\xa3", "\xe2\x95\xa6", "\xe2\x95\xa9", "\xe2\x95\xac", "\xee\x80\x99", "\xe2\x96\x84", "\xe2\x96\x88", "\xe2\x96\xaa", "\xef\xbf\xbd", "\xe2\x94\x82", "\xe2\x94\x80", "\xe2\x94\x8c", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\x98", "\xe2\x94\x9c", "\xe2\x94\xa4", "\xe2\x94\xac", "\xe2\x94\xb4", "\xe2\x94\xbc", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x00002500 => "\xd1", 0x00002502 => "\xd0", 0x0000250c => "\xd2", 0x00002510 => "\xd3", 0x00002514 => "\xd4", 0x00002518 => "\xd5", 0x0000251c => "\xd6", 0x00002524 => "\xd7", 0x0000252c => "\xd8", 0x00002534 => "\xd9", 0x0000253c => "\xda", 0x00002550 => "\xc1", 0x00002551 => "\xc0", 0x00002554 => "\xc2", 0x00002557 => "\xc3", 0x0000255a => "\xc4", 0x0000255d => "\xc5", 0x00002560 => "\xc6", 0x00002563 => "\xc7", 0x00002566 => "\xc8", 0x00002569 => "\xc9", 0x0000256c => "\xca", 0x00002584 => "\xcc", 0x00002588 => "\xcd", 0x00002591 => "\xdb", 0x00002592 => "\xdc", 0x00002593 => "\xdd", 0x000025aa => "\xce", 0x0000e019 => "\xcb", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_10367_BOX - Conversion routines for ISO_10367_BOX =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO_10367-BOX. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-155 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) C0 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL C1 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL C2 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT C3 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT C4 | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT C5 | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT C6 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT C7 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT C8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL C9 | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL CA | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL CB | 0000E019 | Unit space B EISO-IR-8-1_60E CC | 00002584 | LOWER HALF BLOCK CD | 00002588 | FULL BLOCK CE | 000025AA | BLACK SMALL SQUARE D0 | 00002502 | BOX DRAWINGS LIGHT VERTICAL D1 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL D2 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT D3 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT D4 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT D5 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT D6 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT D7 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT D8 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL D9 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL DA | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL DB | 00002591 | LIGHT SHADE DC | 00002592 | MEDIUM SHADE DD | 00002593 | DARK SHADE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_2033_1983.pm000644 000765 000024 00000032630 12716422334 022404 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO_2033-1983. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_2033_1983; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x2446, 0x2447, 0x2448, 0x2449, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xe2\x91\x86", "\xe2\x91\x87", "\xe2\x91\x88", "\xe2\x91\x89", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000007f => "\x7f", 0x00002446 => "\x3a", 0x00002447 => "\x3b", 0x00002448 => "\x3c", 0x00002449 => "\x3d", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_2033_1983 - Conversion routines for ISO_2033_1983 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO_2033-1983. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: ECMA registry alias ISO-IR-98 alias E13B Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 00002446 | OCR BRANCH BANK IDENTIFICATION 3B | 00002447 | OCR AMOUNT OF CHECK 3C | 00002448 | OCR DASH 3D | 00002449 | OCR CUSTOMER ACCOUNT NUMBER 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_5427.pm000644 000765 000024 00000044654 12716422334 021743 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO_5427. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_5427; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\xc2\xa4", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x0000007f => "\x7f", 0x000000a4 => "\x24", 0x00000410 => "\x61", 0x00000411 => "\x62", 0x00000412 => "\x77", 0x00000413 => "\x67", 0x00000414 => "\x64", 0x00000415 => "\x65", 0x00000416 => "\x76", 0x00000417 => "\x7a", 0x00000418 => "\x69", 0x00000419 => "\x6a", 0x0000041a => "\x6b", 0x0000041b => "\x6c", 0x0000041c => "\x6d", 0x0000041d => "\x6e", 0x0000041e => "\x6f", 0x0000041f => "\x70", 0x00000420 => "\x72", 0x00000421 => "\x73", 0x00000422 => "\x74", 0x00000423 => "\x75", 0x00000424 => "\x66", 0x00000425 => "\x68", 0x00000426 => "\x63", 0x00000427 => "\x7e", 0x00000428 => "\x7b", 0x00000429 => "\x7d", 0x0000042b => "\x79", 0x0000042c => "\x78", 0x0000042d => "\x7c", 0x0000042e => "\x60", 0x0000042f => "\x71", 0x00000430 => "\x41", 0x00000431 => "\x42", 0x00000432 => "\x57", 0x00000433 => "\x47", 0x00000434 => "\x44", 0x00000435 => "\x45", 0x00000436 => "\x56", 0x00000437 => "\x5a", 0x00000438 => "\x49", 0x00000439 => "\x4a", 0x0000043a => "\x4b", 0x0000043b => "\x4c", 0x0000043c => "\x4d", 0x0000043d => "\x4e", 0x0000043e => "\x4f", 0x0000043f => "\x50", 0x00000440 => "\x52", 0x00000441 => "\x53", 0x00000442 => "\x54", 0x00000443 => "\x55", 0x00000444 => "\x46", 0x00000445 => "\x48", 0x00000446 => "\x43", 0x00000447 => "\x5e", 0x00000448 => "\x5b", 0x00000449 => "\x5d", 0x0000044a => "\x5f", 0x0000044b => "\x59", 0x0000044c => "\x58", 0x0000044d => "\x5c", 0x0000044e => "\x40", 0x0000044f => "\x51", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_5427 - Conversion routines for ISO_5427 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO_5427. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-37 alias KOI-7 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 000000A4 | CURRENCY SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 0000044E | CYRILLIC SMALL LETTER YU 41 | 00000430 | CYRILLIC SMALL LETTER A 42 | 00000431 | CYRILLIC SMALL LETTER BE 43 | 00000446 | CYRILLIC SMALL LETTER TSE 44 | 00000434 | CYRILLIC SMALL LETTER DE 45 | 00000435 | CYRILLIC SMALL LETTER IE 46 | 00000444 | CYRILLIC SMALL LETTER EF 47 | 00000433 | CYRILLIC SMALL LETTER GHE 48 | 00000445 | CYRILLIC SMALL LETTER HA 49 | 00000438 | CYRILLIC SMALL LETTER I 4A | 00000439 | CYRILLIC SMALL LETTER SHORT I 4B | 0000043A | CYRILLIC SMALL LETTER KA 4C | 0000043B | CYRILLIC SMALL LETTER EL 4D | 0000043C | CYRILLIC SMALL LETTER EM 4E | 0000043D | CYRILLIC SMALL LETTER EN 4F | 0000043E | CYRILLIC SMALL LETTER O 50 | 0000043F | CYRILLIC SMALL LETTER PE 51 | 0000044F | CYRILLIC SMALL LETTER YA 52 | 00000440 | CYRILLIC SMALL LETTER ER 53 | 00000441 | CYRILLIC SMALL LETTER ES 54 | 00000442 | CYRILLIC SMALL LETTER TE 55 | 00000443 | CYRILLIC SMALL LETTER U 56 | 00000436 | CYRILLIC SMALL LETTER ZHE 57 | 00000432 | CYRILLIC SMALL LETTER VE 58 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN 59 | 0000044B | CYRILLIC SMALL LETTER YERU 5A | 00000437 | CYRILLIC SMALL LETTER ZE 5B | 00000448 | CYRILLIC SMALL LETTER SHA 5C | 0000044D | CYRILLIC SMALL LETTER E 5D | 00000449 | CYRILLIC SMALL LETTER SHCHA 5E | 00000447 | CYRILLIC SMALL LETTER CHE 5F | 0000044A | CYRILLIC SMALL LETTER HARD SIGN 60 | 0000042E | CYRILLIC CAPITAL LETTER YU 61 | 00000410 | CYRILLIC CAPITAL LETTER A 62 | 00000411 | CYRILLIC CAPITAL LETTER BE 63 | 00000426 | CYRILLIC CAPITAL LETTER TSE 64 | 00000414 | CYRILLIC CAPITAL LETTER DE 65 | 00000415 | CYRILLIC CAPITAL LETTER IE 66 | 00000424 | CYRILLIC CAPITAL LETTER EF 67 | 00000413 | CYRILLIC CAPITAL LETTER GHE 68 | 00000425 | CYRILLIC CAPITAL LETTER HA 69 | 00000418 | CYRILLIC CAPITAL LETTER I 6A | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 6B | 0000041A | CYRILLIC CAPITAL LETTER KA 6C | 0000041B | CYRILLIC CAPITAL LETTER EL 6D | 0000041C | CYRILLIC CAPITAL LETTER EM 6E | 0000041D | CYRILLIC CAPITAL LETTER EN 6F | 0000041E | CYRILLIC CAPITAL LETTER O 70 | 0000041F | CYRILLIC CAPITAL LETTER PE 71 | 0000042F | CYRILLIC CAPITAL LETTER YA 72 | 00000420 | CYRILLIC CAPITAL LETTER ER 73 | 00000421 | CYRILLIC CAPITAL LETTER ES 74 | 00000422 | CYRILLIC CAPITAL LETTER TE 75 | 00000423 | CYRILLIC CAPITAL LETTER U 76 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 77 | 00000412 | CYRILLIC CAPITAL LETTER VE 78 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 79 | 0000042B | CYRILLIC CAPITAL LETTER YERU 7A | 00000417 | CYRILLIC CAPITAL LETTER ZE 7B | 00000428 | CYRILLIC CAPITAL LETTER SHA 7C | 0000042D | CYRILLIC CAPITAL LETTER E 7D | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 7E | 00000427 | CYRILLIC CAPITAL LETTER CHE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_5427_EXT.pm000644 000765 000024 00000037130 12716422334 022452 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO_5427-EXT. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_5427_EXT; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0491, 0x0452, 0x0453, 0x0454, 0x0451, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, 0xfffd, 0x0463, 0x0473, 0x0475, 0x046b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x005b, 0xfffd, 0x005d, 0xfffd, 0x005f, 0x0490, 0x0402, 0x0403, 0x0404, 0x0401, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x042a, 0x0462, 0x0472, 0x0474, 0x046a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd2\x91", "\xd1\x92", "\xd1\x93", "\xd1\x94", "\xd1\x91", "\xd1\x95", "\xd1\x96", "\xd1\x97", "\xd1\x98", "\xd1\x99", "\xd1\x9a", "\xd1\x9b", "\xd1\x9c", "\xd1\x9e", "\xd1\x9f", "\xef\xbf\xbd", "\xd1\xa3", "\xd1\xb3", "\xd1\xb5", "\xd1\xab", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x5b", "\xef\xbf\xbd", "\x5d", "\xef\xbf\xbd", "\x5f", "\xd2\x90", "\xd0\x82", "\xd0\x83", "\xd0\x84", "\xd0\x81", "\xd0\x85", "\xd0\x86", "\xd0\x87", "\xd0\x88", "\xd0\x89", "\xd0\x8a", "\xd0\x8b", "\xd0\x8c", "\xd0\x8e", "\xd0\x8f", "\xd0\xaa", "\xd1\xa2", "\xd1\xb2", "\xd1\xb4", "\xd1\xaa", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x0000005b => "\x5b", 0x0000005d => "\x5d", 0x0000005f => "\x5f", 0x0000007f => "\x7f", 0x00000401 => "\x64", 0x00000402 => "\x61", 0x00000403 => "\x62", 0x00000404 => "\x63", 0x00000405 => "\x65", 0x00000406 => "\x66", 0x00000407 => "\x67", 0x00000408 => "\x68", 0x00000409 => "\x69", 0x0000040a => "\x6a", 0x0000040b => "\x6b", 0x0000040c => "\x6c", 0x0000040e => "\x6d", 0x0000040f => "\x6e", 0x0000042a => "\x6f", 0x00000451 => "\x44", 0x00000452 => "\x41", 0x00000453 => "\x42", 0x00000454 => "\x43", 0x00000455 => "\x45", 0x00000456 => "\x46", 0x00000457 => "\x47", 0x00000458 => "\x48", 0x00000459 => "\x49", 0x0000045a => "\x4a", 0x0000045b => "\x4b", 0x0000045c => "\x4c", 0x0000045e => "\x4d", 0x0000045f => "\x4e", 0x00000462 => "\x70", 0x00000463 => "\x50", 0x0000046a => "\x73", 0x0000046b => "\x53", 0x00000472 => "\x71", 0x00000473 => "\x51", 0x00000474 => "\x72", 0x00000475 => "\x52", 0x00000490 => "\x60", 0x00000491 => "\x40", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_5427_EXT - Conversion routines for ISO_5427_EXT =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO_5427-EXT. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 repertoiremap: mnemonic,ds source: ECMA registry alias ISO-IR-54 alias ISO_5427:1981 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 40 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN 41 | 00000452 | CYRILLIC SMALL LETTER DJE 42 | 00000453 | CYRILLIC SMALL LETTER GJE 43 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE 44 | 00000451 | CYRILLIC SMALL LETTER IO 45 | 00000455 | CYRILLIC SMALL LETTER DZE 46 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 47 | 00000457 | CYRILLIC SMALL LETTER YI 48 | 00000458 | CYRILLIC SMALL LETTER JE 49 | 00000459 | CYRILLIC SMALL LETTER LJE 4A | 0000045A | CYRILLIC SMALL LETTER NJE 4B | 0000045B | CYRILLIC SMALL LETTER TSHE 4C | 0000045C | CYRILLIC SMALL LETTER KJE 4D | 0000045E | CYRILLIC SMALL LETTER SHORT U 4E | 0000045F | CYRILLIC SMALL LETTER DZHE 50 | 00000463 | CYRILLIC SMALL LETTER YAT 51 | 00000473 | CYRILLIC SMALL LETTER FITA 52 | 00000475 | CYRILLIC SMALL LETTER IZHITSA 53 | 0000046B | CYRILLIC SMALL LETTER BIG YUS 5B | 0000005B | LEFT SQUARE BRACKET 5D | 0000005D | RIGHT SQUARE BRACKET 5F | 0000005F | LOW LINE 60 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN 61 | 00000402 | CYRILLIC CAPITAL LETTER DJE 62 | 00000403 | CYRILLIC CAPITAL LETTER GJE 63 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE 64 | 00000401 | CYRILLIC CAPITAL LETTER IO 65 | 00000405 | CYRILLIC CAPITAL LETTER DZE 66 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 67 | 00000407 | CYRILLIC CAPITAL LETTER YI 68 | 00000408 | CYRILLIC CAPITAL LETTER JE 69 | 00000409 | CYRILLIC CAPITAL LETTER LJE 6A | 0000040A | CYRILLIC CAPITAL LETTER NJE 6B | 0000040B | CYRILLIC CAPITAL LETTER TSHE 6C | 0000040C | CYRILLIC CAPITAL LETTER KJE 6D | 0000040E | CYRILLIC CAPITAL LETTER SHORT U 6E | 0000040F | CYRILLIC CAPITAL LETTER DZHE 6F | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 70 | 00000462 | CYRILLIC CAPITAL LETTER YAT 71 | 00000472 | CYRILLIC CAPITAL LETTER FITA 72 | 00000474 | CYRILLIC CAPITAL LETTER IZHITSA 73 | 0000046A | CYRILLIC CAPITAL LETTER BIG YUS 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_5428.pm000644 000765 000024 00000043675 12716422334 021746 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO_5428. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_5428; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0xe002, 0xe003, 0xe009, 0xe005, 0xe012, 0xe013, 0xe014, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ab, 0x00bb, 0x201d, 0x201c, 0x0374, 0x0375, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00b7, 0xfffd, 0xfffd, 0xfffd, 0x003b, 0xfffd, 0x0391, 0x0392, 0xfffd, 0x0393, 0x0394, 0x0395, 0x03da, 0x03dc, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03de, 0x03a1, 0x03a3, 0xfffd, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03e0, 0xfffd, 0xfffd, 0x03b1, 0x03b2, 0x03d0, 0x03b3, 0x03b4, 0x03b5, 0xe01a, 0xe01b, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0xe01c, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xe01d, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xee\x80\x82", "\xee\x80\x83", "\xee\x80\x89", "\xee\x80\x85", "\xee\x80\x92", "\xee\x80\x93", "\xee\x80\x94", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xab", "\xc2\xbb", "\xe2\x80\x9d", "\xe2\x80\x9c", "\xcd\xb4", "\xcd\xb5", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xb7", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\x3b", "\xef\xbf\xbd", "\xce\x91", "\xce\x92", "\xef\xbf\xbd", "\xce\x93", "\xce\x94", "\xce\x95", "\xcf\x9a", "\xcf\x9c", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xcf\x9e", "\xce\xa1", "\xce\xa3", "\xef\xbf\xbd", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xcf\xa0", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xce\xb1", "\xce\xb2", "\xcf\x90", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xee\x80\x9a", "\xee\x80\x9b", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xee\x80\x9c", "\xcf\x81", "\xcf\x83", "\xcf\x82", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xee\x80\x9d", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x0000003b => "\x3f", 0x0000007f => "\x7f", 0x000000ab => "\x30", 0x000000b7 => "\x3b", 0x000000bb => "\x31", 0x00000374 => "\x34", 0x00000375 => "\x35", 0x00000391 => "\x41", 0x00000392 => "\x42", 0x00000393 => "\x44", 0x00000394 => "\x45", 0x00000395 => "\x46", 0x00000396 => "\x49", 0x00000397 => "\x4a", 0x00000398 => "\x4b", 0x00000399 => "\x4c", 0x0000039a => "\x4d", 0x0000039b => "\x4e", 0x0000039c => "\x4f", 0x0000039d => "\x50", 0x0000039e => "\x51", 0x0000039f => "\x52", 0x000003a0 => "\x53", 0x000003a1 => "\x55", 0x000003a3 => "\x56", 0x000003a4 => "\x58", 0x000003a5 => "\x59", 0x000003a6 => "\x5a", 0x000003a7 => "\x5b", 0x000003a8 => "\x5c", 0x000003a9 => "\x5d", 0x000003b1 => "\x61", 0x000003b2 => "\x62", 0x000003b3 => "\x64", 0x000003b4 => "\x65", 0x000003b5 => "\x66", 0x000003b6 => "\x69", 0x000003b7 => "\x6a", 0x000003b8 => "\x6b", 0x000003b9 => "\x6c", 0x000003ba => "\x6d", 0x000003bb => "\x6e", 0x000003bc => "\x6f", 0x000003bd => "\x70", 0x000003be => "\x71", 0x000003bf => "\x72", 0x000003c0 => "\x73", 0x000003c1 => "\x75", 0x000003c2 => "\x77", 0x000003c3 => "\x76", 0x000003c4 => "\x78", 0x000003c5 => "\x79", 0x000003c6 => "\x7a", 0x000003c7 => "\x7b", 0x000003c8 => "\x7c", 0x000003c9 => "\x7d", 0x000003d0 => "\x63", 0x000003da => "\x47", 0x000003dc => "\x48", 0x000003de => "\x54", 0x000003e0 => "\x5e", 0x0000201c => "\x33", 0x0000201d => "\x32", 0x0000e002 => "\x21", 0x0000e003 => "\x22", 0x0000e005 => "\x24", 0x0000e009 => "\x23", 0x0000e012 => "\x25", 0x0000e013 => "\x26", 0x0000e014 => "\x27", 0x0000e01a => "\x67", 0x0000e01b => "\x68", 0x0000e01c => "\x74", 0x0000e01d => "\x7e", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_5428 - Conversion routines for ISO_5428 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO_5428. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-55 alias ISO_5428:1980 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 0000E002 | NON-SPACING GRAVE ACCENT EISO-IR-103_C1E (not a real character) 22 | 0000E003 | NON-SPACING ACUTE ACCENT EISO-IR-103_C2E (not a real character) 23 | 0000E009 | NON-SPACING DIAERESIS EISO-IR-103_C8E (not a real character) 24 | 0000E005 | NON-SPACING TILDE EISO-IR-103_C4E (not a real character) 25 | 0000E012 | GREEK NON-SPACING PSILI PNEUMATA EISO-IR-55_25E (not a real character) 26 | 0000E013 | GREEK NON-SPACING DASIA PNEUMATA EISO-IR-55_26E (not a real character) 27 | 0000E014 | GREEK NON-SPACING IOTA BELOW EISO-IR-55_27E (not a real character) 30 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 31 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 32 | 0000201D | RIGHT DOUBLE QUOTATION MARK 33 | 0000201C | LEFT DOUBLE QUOTATION MARK 34 | 00000374 | GREEK NUMERAL SIGN (Dexia keraia) 35 | 00000375 | GREEK LOWER NUMERAL SIGN (Aristeri keraia) 3B | 000000B7 | MIDDLE DOT 3F | 0000003B | SEMICOLON 41 | 00000391 | GREEK CAPITAL LETTER ALPHA 42 | 00000392 | GREEK CAPITAL LETTER BETA 44 | 00000393 | GREEK CAPITAL LETTER GAMMA 45 | 00000394 | GREEK CAPITAL LETTER DELTA 46 | 00000395 | GREEK CAPITAL LETTER EPSILON 47 | 000003DA | GREEK LETTER STIGMA 48 | 000003DC | GREEK LETTER DIGAMMA 49 | 00000396 | GREEK CAPITAL LETTER ZETA 4A | 00000397 | GREEK CAPITAL LETTER ETA 4B | 00000398 | GREEK CAPITAL LETTER THETA 4C | 00000399 | GREEK CAPITAL LETTER IOTA 4D | 0000039A | GREEK CAPITAL LETTER KAPPA 4E | 0000039B | GREEK CAPITAL LETTER LAMDA 4F | 0000039C | GREEK CAPITAL LETTER MU 50 | 0000039D | GREEK CAPITAL LETTER NU 51 | 0000039E | GREEK CAPITAL LETTER XI 52 | 0000039F | GREEK CAPITAL LETTER OMICRON 53 | 000003A0 | GREEK CAPITAL LETTER PI 54 | 000003DE | GREEK LETTER KOPPA 55 | 000003A1 | GREEK CAPITAL LETTER RHO 56 | 000003A3 | GREEK CAPITAL LETTER SIGMA 58 | 000003A4 | GREEK CAPITAL LETTER TAU 59 | 000003A5 | GREEK CAPITAL LETTER UPSILON 5A | 000003A6 | GREEK CAPITAL LETTER PHI 5B | 000003A7 | GREEK CAPITAL LETTER CHI 5C | 000003A8 | GREEK CAPITAL LETTER PSI 5D | 000003A9 | GREEK CAPITAL LETTER OMEGA 5E | 000003E0 | GREEK LETTER SAMPI 61 | 000003B1 | GREEK SMALL LETTER ALPHA 62 | 000003B2 | GREEK SMALL LETTER BETA 63 | 000003D0 | GREEK BETA SYMBOL 64 | 000003B3 | GREEK SMALL LETTER GAMMA 65 | 000003B4 | GREEK SMALL LETTER DELTA 66 | 000003B5 | GREEK SMALL LETTER EPSILON 67 | 0000E01A | GREEK SMALL LETTER STIGMA EISO-IR-55_47E 68 | 0000E01B | GREEK SMALL LETTER DIGAMMA EISO-IR-55_48E 69 | 000003B6 | GREEK SMALL LETTER ZETA 6A | 000003B7 | GREEK SMALL LETTER ETA 6B | 000003B8 | GREEK SMALL LETTER THETA 6C | 000003B9 | GREEK SMALL LETTER IOTA 6D | 000003BA | GREEK SMALL LETTER KAPPA 6E | 000003BB | GREEK SMALL LETTER LAMDA 6F | 000003BC | GREEK SMALL LETTER MU 70 | 000003BD | GREEK SMALL LETTER NU 71 | 000003BE | GREEK SMALL LETTER XI 72 | 000003BF | GREEK SMALL LETTER OMICRON 73 | 000003C0 | GREEK SMALL LETTER PI 74 | 0000E01C | GREEK SMALL LETTER KOPPA EISO-IR-55_54E 75 | 000003C1 | GREEK SMALL LETTER RHO 76 | 000003C3 | GREEK SMALL LETTER SIGMA 77 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA 78 | 000003C4 | GREEK SMALL LETTER TAU 79 | 000003C5 | GREEK SMALL LETTER UPSILON 7A | 000003C6 | GREEK SMALL LETTER PHI 7B | 000003C7 | GREEK SMALL LETTER CHI 7C | 000003C8 | GREEK SMALL LETTER PSI 7D | 000003C9 | GREEK SMALL LETTER OMEGA 7E | 0000E01D | GREEK SMALL LETTER SAMPI EISO-IR-55_5EE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_1.pm000644 000765 000024 00000041544 12716422334 022172 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-1. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_1; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); use constant TO_UTF8 => [ "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ]; sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { # FIXME: Maybe the lookup is cheaper than the call to chr(). $_[1] = join '', map $_ > 255 ? "\x3f" : chr $_, @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8') { $_[1] = join '', map TO_UTF8->[$_], unpack 'C*', $_[1]; } else { $_[1] = [ unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_1 - Conversion routines for ISO-8859-1 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module contains the conversion tables and routines for ISO-8859-1. =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 000000D0 | LATIN CAPITAL LETTER ETH D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 000000DE | LATIN CAPITAL LETTER THORN DF | 000000DF | LATIN SMALL LETTER SHARP S E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_10.pm000644 000765 000024 00000066306 12716422334 022255 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-10. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_10; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b, 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc4\x84", "\xc4\x92", "\xc4\xa2", "\xc4\xaa", "\xc4\xa8", "\xc4\xb6", "\xc2\xa7", "\xc4\xbb", "\xc4\x90", "\xc5\xa0", "\xc5\xa6", "\xc5\xbd", "\xc2\xad", "\xc5\xaa", "\xc5\x8a", "\xc2\xb0", "\xc4\x85", "\xc4\x93", "\xc4\xa3", "\xc4\xab", "\xc4\xa9", "\xc4\xb7", "\xc2\xb7", "\xc4\xbc", "\xc4\x91", "\xc5\xa1", "\xc5\xa7", "\xc5\xbe", "\xe2\x80\x95", "\xc5\xab", "\xc5\x8b", "\xc4\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc4\xae", "\xc4\x8c", "\xc3\x89", "\xc4\x98", "\xc3\x8b", "\xc4\x96", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc5\x85", "\xc5\x8c", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc5\xa8", "\xc3\x98", "\xc5\xb2", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc3\x9f", "\xc4\x81", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc4\xaf", "\xc4\x8d", "\xc3\xa9", "\xc4\x99", "\xc3\xab", "\xc4\x97", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc5\x86", "\xc5\x8d", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc5\xa9", "\xc3\xb8", "\xc5\xb3", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc4\xb8", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a7 => "\xa7", 0x000000ad => "\xad", 0x000000b0 => "\xb0", 0x000000b7 => "\xb7", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c9 => "\xc9", 0x000000cb => "\xcb", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d0 => "\xd0", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d8 => "\xd8", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000de => "\xde", 0x000000df => "\xdf", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e9 => "\xe9", 0x000000eb => "\xeb", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f8 => "\xf8", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x00000100 => "\xc0", 0x00000101 => "\xe0", 0x00000104 => "\xa1", 0x00000105 => "\xb1", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x00000110 => "\xa9", 0x00000111 => "\xb9", 0x00000112 => "\xa2", 0x00000113 => "\xb2", 0x00000116 => "\xcc", 0x00000117 => "\xec", 0x00000118 => "\xca", 0x00000119 => "\xea", 0x00000122 => "\xa3", 0x00000123 => "\xb3", 0x00000128 => "\xa5", 0x00000129 => "\xb5", 0x0000012a => "\xa4", 0x0000012b => "\xb4", 0x0000012e => "\xc7", 0x0000012f => "\xe7", 0x00000136 => "\xa6", 0x00000137 => "\xb6", 0x00000138 => "\xff", 0x0000013b => "\xa8", 0x0000013c => "\xb8", 0x00000145 => "\xd1", 0x00000146 => "\xf1", 0x0000014a => "\xaf", 0x0000014b => "\xbf", 0x0000014c => "\xd2", 0x0000014d => "\xf2", 0x00000160 => "\xaa", 0x00000161 => "\xba", 0x00000166 => "\xab", 0x00000167 => "\xbb", 0x00000168 => "\xd7", 0x00000169 => "\xf7", 0x0000016a => "\xae", 0x0000016b => "\xbe", 0x00000172 => "\xd9", 0x00000173 => "\xf9", 0x0000017d => "\xac", 0x0000017e => "\xbc", 0x00002015 => "\xbd", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_10 - Conversion routines for ISO-8859-10 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-10. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-157 alias ISO_8859-10:1992 alias ISO_8859-10 alias L6 alias LATIN6 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A2 | 00000112 | LATIN CAPITAL LETTER E WITH MACRON A3 | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA A4 | 0000012A | LATIN CAPITAL LETTER I WITH MACRON A5 | 00000128 | LATIN CAPITAL LETTER I WITH TILDE A6 | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA A7 | 000000A7 | SECTION SIGN A8 | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA A9 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE AA | 00000160 | LATIN CAPITAL LETTER S WITH CARON AB | 00000166 | LATIN CAPITAL LETTER T WITH STROKE AC | 0000017D | LATIN CAPITAL LETTER Z WITH CARON AD | 000000AD | SOFT HYPHEN AE | 0000016A | LATIN CAPITAL LETTER U WITH MACRON AF | 0000014A | LATIN CAPITAL LETTER ENG (Sami) B0 | 000000B0 | DEGREE SIGN B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK B2 | 00000113 | LATIN SMALL LETTER E WITH MACRON B3 | 00000123 | LATIN SMALL LETTER G WITH CEDILLA B4 | 0000012B | LATIN SMALL LETTER I WITH MACRON B5 | 00000129 | LATIN SMALL LETTER I WITH TILDE B6 | 00000137 | LATIN SMALL LETTER K WITH CEDILLA B7 | 000000B7 | MIDDLE DOT B8 | 0000013C | LATIN SMALL LETTER L WITH CEDILLA B9 | 00000111 | LATIN SMALL LETTER D WITH STROKE BA | 00000161 | LATIN SMALL LETTER S WITH CARON BB | 00000167 | LATIN SMALL LETTER T WITH STROKE BC | 0000017E | LATIN SMALL LETTER Z WITH CARON BD | 00002015 | HORIZONTAL BAR BE | 0000016B | LATIN SMALL LETTER U WITH MACRON BF | 0000014B | LATIN SMALL LETTER ENG (Sami) C0 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) D1 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA D2 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 00000168 | LATIN CAPITAL LETTER U WITH TILDE D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 00000101 | LATIN SMALL LETTER A WITH MACRON E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 0000012F | LATIN SMALL LETTER I WITH OGONEK E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) F1 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA F2 | 0000014D | LATIN SMALL LETTER O WITH MACRON F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 00000169 | LATIN SMALL LETTER U WITH TILDE F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 00000173 | LATIN SMALL LETTER U WITH OGONEK FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic) FF | 00000138 | LATIN SMALL LETTER KRA (Greenlandic) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_11.pm000644 000765 000024 00000057703 12716422334 022257 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-11. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_11; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa0", "\xe0\xb8\x81", "\xe0\xb8\x82", "\xe0\xb8\x83", "\xe0\xb8\x84", "\xe0\xb8\x85", "\xe0\xb8\x86", "\xe0\xb8\x87", "\xe0\xb8\x88", "\xe0\xb8\x89", "\xe0\xb8\x8a", "\xe0\xb8\x8b", "\xe0\xb8\x8c", "\xe0\xb8\x8d", "\xe0\xb8\x8e", "\xe0\xb8\x8f", "\xe0\xb8\x90", "\xe0\xb8\x91", "\xe0\xb8\x92", "\xe0\xb8\x93", "\xe0\xb8\x94", "\xe0\xb8\x95", "\xe0\xb8\x96", "\xe0\xb8\x97", "\xe0\xb8\x98", "\xe0\xb8\x99", "\xe0\xb8\x9a", "\xe0\xb8\x9b", "\xe0\xb8\x9c", "\xe0\xb8\x9d", "\xe0\xb8\x9e", "\xe0\xb8\x9f", "\xe0\xb8\xa0", "\xe0\xb8\xa1", "\xe0\xb8\xa2", "\xe0\xb8\xa3", "\xe0\xb8\xa4", "\xe0\xb8\xa5", "\xe0\xb8\xa6", "\xe0\xb8\xa7", "\xe0\xb8\xa8", "\xe0\xb8\xa9", "\xe0\xb8\xaa", "\xe0\xb8\xab", "\xe0\xb8\xac", "\xe0\xb8\xad", "\xe0\xb8\xae", "\xe0\xb8\xaf", "\xe0\xb8\xb0", "\xe0\xb8\xb1", "\xe0\xb8\xb2", "\xe0\xb8\xb3", "\xe0\xb8\xb4", "\xe0\xb8\xb5", "\xe0\xb8\xb6", "\xe0\xb8\xb7", "\xe0\xb8\xb8", "\xe0\xb8\xb9", "\xe0\xb8\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe0\xb8\xbf", "\xe0\xb9\x80", "\xe0\xb9\x81", "\xe0\xb9\x82", "\xe0\xb9\x83", "\xe0\xb9\x84", "\xe0\xb9\x85", "\xe0\xb9\x86", "\xe0\xb9\x87", "\xe0\xb9\x88", "\xe0\xb9\x89", "\xe0\xb9\x8a", "\xe0\xb9\x8b", "\xe0\xb9\x8c", "\xe0\xb9\x8d", "\xe0\xb9\x8e", "\xe0\xb9\x8f", "\xe0\xb9\x90", "\xe0\xb9\x91", "\xe0\xb9\x92", "\xe0\xb9\x93", "\xe0\xb9\x94", "\xe0\xb9\x95", "\xe0\xb9\x96", "\xe0\xb9\x97", "\xe0\xb9\x98", "\xe0\xb9\x99", "\xe0\xb9\x9a", "\xe0\xb9\x9b", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x00000e01 => "\xa1", 0x00000e02 => "\xa2", 0x00000e03 => "\xa3", 0x00000e04 => "\xa4", 0x00000e05 => "\xa5", 0x00000e06 => "\xa6", 0x00000e07 => "\xa7", 0x00000e08 => "\xa8", 0x00000e09 => "\xa9", 0x00000e0a => "\xaa", 0x00000e0b => "\xab", 0x00000e0c => "\xac", 0x00000e0d => "\xad", 0x00000e0e => "\xae", 0x00000e0f => "\xaf", 0x00000e10 => "\xb0", 0x00000e11 => "\xb1", 0x00000e12 => "\xb2", 0x00000e13 => "\xb3", 0x00000e14 => "\xb4", 0x00000e15 => "\xb5", 0x00000e16 => "\xb6", 0x00000e17 => "\xb7", 0x00000e18 => "\xb8", 0x00000e19 => "\xb9", 0x00000e1a => "\xba", 0x00000e1b => "\xbb", 0x00000e1c => "\xbc", 0x00000e1d => "\xbd", 0x00000e1e => "\xbe", 0x00000e1f => "\xbf", 0x00000e20 => "\xc0", 0x00000e21 => "\xc1", 0x00000e22 => "\xc2", 0x00000e23 => "\xc3", 0x00000e24 => "\xc4", 0x00000e25 => "\xc5", 0x00000e26 => "\xc6", 0x00000e27 => "\xc7", 0x00000e28 => "\xc8", 0x00000e29 => "\xc9", 0x00000e2a => "\xca", 0x00000e2b => "\xcb", 0x00000e2c => "\xcc", 0x00000e2d => "\xcd", 0x00000e2e => "\xce", 0x00000e2f => "\xcf", 0x00000e30 => "\xd0", 0x00000e31 => "\xd1", 0x00000e32 => "\xd2", 0x00000e33 => "\xd3", 0x00000e34 => "\xd4", 0x00000e35 => "\xd5", 0x00000e36 => "\xd6", 0x00000e37 => "\xd7", 0x00000e38 => "\xd8", 0x00000e39 => "\xd9", 0x00000e3a => "\xda", 0x00000e3f => "\xdf", 0x00000e40 => "\xe0", 0x00000e41 => "\xe1", 0x00000e42 => "\xe2", 0x00000e43 => "\xe3", 0x00000e44 => "\xe4", 0x00000e45 => "\xe5", 0x00000e46 => "\xe6", 0x00000e47 => "\xe7", 0x00000e48 => "\xe8", 0x00000e49 => "\xe9", 0x00000e4a => "\xea", 0x00000e4b => "\xeb", 0x00000e4c => "\xec", 0x00000e4d => "\xed", 0x00000e4e => "\xee", 0x00000e4f => "\xef", 0x00000e50 => "\xf0", 0x00000e51 => "\xf1", 0x00000e52 => "\xf2", 0x00000e53 => "\xf3", 0x00000e54 => "\xf4", 0x00000e55 => "\xf5", 0x00000e56 => "\xf6", 0x00000e57 => "\xf7", 0x00000e58 => "\xf8", 0x00000e59 => "\xf9", 0x00000e5a => "\xfa", 0x00000e5b => "\xfb", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_11 - Conversion routines for ISO-8859-11 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-11. =head1 COMMENTS The following comments have been extracted from the original charmap: source: Guido Flohr Eguido.flohr@cantanea.comE The encoding ISO-8859-11 is not yet official at the time of this writing. It is based on TIS-620, but with the addition of the non-breaking space. The mapping of 0xfc-0xff is identical to Latin-1 but this should be checked. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000E01 | THAI CHARACTER KO KAI A2 | 00000E02 | THAI CHARACTER KHO KHAI A3 | 00000E03 | THAI CHARACTER KHO KHUAT A4 | 00000E04 | THAI CHARACTER KHO KHWAI A5 | 00000E05 | THAI CHARACTER KHO KHON A6 | 00000E06 | THAI CHARACTER KHO RAKHANG A7 | 00000E07 | THAI CHARACTER NGO NGU A8 | 00000E08 | THAI CHARACTER CHO CHAN A9 | 00000E09 | THAI CHARACTER CHO CHING AA | 00000E0A | THAI CHARACTER CHO CHANG AB | 00000E0B | THAI CHARACTER SO SO AC | 00000E0C | THAI CHARACTER CHO CHOE AD | 00000E0D | THAI CHARACTER YO YING AE | 00000E0E | THAI CHARACTER DO CHADA AF | 00000E0F | THAI CHARACTER TO PATAK B0 | 00000E10 | THAI CHARACTER THO THAN B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO B2 | 00000E12 | THAI CHARACTER THO PHUTHAO B3 | 00000E13 | THAI CHARACTER NO NEN B4 | 00000E14 | THAI CHARACTER DO DEK B5 | 00000E15 | THAI CHARACTER TO TAO B6 | 00000E16 | THAI CHARACTER THO THUNG B7 | 00000E17 | THAI CHARACTER THO THAHAN B8 | 00000E18 | THAI CHARACTER THO THONG B9 | 00000E19 | THAI CHARACTER NO NU BA | 00000E1A | THAI CHARACTER BO BAIMAI BB | 00000E1B | THAI CHARACTER PO PLA BC | 00000E1C | THAI CHARACTER PHO PHUNG BD | 00000E1D | THAI CHARACTER FO FA BE | 00000E1E | THAI CHARACTER PHO PHAN BF | 00000E1F | THAI CHARACTER FO FAN C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO C1 | 00000E21 | THAI CHARACTER MO MA C2 | 00000E22 | THAI CHARACTER YO YAK C3 | 00000E23 | THAI CHARACTER RO RUA C4 | 00000E24 | THAI CHARACTER RU C5 | 00000E25 | THAI CHARACTER LO LING C6 | 00000E26 | THAI CHARACTER LU C7 | 00000E27 | THAI CHARACTER WO WAEN C8 | 00000E28 | THAI CHARACTER SO SALA C9 | 00000E29 | THAI CHARACTER SO RUSI CA | 00000E2A | THAI CHARACTER SO SUA CB | 00000E2B | THAI CHARACTER HO HIP CC | 00000E2C | THAI CHARACTER LO CHULA CD | 00000E2D | THAI CHARACTER O ANG CE | 00000E2E | THAI CHARACTER HO NOKHUK CF | 00000E2F | THAI CHARACTER PAIYANNOI D0 | 00000E30 | THAI CHARACTER SARA A D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT D2 | 00000E32 | THAI CHARACTER SARA AA D3 | 00000E33 | THAI CHARACTER SARA AM D4 | 00000E34 | THAI CHARACTER SARA I D5 | 00000E35 | THAI CHARACTER SARA II D6 | 00000E36 | THAI CHARACTER SARA UE D7 | 00000E37 | THAI CHARACTER SARA UEE D8 | 00000E38 | THAI CHARACTER SARA U D9 | 00000E39 | THAI CHARACTER SARA UU DA | 00000E3A | THAI CHARACTER PHINTHU DF | 00000E3F | THAI CHARACTER SYMBOL BAHT E0 | 00000E40 | THAI CHARACTER SARA E E1 | 00000E41 | THAI CHARACTER SARA AE E2 | 00000E42 | THAI CHARACTER SARA O E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO E6 | 00000E46 | THAI CHARACTER MAIYAMOK E7 | 00000E47 | THAI CHARACTER MAITAIKHU E8 | 00000E48 | THAI CHARACTER MAI EK E9 | 00000E49 | THAI CHARACTER MAI THO EA | 00000E4A | THAI CHARACTER MAI TRI EB | 00000E4B | THAI CHARACTER MAI CHATTAWA EC | 00000E4C | THAI CHARACTER THANTHAKHAT ED | 00000E4D | THAI CHARACTER NIKHAHIT EE | 00000E4E | THAI CHARACTER YAMAKKAN EF | 00000E4F | THAI CHARACTER FONGMAN F0 | 00000E50 | THAI DIGIT ZERO F1 | 00000E51 | THAI DIGIT ONE F2 | 00000E52 | THAI DIGIT TWO F3 | 00000E53 | THAI DIGIT THREE F4 | 00000E54 | THAI DIGIT FOUR F5 | 00000E55 | THAI DIGIT FIVE F6 | 00000E56 | THAI DIGIT SIX F7 | 00000E57 | THAI DIGIT SEVEN F8 | 00000E58 | THAI DIGIT EIGHT F9 | 00000E59 | THAI DIGIT NINE FA | 00000E5A | THAI CHARACTER ANGKHANKHU FB | 00000E5B | THAI CHARACTER KHOMUT =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_13.pm000644 000765 000024 00000065220 12716422334 022252 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-13. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_13; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xe2\x80\x9d", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xe2\x80\x9e", "\xc2\xa6", "\xc2\xa7", "\xc3\x98", "\xc2\xa9", "\xc5\x96", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc3\x86", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xe2\x80\x9c", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc3\xb8", "\xc2\xb9", "\xc5\x97", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc3\xa6", "\xc4\x84", "\xc4\xae", "\xc4\x80", "\xc4\x86", "\xc3\x84", "\xc3\x85", "\xc4\x98", "\xc4\x92", "\xc4\x8c", "\xc3\x89", "\xc5\xb9", "\xc4\x96", "\xc4\xa2", "\xc4\xb6", "\xc4\xaa", "\xc4\xbb", "\xc5\xa0", "\xc5\x83", "\xc5\x85", "\xc3\x93", "\xc5\x8c", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc5\xb2", "\xc5\x81", "\xc5\x9a", "\xc5\xaa", "\xc3\x9c", "\xc5\xbb", "\xc5\xbd", "\xc3\x9f", "\xc4\x85", "\xc4\xaf", "\xc4\x81", "\xc4\x87", "\xc3\xa4", "\xc3\xa5", "\xc4\x99", "\xc4\x93", "\xc4\x8d", "\xc3\xa9", "\xc5\xba", "\xc4\x97", "\xc4\xa3", "\xc4\xb7", "\xc4\xab", "\xc4\xbc", "\xc5\xa1", "\xc5\x84", "\xc5\x86", "\xc3\xb3", "\xc5\x8d", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc5\xb3", "\xc5\x82", "\xc5\x9b", "\xc5\xab", "\xc3\xbc", "\xc5\xbc", "\xc5\xbe", "\xe2\x80\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b9 => "\xb9", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xaf", 0x000000c9 => "\xc9", 0x000000d3 => "\xd3", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xa8", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xbf", 0x000000e9 => "\xe9", 0x000000f3 => "\xf3", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xb8", 0x000000fc => "\xfc", 0x00000100 => "\xc2", 0x00000101 => "\xe2", 0x00000104 => "\xc0", 0x00000105 => "\xe0", 0x00000106 => "\xc3", 0x00000107 => "\xe3", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x00000112 => "\xc7", 0x00000113 => "\xe7", 0x00000116 => "\xcb", 0x00000117 => "\xeb", 0x00000118 => "\xc6", 0x00000119 => "\xe6", 0x00000122 => "\xcc", 0x00000123 => "\xec", 0x0000012a => "\xce", 0x0000012b => "\xee", 0x0000012e => "\xc1", 0x0000012f => "\xe1", 0x00000136 => "\xcd", 0x00000137 => "\xed", 0x0000013b => "\xcf", 0x0000013c => "\xef", 0x00000141 => "\xd9", 0x00000142 => "\xf9", 0x00000143 => "\xd1", 0x00000144 => "\xf1", 0x00000145 => "\xd2", 0x00000146 => "\xf2", 0x0000014c => "\xd4", 0x0000014d => "\xf4", 0x00000156 => "\xaa", 0x00000157 => "\xba", 0x0000015a => "\xda", 0x0000015b => "\xfa", 0x00000160 => "\xd0", 0x00000161 => "\xf0", 0x0000016a => "\xdb", 0x0000016b => "\xfb", 0x00000172 => "\xd8", 0x00000173 => "\xf8", 0x00000179 => "\xca", 0x0000017a => "\xea", 0x0000017b => "\xdd", 0x0000017c => "\xfd", 0x0000017d => "\xde", 0x0000017e => "\xfe", 0x00002019 => "\xff", 0x0000201c => "\xb4", 0x0000201d => "\xa1", 0x0000201e => "\xa5", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_13 - Conversion routines for ISO-8859-13 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-13. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB alias ISO-IR-179 alias LATIN7 alias L7 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 0000201D | RIGHT DOUBLE QUOTATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 0000201E | DOUBLE LOW-9 QUOTATION MARK A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE A9 | 000000A9 | COPYRIGHT SIGN AA | 00000156 | LATIN CAPITAL LETTER R WITH CEDILLA AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000C6 | LATIN CAPITAL LETTER AE B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 0000201C | LEFT DOUBLE QUOTATION MARK B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE B9 | 000000B9 | SUPERSCRIPT ONE BA | 00000157 | LATIN SMALL LETTER R WITH CEDILLA BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000E6 | LATIN SMALL LETTER AE C0 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK C1 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK C2 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON C3 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK C7 | 00000112 | LATIN CAPITAL LETTER E WITH MACRON C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE CB | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE CC | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA CD | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA CE | 0000012A | LATIN CAPITAL LETTER I WITH MACRON CF | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA D0 | 00000160 | LATIN CAPITAL LETTER S WITH CARON D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE D2 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK D9 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE DA | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE DB | 0000016A | LATIN CAPITAL LETTER U WITH MACRON DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE DE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON DF | 000000DF | LATIN SMALL LETTER SHARP S E0 | 00000105 | LATIN SMALL LETTER A WITH OGONEK E1 | 0000012F | LATIN SMALL LETTER I WITH OGONEK E2 | 00000101 | LATIN SMALL LETTER A WITH MACRON E3 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 00000119 | LATIN SMALL LETTER E WITH OGONEK E7 | 00000113 | LATIN SMALL LETTER E WITH MACRON E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 0000017A | LATIN SMALL LETTER Z WITH ACUTE EB | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE EC | 00000123 | LATIN SMALL LETTER G WITH CEDILLA ED | 00000137 | LATIN SMALL LETTER K WITH CEDILLA EE | 0000012B | LATIN SMALL LETTER I WITH MACRON EF | 0000013C | LATIN SMALL LETTER L WITH CEDILLA F0 | 00000161 | LATIN SMALL LETTER S WITH CARON F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE F2 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 0000014D | LATIN SMALL LETTER O WITH MACRON F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 00000173 | LATIN SMALL LETTER U WITH OGONEK F9 | 00000142 | LATIN SMALL LETTER L WITH STROKE FA | 0000015B | LATIN SMALL LETTER S WITH ACUTE FB | 0000016B | LATIN SMALL LETTER U WITH MACRON FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE FE | 0000017E | LATIN SMALL LETTER Z WITH CARON FF | 00002019 | RIGHT SINGLE QUOTATION MARK =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_14.pm000644 000765 000024 00000066114 12716422334 022256 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-14. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_14; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xe1\xb8\x82", "\xe1\xb8\x83", "\xc2\xa3", "\xc4\x8a", "\xc4\x8b", "\xe1\xb8\x8a", "\xc2\xa7", "\xe1\xba\x80", "\xc2\xa9", "\xe1\xba\x82", "\xe1\xb8\x8b", "\xe1\xbb\xb2", "\xc2\xad", "\xc2\xae", "\xc5\xb8", "\xe1\xb8\x9e", "\xe1\xb8\x9f", "\xc4\xa0", "\xc4\xa1", "\xe1\xb9\x80", "\xe1\xb9\x81", "\xc2\xb6", "\xe1\xb9\x96", "\xe1\xba\x81", "\xe1\xb9\x97", "\xe1\xba\x83", "\xe1\xb9\xa0", "\xe1\xbb\xb3", "\xe1\xba\x84", "\xe1\xba\x85", "\xe1\xb9\xa1", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc5\xb4", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xe1\xb9\xaa", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc5\xb6", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc5\xb5", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xe1\xb9\xab", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc5\xb7", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a3 => "\xa3", 0x000000a7 => "\xa7", 0x000000a9 => "\xa9", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b6 => "\xb6", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000ff => "\xff", 0x0000010a => "\xa4", 0x0000010b => "\xa5", 0x00000120 => "\xb2", 0x00000121 => "\xb3", 0x00000174 => "\xd0", 0x00000175 => "\xf0", 0x00000176 => "\xde", 0x00000177 => "\xfe", 0x00000178 => "\xaf", 0x00001e02 => "\xa1", 0x00001e03 => "\xa2", 0x00001e0a => "\xa6", 0x00001e0b => "\xab", 0x00001e1e => "\xb0", 0x00001e1f => "\xb1", 0x00001e40 => "\xb4", 0x00001e41 => "\xb5", 0x00001e56 => "\xb7", 0x00001e57 => "\xb9", 0x00001e60 => "\xbb", 0x00001e61 => "\xbf", 0x00001e6a => "\xd7", 0x00001e6b => "\xf7", 0x00001e80 => "\xa8", 0x00001e81 => "\xb8", 0x00001e82 => "\xaa", 0x00001e83 => "\xba", 0x00001e84 => "\xbd", 0x00001e85 => "\xbe", 0x00001ef2 => "\xac", 0x00001ef3 => "\xbc", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_14 - Conversion routines for ISO-8859-14 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-14. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB alias LATIN8 alias L8 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00001E02 | LATIN CAPITAL LETTER B WITH DOT ABOVE A2 | 00001E03 | LATIN SMALL LETTER B WITH DOT ABOVE A3 | 000000A3 | POUND SIGN A4 | 0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE A5 | 0000010B | LATIN SMALL LETTER C WITH DOT ABOVE A6 | 00001E0A | LATIN CAPITAL LETTER D WITH DOT ABOVE A7 | 000000A7 | SECTION SIGN A8 | 00001E80 | LATIN CAPITAL LETTER W WITH GRAVE A9 | 000000A9 | COPYRIGHT SIGN AA | 00001E82 | LATIN CAPITAL LETTER W WITH ACUTE AB | 00001E0B | LATIN SMALL LETTER D WITH DOT ABOVE AC | 00001EF2 | LATIN CAPITAL LETTER Y WITH GRAVE AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS B0 | 00001E1E | LATIN CAPITAL LETTER F WITH DOT ABOVE B1 | 00001E1F | LATIN SMALL LETTER F WITH DOT ABOVE B2 | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE B3 | 00000121 | LATIN SMALL LETTER G WITH DOT ABOVE B4 | 00001E40 | LATIN CAPITAL LETTER M WITH DOT ABOVE B5 | 00001E41 | LATIN SMALL LETTER M WITH DOT ABOVE B6 | 000000B6 | PILCROW SIGN B7 | 00001E56 | LATIN CAPITAL LETTER P WITH DOT ABOVE B8 | 00001E81 | LATIN SMALL LETTER W WITH GRAVE B9 | 00001E57 | LATIN SMALL LETTER P WITH DOT ABOVE BA | 00001E83 | LATIN SMALL LETTER W WITH ACUTE BB | 00001E60 | LATIN CAPITAL LETTER S WITH DOT ABOVE BC | 00001EF3 | LATIN SMALL LETTER Y WITH GRAVE BD | 00001E84 | LATIN CAPITAL LETTER W WITH DIAERESIS BE | 00001E85 | LATIN SMALL LETTER W WITH DIAERESIS BF | 00001E61 | LATIN SMALL LETTER S WITH DOT ABOVE C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 00000174 | LATIN CAPITAL LETTER W WITH CIRCUMFLEX D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 00001E6A | LATIN CAPITAL LETTER T WITH DOT ABOVE D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 00000176 | LATIN CAPITAL LETTER Y WITH CIRCUMFLEX DF | 000000DF | LATIN SMALL LETTER SHARP S E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 00000175 | LATIN SMALL LETTER W WITH CIRCUMFLEX F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 00001E6B | LATIN SMALL LETTER T WITH DOT ABOVE F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 00000177 | LATIN SMALL LETTER Y WITH CIRCUMFLEX FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_15.pm000644 000765 000024 00000065050 12716422334 022255 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-15. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_15; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xe2\x82\xac", "\xc2\xa5", "\xc5\xa0", "\xc2\xa7", "\xc5\xa1", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc5\xbd", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc5\xbe", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc5\x92", "\xc5\x93", "\xc5\xb8", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a5 => "\xa5", 0x000000a7 => "\xa7", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bf => "\xbf", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d0 => "\xd0", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000de => "\xde", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x000000ff => "\xff", 0x00000152 => "\xbc", 0x00000153 => "\xbd", 0x00000160 => "\xa6", 0x00000161 => "\xa8", 0x00000178 => "\xbe", 0x0000017d => "\xb4", 0x0000017e => "\xb8", 0x000020ac => "\xa4", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_15 - Conversion routines for ISO-8859-15 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-15. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000020AC | EURO SIGN A5 | 000000A5 | YEN SIGN A6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON A7 | 000000A7 | SECTION SIGN A8 | 00000161 | LATIN SMALL LETTER S WITH CARON A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 0000017E | LATIN SMALL LETTER Z WITH CARON B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 00000152 | LATIN CAPITAL LIGATURE OE BD | 00000153 | LATIN SMALL LIGATURE OE BE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 000000D0 | LATIN CAPITAL LETTER ETH D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 000000DE | LATIN CAPITAL LETTER THORN DF | 000000DF | LATIN SMALL LETTER SHARP S E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_16.pm000644 000765 000024 00000065665 12716422334 022272 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-16. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_16; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b, 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc4\x84", "\xc4\x85", "\xc5\x81", "\xe2\x82\xac", "\xe2\x80\x9e", "\xc5\xa0", "\xc2\xa7", "\xc5\xa1", "\xc2\xa9", "\xc8\x98", "\xc2\xab", "\xc5\xb9", "\xc2\xad", "\xc5\xba", "\xc5\xbb", "\xc2\xb0", "\xc2\xb1", "\xc4\x8c", "\xc5\x82", "\xc5\xbd", "\xe2\x80\x9d", "\xc2\xb6", "\xc2\xb7", "\xc5\xbe", "\xc4\x8d", "\xc8\x99", "\xc2\xbb", "\xc5\x92", "\xc5\x93", "\xc5\xb8", "\xc5\xbc", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc4\x82", "\xc3\x84", "\xc4\x86", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc4\x90", "\xc5\x83", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc5\x90", "\xc3\x96", "\xc5\x9a", "\xc5\xb0", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc4\x98", "\xc8\x9a", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc4\x83", "\xc3\xa4", "\xc4\x87", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc4\x91", "\xc5\x84", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc5\x91", "\xc3\xb6", "\xc5\x9b", "\xc5\xb1", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc4\x99", "\xc8\x9b", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a7 => "\xa7", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ad => "\xad", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000bb => "\xbb", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c4 => "\xc4", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d6 => "\xd6", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e4 => "\xe4", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f6 => "\xf6", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000ff => "\xff", 0x00000102 => "\xc3", 0x00000103 => "\xe3", 0x00000104 => "\xa1", 0x00000105 => "\xa2", 0x00000106 => "\xc5", 0x00000107 => "\xe5", 0x0000010c => "\xb2", 0x0000010d => "\xb9", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000118 => "\xdd", 0x00000119 => "\xfd", 0x00000141 => "\xa3", 0x00000142 => "\xb3", 0x00000143 => "\xd1", 0x00000144 => "\xf1", 0x00000150 => "\xd5", 0x00000151 => "\xf5", 0x00000152 => "\xbc", 0x00000153 => "\xbd", 0x0000015a => "\xd7", 0x0000015b => "\xf7", 0x00000160 => "\xa6", 0x00000161 => "\xa8", 0x00000170 => "\xd8", 0x00000171 => "\xf8", 0x00000178 => "\xbe", 0x00000179 => "\xac", 0x0000017a => "\xae", 0x0000017b => "\xaf", 0x0000017c => "\xbf", 0x0000017d => "\xb4", 0x0000017e => "\xb8", 0x00000218 => "\xaa", 0x00000219 => "\xba", 0x0000021a => "\xde", 0x0000021b => "\xfe", 0x0000201d => "\xb5", 0x0000201e => "\xa5", 0x000020ac => "\xa4", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_16 - Conversion routines for ISO-8859-16 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-16. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB alias ISO-IR-226 alias LATIN10 alias L10 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A2 | 00000105 | LATIN SMALL LETTER A WITH OGONEK A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE A4 | 000020AC | EURO SIGN A5 | 0000201E | DOUBLE LOW-9 QUOTATION MARK A6 | 00000160 | LATIN CAPITAL LETTER S WITH CARON A7 | 000000A7 | SECTION SIGN A8 | 00000161 | LATIN SMALL LETTER S WITH CARON A9 | 000000A9 | COPYRIGHT SIGN AA | 00000218 | LATIN CAPITAL LETTER S WITH COMMA BELOW AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE AD | 000000AD | SOFT HYPHEN AE | 0000017A | LATIN SMALL LETTER Z WITH ACUTE AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 0000010C | LATIN CAPITAL LETTER C WITH CARON B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE B4 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON B5 | 0000201D | RIGHT DOUBLE QUOTATION MARK B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 0000017E | LATIN SMALL LETTER Z WITH CARON B9 | 0000010D | LATIN SMALL LETTER C WITH CARON BA | 00000219 | LATIN SMALL LETTER S WITH COMMA BELOW BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 00000152 | LATIN CAPITAL LIGATURE OE BD | 00000153 | LATIN SMALL LIGATURE OE BE | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE D8 | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK DE | 0000021A | LATIN CAPITAL LETTER T WITH COMMA BELOW DF | 000000DF | LATIN SMALL LETTER SHARP S E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 0000015B | LATIN SMALL LETTER S WITH ACUTE F8 | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 00000119 | LATIN SMALL LETTER E WITH OGONEK FE | 0000021B | LATIN SMALL LETTER T WITH COMMA BELOW FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_2.pm000644 000765 000024 00000066056 12716422334 022200 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-2. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_2; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc4\x84", "\xcb\x98", "\xc5\x81", "\xc2\xa4", "\xc4\xbd", "\xc5\x9a", "\xc2\xa7", "\xc2\xa8", "\xc5\xa0", "\xc5\x9e", "\xc5\xa4", "\xc5\xb9", "\xc2\xad", "\xc5\xbd", "\xc5\xbb", "\xc2\xb0", "\xc4\x85", "\xcb\x9b", "\xc5\x82", "\xc2\xb4", "\xc4\xbe", "\xc5\x9b", "\xcb\x87", "\xc2\xb8", "\xc5\xa1", "\xc5\x9f", "\xc5\xa5", "\xc5\xba", "\xcb\x9d", "\xc5\xbe", "\xc5\xbc", "\xc5\x94", "\xc3\x81", "\xc3\x82", "\xc4\x82", "\xc3\x84", "\xc4\xb9", "\xc4\x86", "\xc3\x87", "\xc4\x8c", "\xc3\x89", "\xc4\x98", "\xc3\x8b", "\xc4\x9a", "\xc3\x8d", "\xc3\x8e", "\xc4\x8e", "\xc4\x90", "\xc5\x83", "\xc5\x87", "\xc3\x93", "\xc3\x94", "\xc5\x90", "\xc3\x96", "\xc3\x97", "\xc5\x98", "\xc5\xae", "\xc3\x9a", "\xc5\xb0", "\xc3\x9c", "\xc3\x9d", "\xc5\xa2", "\xc3\x9f", "\xc5\x95", "\xc3\xa1", "\xc3\xa2", "\xc4\x83", "\xc3\xa4", "\xc4\xba", "\xc4\x87", "\xc3\xa7", "\xc4\x8d", "\xc3\xa9", "\xc4\x99", "\xc3\xab", "\xc4\x9b", "\xc3\xad", "\xc3\xae", "\xc4\x8f", "\xc4\x91", "\xc5\x84", "\xc5\x88", "\xc3\xb3", "\xc3\xb4", "\xc5\x91", "\xc3\xb6", "\xc3\xb7", "\xc5\x99", "\xc5\xaf", "\xc3\xba", "\xc5\xb1", "\xc3\xbc", "\xc3\xbd", "\xc5\xa3", "\xcb\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a4 => "\xa4", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000ad => "\xad", 0x000000b0 => "\xb0", 0x000000b4 => "\xb4", 0x000000b8 => "\xb8", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c4 => "\xc4", 0x000000c7 => "\xc7", 0x000000c9 => "\xc9", 0x000000cb => "\xcb", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000da => "\xda", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000df => "\xdf", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e4 => "\xe4", 0x000000e7 => "\xe7", 0x000000e9 => "\xe9", 0x000000eb => "\xeb", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000fa => "\xfa", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x00000102 => "\xc3", 0x00000103 => "\xe3", 0x00000104 => "\xa1", 0x00000105 => "\xb1", 0x00000106 => "\xc6", 0x00000107 => "\xe6", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x0000010e => "\xcf", 0x0000010f => "\xef", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000118 => "\xca", 0x00000119 => "\xea", 0x0000011a => "\xcc", 0x0000011b => "\xec", 0x00000139 => "\xc5", 0x0000013a => "\xe5", 0x0000013d => "\xa5", 0x0000013e => "\xb5", 0x00000141 => "\xa3", 0x00000142 => "\xb3", 0x00000143 => "\xd1", 0x00000144 => "\xf1", 0x00000147 => "\xd2", 0x00000148 => "\xf2", 0x00000150 => "\xd5", 0x00000151 => "\xf5", 0x00000154 => "\xc0", 0x00000155 => "\xe0", 0x00000158 => "\xd8", 0x00000159 => "\xf8", 0x0000015a => "\xa6", 0x0000015b => "\xb6", 0x0000015e => "\xaa", 0x0000015f => "\xba", 0x00000160 => "\xa9", 0x00000161 => "\xb9", 0x00000162 => "\xde", 0x00000163 => "\xfe", 0x00000164 => "\xab", 0x00000165 => "\xbb", 0x0000016e => "\xd9", 0x0000016f => "\xf9", 0x00000170 => "\xdb", 0x00000171 => "\xfb", 0x00000179 => "\xac", 0x0000017a => "\xbc", 0x0000017b => "\xaf", 0x0000017c => "\xbf", 0x0000017d => "\xae", 0x0000017e => "\xbe", 0x000002c7 => "\xb7", 0x000002d8 => "\xa2", 0x000002d9 => "\xff", 0x000002db => "\xb2", 0x000002dd => "\xbd", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_2 - Conversion routines for ISO-8859-2 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-2. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-101 alias ISO_8859-2:1987 alias ISO_8859-2 alias LATIN2 alias L2 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A2 | 000002D8 | BREVE A3 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE A4 | 000000A4 | CURRENCY SIGN A5 | 0000013D | LATIN CAPITAL LETTER L WITH CARON A6 | 0000015A | LATIN CAPITAL LETTER S WITH ACUTE A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA AB | 00000164 | LATIN CAPITAL LETTER T WITH CARON AC | 00000179 | LATIN CAPITAL LETTER Z WITH ACUTE AD | 000000AD | SOFT HYPHEN AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B0 | 000000B0 | DEGREE SIGN B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK B2 | 000002DB | OGONEK B3 | 00000142 | LATIN SMALL LETTER L WITH STROKE B4 | 000000B4 | ACUTE ACCENT B5 | 0000013E | LATIN SMALL LETTER L WITH CARON B6 | 0000015B | LATIN SMALL LETTER S WITH ACUTE B7 | 000002C7 | CARON (Mandarin Chinese third tone) B8 | 000000B8 | CEDILLA B9 | 00000161 | LATIN SMALL LETTER S WITH CARON BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA BB | 00000165 | LATIN SMALL LETTER T WITH CARON BC | 0000017A | LATIN SMALL LETTER Z WITH ACUTE BD | 000002DD | DOUBLE ACUTE ACCENT BE | 0000017E | LATIN SMALL LETTER Z WITH CARON BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE C0 | 00000154 | LATIN CAPITAL LETTER R WITH ACUTE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 00000139 | LATIN CAPITAL LETTER L WITH ACUTE C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 0000011A | LATIN CAPITAL LETTER E WITH CARON CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 0000010E | LATIN CAPITAL LETTER D WITH CARON D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00000143 | LATIN CAPITAL LETTER N WITH ACUTE D2 | 00000147 | LATIN CAPITAL LETTER N WITH CARON D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 00000150 | LATIN CAPITAL LETTER O WITH DOUBLE ACUTE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 00000158 | LATIN CAPITAL LETTER R WITH CARON D9 | 0000016E | LATIN CAPITAL LETTER U WITH RING ABOVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 00000170 | LATIN CAPITAL LETTER U WITH DOUBLE ACUTE DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 00000155 | LATIN SMALL LETTER R WITH ACUTE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 00000103 | LATIN SMALL LETTER A WITH BREVE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 0000013A | LATIN SMALL LETTER L WITH ACUTE E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 0000011B | LATIN SMALL LETTER E WITH CARON ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 0000010F | LATIN SMALL LETTER D WITH CARON F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 00000144 | LATIN SMALL LETTER N WITH ACUTE F2 | 00000148 | LATIN SMALL LETTER N WITH CARON F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 00000151 | LATIN SMALL LETTER O WITH DOUBLE ACUTE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 00000159 | LATIN SMALL LETTER R WITH CARON F9 | 0000016F | LATIN SMALL LETTER U WITH RING ABOVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 00000171 | LATIN SMALL LETTER U WITH DOUBLE ACUTE FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 00000163 | LATIN SMALL LETTER T WITH CEDILLA FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_3.pm000644 000765 000024 00000065003 12716422334 022170 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-3. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_3; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7, 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b, 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c, 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc4\xa6", "\xcb\x98", "\xc2\xa3", "\xc2\xa4", "\xef\xbf\xbd", "\xc4\xa4", "\xc2\xa7", "\xc2\xa8", "\xc4\xb0", "\xc5\x9e", "\xc4\x9e", "\xc4\xb4", "\xc2\xad", "\xef\xbf\xbd", "\xc5\xbb", "\xc2\xb0", "\xc4\xa7", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc4\xa5", "\xc2\xb7", "\xc2\xb8", "\xc4\xb1", "\xc5\x9f", "\xc4\x9f", "\xc4\xb5", "\xc2\xbd", "\xef\xbf\xbd", "\xc5\xbc", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xef\xbf\xbd", "\xc3\x84", "\xc4\x8a", "\xc4\x88", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xef\xbf\xbd", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc4\xa0", "\xc3\x96", "\xc3\x97", "\xc4\x9c", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc5\xac", "\xc5\x9c", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xef\xbf\xbd", "\xc3\xa4", "\xc4\x8b", "\xc4\x89", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xef\xbf\xbd", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc4\xa1", "\xc3\xb6", "\xc3\xb7", "\xc4\x9d", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc5\xad", "\xc5\x9d", "\xcb\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000ad => "\xad", 0x000000b0 => "\xb0", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000bd => "\xbd", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c4 => "\xc4", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e4 => "\xe4", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x00000108 => "\xc6", 0x00000109 => "\xe6", 0x0000010a => "\xc5", 0x0000010b => "\xe5", 0x0000011c => "\xd8", 0x0000011d => "\xf8", 0x0000011e => "\xab", 0x0000011f => "\xbb", 0x00000120 => "\xd5", 0x00000121 => "\xf5", 0x00000124 => "\xa6", 0x00000125 => "\xb6", 0x00000126 => "\xa1", 0x00000127 => "\xb1", 0x00000130 => "\xa9", 0x00000131 => "\xb9", 0x00000134 => "\xac", 0x00000135 => "\xbc", 0x0000015c => "\xde", 0x0000015d => "\xfe", 0x0000015e => "\xaa", 0x0000015f => "\xba", 0x0000016c => "\xdd", 0x0000016d => "\xfd", 0x0000017b => "\xaf", 0x0000017c => "\xbf", 0x000002d8 => "\xa2", 0x000002d9 => "\xff", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_3 - Conversion routines for ISO-8859-3 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-3. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-109 alias ISO_8859-3:1988 alias ISO_8859-3 alias LATIN3 alias L3 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000126 | LATIN CAPITAL LETTER H WITH STROKE A2 | 000002D8 | BREVE A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A6 | 00000124 | LATIN CAPITAL LETTER H WITH CIRCUMFLEX A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE AA | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA AB | 0000011E | LATIN CAPITAL LETTER G WITH BREVE AC | 00000134 | LATIN CAPITAL LETTER J WITH CIRCUMFLEX AD | 000000AD | SOFT HYPHEN AF | 0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE B0 | 000000B0 | DEGREE SIGN B1 | 00000127 | LATIN SMALL LETTER H WITH STROKE B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 00000125 | LATIN SMALL LETTER H WITH CIRCUMFLEX B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 00000131 | LATIN SMALL LETTER DOTLESS I BA | 0000015F | LATIN SMALL LETTER S WITH CEDILLA BB | 0000011F | LATIN SMALL LETTER G WITH BREVE BC | 00000135 | LATIN SMALL LETTER J WITH CIRCUMFLEX BD | 000000BD | VULGAR FRACTION ONE HALF BF | 0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE C6 | 00000108 | LATIN CAPITAL LETTER C WITH CIRCUMFLEX C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 0000011C | LATIN CAPITAL LETTER G WITH CIRCUMFLEX D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 0000016C | LATIN CAPITAL LETTER U WITH BREVE DE | 0000015C | LATIN CAPITAL LETTER S WITH CIRCUMFLEX DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 0000010B | LATIN SMALL LETTER C WITH DOT ABOVE E6 | 00000109 | LATIN SMALL LETTER C WITH CIRCUMFLEX E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 00000121 | LATIN SMALL LETTER G WITH DOT ABOVE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 0000011D | LATIN SMALL LETTER G WITH CIRCUMFLEX F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 0000016D | LATIN SMALL LETTER U WITH BREVE FE | 0000015D | LATIN SMALL LETTER S WITH CIRCUMFLEX FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_4.pm000644 000765 000024 00000066056 12716422334 022202 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-4. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_4; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc4\x84", "\xc4\xb8", "\xc5\x96", "\xc2\xa4", "\xc4\xa8", "\xc4\xbb", "\xc2\xa7", "\xc2\xa8", "\xc5\xa0", "\xc4\x92", "\xc4\xa2", "\xc5\xa6", "\xc2\xad", "\xc5\xbd", "\xc2\xaf", "\xc2\xb0", "\xc4\x85", "\xcb\x9b", "\xc5\x97", "\xc2\xb4", "\xc4\xa9", "\xc4\xbc", "\xcb\x87", "\xc2\xb8", "\xc5\xa1", "\xc4\x93", "\xc4\xa3", "\xc5\xa7", "\xc5\x8a", "\xc5\xbe", "\xc5\x8b", "\xc4\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc4\xae", "\xc4\x8c", "\xc3\x89", "\xc4\x98", "\xc3\x8b", "\xc4\x96", "\xc3\x8d", "\xc3\x8e", "\xc4\xaa", "\xc4\x90", "\xc5\x85", "\xc5\x8c", "\xc4\xb6", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc5\xb2", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc5\xa8", "\xc5\xaa", "\xc3\x9f", "\xc4\x81", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc4\xaf", "\xc4\x8d", "\xc3\xa9", "\xc4\x99", "\xc3\xab", "\xc4\x97", "\xc3\xad", "\xc3\xae", "\xc4\xab", "\xc4\x91", "\xc5\x86", "\xc5\x8d", "\xc4\xb7", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc5\xb3", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc5\xa9", "\xc5\xab", "\xcb\x99", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a4 => "\xa4", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000ad => "\xad", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b4 => "\xb4", 0x000000b8 => "\xb8", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c9 => "\xc9", 0x000000cb => "\xcb", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e9 => "\xe9", 0x000000eb => "\xeb", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x00000100 => "\xc0", 0x00000101 => "\xe0", 0x00000104 => "\xa1", 0x00000105 => "\xb1", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000112 => "\xaa", 0x00000113 => "\xba", 0x00000116 => "\xcc", 0x00000117 => "\xec", 0x00000118 => "\xca", 0x00000119 => "\xea", 0x00000122 => "\xab", 0x00000123 => "\xbb", 0x00000128 => "\xa5", 0x00000129 => "\xb5", 0x0000012a => "\xcf", 0x0000012b => "\xef", 0x0000012e => "\xc7", 0x0000012f => "\xe7", 0x00000136 => "\xd3", 0x00000137 => "\xf3", 0x00000138 => "\xa2", 0x0000013b => "\xa6", 0x0000013c => "\xb6", 0x00000145 => "\xd1", 0x00000146 => "\xf1", 0x0000014a => "\xbd", 0x0000014b => "\xbf", 0x0000014c => "\xd2", 0x0000014d => "\xf2", 0x00000156 => "\xa3", 0x00000157 => "\xb3", 0x00000160 => "\xa9", 0x00000161 => "\xb9", 0x00000166 => "\xac", 0x00000167 => "\xbc", 0x00000168 => "\xdd", 0x00000169 => "\xfd", 0x0000016a => "\xde", 0x0000016b => "\xfe", 0x00000172 => "\xd9", 0x00000173 => "\xf9", 0x0000017d => "\xae", 0x0000017e => "\xbe", 0x000002c7 => "\xb7", 0x000002d9 => "\xff", 0x000002db => "\xb2", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_4 - Conversion routines for ISO-8859-4 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-4. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-110 alias ISO_8859-4:1988 alias ISO_8859-4 alias LATIN4 alias L4 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000104 | LATIN CAPITAL LETTER A WITH OGONEK A2 | 00000138 | LATIN SMALL LETTER KRA (Greenlandic) A3 | 00000156 | LATIN CAPITAL LETTER R WITH CEDILLA A4 | 000000A4 | CURRENCY SIGN A5 | 00000128 | LATIN CAPITAL LETTER I WITH TILDE A6 | 0000013B | LATIN CAPITAL LETTER L WITH CEDILLA A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON AA | 00000112 | LATIN CAPITAL LETTER E WITH MACRON AB | 00000122 | LATIN CAPITAL LETTER G WITH CEDILLA AC | 00000166 | LATIN CAPITAL LETTER T WITH STROKE AD | 000000AD | SOFT HYPHEN AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 00000105 | LATIN SMALL LETTER A WITH OGONEK B2 | 000002DB | OGONEK B3 | 00000157 | LATIN SMALL LETTER R WITH CEDILLA B4 | 000000B4 | ACUTE ACCENT B5 | 00000129 | LATIN SMALL LETTER I WITH TILDE B6 | 0000013C | LATIN SMALL LETTER L WITH CEDILLA B7 | 000002C7 | CARON (Mandarin Chinese third tone) B8 | 000000B8 | CEDILLA B9 | 00000161 | LATIN SMALL LETTER S WITH CARON BA | 00000113 | LATIN SMALL LETTER E WITH MACRON BB | 00000123 | LATIN SMALL LETTER G WITH CEDILLA BC | 00000167 | LATIN SMALL LETTER T WITH STROKE BD | 0000014A | LATIN CAPITAL LETTER ENG (Sami) BE | 0000017E | LATIN SMALL LETTER Z WITH CARON BF | 0000014B | LATIN SMALL LETTER ENG (Sami) C0 | 00000100 | LATIN CAPITAL LETTER A WITH MACRON C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 0000012E | LATIN CAPITAL LETTER I WITH OGONEK C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 00000118 | LATIN CAPITAL LETTER E WITH OGONEK CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 00000116 | LATIN CAPITAL LETTER E WITH DOT ABOVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 0000012A | LATIN CAPITAL LETTER I WITH MACRON D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00000145 | LATIN CAPITAL LETTER N WITH CEDILLA D2 | 0000014C | LATIN CAPITAL LETTER O WITH MACRON D3 | 00000136 | LATIN CAPITAL LETTER K WITH CEDILLA D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 00000172 | LATIN CAPITAL LETTER U WITH OGONEK DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 00000168 | LATIN CAPITAL LETTER U WITH TILDE DE | 0000016A | LATIN CAPITAL LETTER U WITH MACRON DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 00000101 | LATIN SMALL LETTER A WITH MACRON E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 0000012F | LATIN SMALL LETTER I WITH OGONEK E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 00000119 | LATIN SMALL LETTER E WITH OGONEK EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 00000117 | LATIN SMALL LETTER E WITH DOT ABOVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 0000012B | LATIN SMALL LETTER I WITH MACRON F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 00000146 | LATIN SMALL LETTER N WITH CEDILLA F2 | 0000014D | LATIN SMALL LETTER O WITH MACRON F3 | 00000137 | LATIN SMALL LETTER K WITH CEDILLA F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 00000173 | LATIN SMALL LETTER U WITH OGONEK FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 00000169 | LATIN SMALL LETTER U WITH TILDE FE | 0000016B | LATIN SMALL LETTER U WITH MACRON FF | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_5.pm000644 000765 000024 00000065326 12716422334 022202 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-5. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_5; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xd0\x81", "\xd0\x82", "\xd0\x83", "\xd0\x84", "\xd0\x85", "\xd0\x86", "\xd0\x87", "\xd0\x88", "\xd0\x89", "\xd0\x8a", "\xd0\x8b", "\xd0\x8c", "\xc2\xad", "\xd0\x8e", "\xd0\x8f", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xd1\x8f", "\xe2\x84\x96", "\xd1\x91", "\xd1\x92", "\xd1\x93", "\xd1\x94", "\xd1\x95", "\xd1\x96", "\xd1\x97", "\xd1\x98", "\xd1\x99", "\xd1\x9a", "\xd1\x9b", "\xd1\x9c", "\xc2\xa7", "\xd1\x9e", "\xd1\x9f", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a7 => "\xfd", 0x000000ad => "\xad", 0x00000401 => "\xa1", 0x00000402 => "\xa2", 0x00000403 => "\xa3", 0x00000404 => "\xa4", 0x00000405 => "\xa5", 0x00000406 => "\xa6", 0x00000407 => "\xa7", 0x00000408 => "\xa8", 0x00000409 => "\xa9", 0x0000040a => "\xaa", 0x0000040b => "\xab", 0x0000040c => "\xac", 0x0000040e => "\xae", 0x0000040f => "\xaf", 0x00000410 => "\xb0", 0x00000411 => "\xb1", 0x00000412 => "\xb2", 0x00000413 => "\xb3", 0x00000414 => "\xb4", 0x00000415 => "\xb5", 0x00000416 => "\xb6", 0x00000417 => "\xb7", 0x00000418 => "\xb8", 0x00000419 => "\xb9", 0x0000041a => "\xba", 0x0000041b => "\xbb", 0x0000041c => "\xbc", 0x0000041d => "\xbd", 0x0000041e => "\xbe", 0x0000041f => "\xbf", 0x00000420 => "\xc0", 0x00000421 => "\xc1", 0x00000422 => "\xc2", 0x00000423 => "\xc3", 0x00000424 => "\xc4", 0x00000425 => "\xc5", 0x00000426 => "\xc6", 0x00000427 => "\xc7", 0x00000428 => "\xc8", 0x00000429 => "\xc9", 0x0000042a => "\xca", 0x0000042b => "\xcb", 0x0000042c => "\xcc", 0x0000042d => "\xcd", 0x0000042e => "\xce", 0x0000042f => "\xcf", 0x00000430 => "\xd0", 0x00000431 => "\xd1", 0x00000432 => "\xd2", 0x00000433 => "\xd3", 0x00000434 => "\xd4", 0x00000435 => "\xd5", 0x00000436 => "\xd6", 0x00000437 => "\xd7", 0x00000438 => "\xd8", 0x00000439 => "\xd9", 0x0000043a => "\xda", 0x0000043b => "\xdb", 0x0000043c => "\xdc", 0x0000043d => "\xdd", 0x0000043e => "\xde", 0x0000043f => "\xdf", 0x00000440 => "\xe0", 0x00000441 => "\xe1", 0x00000442 => "\xe2", 0x00000443 => "\xe3", 0x00000444 => "\xe4", 0x00000445 => "\xe5", 0x00000446 => "\xe6", 0x00000447 => "\xe7", 0x00000448 => "\xe8", 0x00000449 => "\xe9", 0x0000044a => "\xea", 0x0000044b => "\xeb", 0x0000044c => "\xec", 0x0000044d => "\xed", 0x0000044e => "\xee", 0x0000044f => "\xef", 0x00000451 => "\xf1", 0x00000452 => "\xf2", 0x00000453 => "\xf3", 0x00000454 => "\xf4", 0x00000455 => "\xf5", 0x00000456 => "\xf6", 0x00000457 => "\xf7", 0x00000458 => "\xf8", 0x00000459 => "\xf9", 0x0000045a => "\xfa", 0x0000045b => "\xfb", 0x0000045c => "\xfc", 0x0000045e => "\xfe", 0x0000045f => "\xff", 0x00002116 => "\xf0", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_5 - Conversion routines for ISO-8859-5 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-5. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-144 alias ISO_8859-5:1988 alias ISO_8859-5 alias CYRILLIC Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00000401 | CYRILLIC CAPITAL LETTER IO A2 | 00000402 | CYRILLIC CAPITAL LETTER DJE (Serbocroatian) A3 | 00000403 | CYRILLIC CAPITAL LETTER GJE A4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE A5 | 00000405 | CYRILLIC CAPITAL LETTER DZE A6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I A7 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian) A8 | 00000408 | CYRILLIC CAPITAL LETTER JE A9 | 00000409 | CYRILLIC CAPITAL LETTER LJE AA | 0000040A | CYRILLIC CAPITAL LETTER NJE AB | 0000040B | CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) AC | 0000040C | CYRILLIC CAPITAL LETTER KJE AD | 000000AD | SOFT HYPHEN AE | 0000040E | CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) AF | 0000040F | CYRILLIC CAPITAL LETTER DZHE B0 | 00000410 | CYRILLIC CAPITAL LETTER A B1 | 00000411 | CYRILLIC CAPITAL LETTER BE B2 | 00000412 | CYRILLIC CAPITAL LETTER VE B3 | 00000413 | CYRILLIC CAPITAL LETTER GHE B4 | 00000414 | CYRILLIC CAPITAL LETTER DE B5 | 00000415 | CYRILLIC CAPITAL LETTER IE B6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE B7 | 00000417 | CYRILLIC CAPITAL LETTER ZE B8 | 00000418 | CYRILLIC CAPITAL LETTER I B9 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I BA | 0000041A | CYRILLIC CAPITAL LETTER KA BB | 0000041B | CYRILLIC CAPITAL LETTER EL BC | 0000041C | CYRILLIC CAPITAL LETTER EM BD | 0000041D | CYRILLIC CAPITAL LETTER EN BE | 0000041E | CYRILLIC CAPITAL LETTER O BF | 0000041F | CYRILLIC CAPITAL LETTER PE C0 | 00000420 | CYRILLIC CAPITAL LETTER ER C1 | 00000421 | CYRILLIC CAPITAL LETTER ES C2 | 00000422 | CYRILLIC CAPITAL LETTER TE C3 | 00000423 | CYRILLIC CAPITAL LETTER U C4 | 00000424 | CYRILLIC CAPITAL LETTER EF C5 | 00000425 | CYRILLIC CAPITAL LETTER HA C6 | 00000426 | CYRILLIC CAPITAL LETTER TSE C7 | 00000427 | CYRILLIC CAPITAL LETTER CHE C8 | 00000428 | CYRILLIC CAPITAL LETTER SHA C9 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA CA | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN CB | 0000042B | CYRILLIC CAPITAL LETTER YERU CC | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN CD | 0000042D | CYRILLIC CAPITAL LETTER E CE | 0000042E | CYRILLIC CAPITAL LETTER YU CF | 0000042F | CYRILLIC CAPITAL LETTER YA D0 | 00000430 | CYRILLIC SMALL LETTER A D1 | 00000431 | CYRILLIC SMALL LETTER BE D2 | 00000432 | CYRILLIC SMALL LETTER VE D3 | 00000433 | CYRILLIC SMALL LETTER GHE D4 | 00000434 | CYRILLIC SMALL LETTER DE D5 | 00000435 | CYRILLIC SMALL LETTER IE D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000437 | CYRILLIC SMALL LETTER ZE D8 | 00000438 | CYRILLIC SMALL LETTER I D9 | 00000439 | CYRILLIC SMALL LETTER SHORT I DA | 0000043A | CYRILLIC SMALL LETTER KA DB | 0000043B | CYRILLIC SMALL LETTER EL DC | 0000043C | CYRILLIC SMALL LETTER EM DD | 0000043D | CYRILLIC SMALL LETTER EN DE | 0000043E | CYRILLIC SMALL LETTER O DF | 0000043F | CYRILLIC SMALL LETTER PE E0 | 00000440 | CYRILLIC SMALL LETTER ER E1 | 00000441 | CYRILLIC SMALL LETTER ES E2 | 00000442 | CYRILLIC SMALL LETTER TE E3 | 00000443 | CYRILLIC SMALL LETTER U E4 | 00000444 | CYRILLIC SMALL LETTER EF E5 | 00000445 | CYRILLIC SMALL LETTER HA E6 | 00000446 | CYRILLIC SMALL LETTER TSE E7 | 00000447 | CYRILLIC SMALL LETTER CHE E8 | 00000448 | CYRILLIC SMALL LETTER SHA E9 | 00000449 | CYRILLIC SMALL LETTER SHCHA EA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN EB | 0000044B | CYRILLIC SMALL LETTER YERU EC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN ED | 0000044D | CYRILLIC SMALL LETTER E EE | 0000044E | CYRILLIC SMALL LETTER YU EF | 0000044F | CYRILLIC SMALL LETTER YA F0 | 00002116 | NUMERO SIGN F1 | 00000451 | CYRILLIC SMALL LETTER IO F2 | 00000452 | CYRILLIC SMALL LETTER DJE (Serbocroatian) F3 | 00000453 | CYRILLIC SMALL LETTER GJE F4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE F5 | 00000455 | CYRILLIC SMALL LETTER DZE F6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I F7 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian) F8 | 00000458 | CYRILLIC SMALL LETTER JE F9 | 00000459 | CYRILLIC SMALL LETTER LJE FA | 0000045A | CYRILLIC SMALL LETTER NJE FB | 0000045B | CYRILLIC SMALL LETTER TSHE (Serbocroatian) FC | 0000045C | CYRILLIC SMALL LETTER KJE FD | 000000A7 | SECTION SIGN FE | 0000045E | CYRILLIC SMALL LETTER SHORT U (Byelorussian) FF | 0000045F | CYRILLIC SMALL LETTER DZHE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_6.pm000644 000765 000024 00000056256 12716422334 022205 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-6. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_6; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f, 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa4", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\x8c", "\xc2\xad", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\x9b", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\x9f", "\xef\xbf\xbd", "\xd8\xa1", "\xd8\xa2", "\xd8\xa3", "\xd8\xa4", "\xd8\xa5", "\xd8\xa6", "\xd8\xa7", "\xd8\xa8", "\xd8\xa9", "\xd8\xaa", "\xd8\xab", "\xd8\xac", "\xd8\xad", "\xd8\xae", "\xd8\xaf", "\xd8\xb0", "\xd8\xb1", "\xd8\xb2", "\xd8\xb3", "\xd8\xb4", "\xd8\xb5", "\xd8\xb6", "\xd8\xb7", "\xd8\xb8", "\xd8\xb9", "\xd8\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\x80", "\xd9\x81", "\xd9\x82", "\xd9\x83", "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd9\x87", "\xd9\x88", "\xd9\x89", "\xd9\x8a", "\xd9\x8b", "\xd9\x8c", "\xd9\x8d", "\xd9\x8e", "\xd9\x8f", "\xd9\x90", "\xd9\x91", "\xd9\x92", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a4 => "\xa4", 0x000000ad => "\xad", 0x0000060c => "\xac", 0x0000061b => "\xbb", 0x0000061f => "\xbf", 0x00000621 => "\xc1", 0x00000622 => "\xc2", 0x00000623 => "\xc3", 0x00000624 => "\xc4", 0x00000625 => "\xc5", 0x00000626 => "\xc6", 0x00000627 => "\xc7", 0x00000628 => "\xc8", 0x00000629 => "\xc9", 0x0000062a => "\xca", 0x0000062b => "\xcb", 0x0000062c => "\xcc", 0x0000062d => "\xcd", 0x0000062e => "\xce", 0x0000062f => "\xcf", 0x00000630 => "\xd0", 0x00000631 => "\xd1", 0x00000632 => "\xd2", 0x00000633 => "\xd3", 0x00000634 => "\xd4", 0x00000635 => "\xd5", 0x00000636 => "\xd6", 0x00000637 => "\xd7", 0x00000638 => "\xd8", 0x00000639 => "\xd9", 0x0000063a => "\xda", 0x00000640 => "\xe0", 0x00000641 => "\xe1", 0x00000642 => "\xe2", 0x00000643 => "\xe3", 0x00000644 => "\xe4", 0x00000645 => "\xe5", 0x00000646 => "\xe6", 0x00000647 => "\xe7", 0x00000648 => "\xe8", 0x00000649 => "\xe9", 0x0000064a => "\xea", 0x0000064b => "\xeb", 0x0000064c => "\xec", 0x0000064d => "\xed", 0x0000064e => "\xee", 0x0000064f => "\xef", 0x00000650 => "\xf0", 0x00000651 => "\xf1", 0x00000652 => "\xf2", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_6 - Conversion routines for ISO-8859-6 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-6. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-127 alias ISO_8859-6:1987 alias ISO_8859-6 alias ECMA-114 alias ASMO-708 alias ARABIC Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A4 | 000000A4 | CURRENCY SIGN AC | 0000060C | ARABIC COMMA AD | 000000AD | SOFT HYPHEN BB | 0000061B | ARABIC SEMICOLON BF | 0000061F | ARABIC QUESTION MARK C1 | 00000621 | ARABIC LETTER HAMZA C2 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE C3 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE C4 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE C5 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW C6 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE C7 | 00000627 | ARABIC LETTER ALEF C8 | 00000628 | ARABIC LETTER BEH C9 | 00000629 | ARABIC LETTER TEH MARBUTA CA | 0000062A | ARABIC LETTER TEH CB | 0000062B | ARABIC LETTER THEH CC | 0000062C | ARABIC LETTER JEEM CD | 0000062D | ARABIC LETTER HAH CE | 0000062E | ARABIC LETTER KHAH CF | 0000062F | ARABIC LETTER DAL D0 | 00000630 | ARABIC LETTER THAL D1 | 00000631 | ARABIC LETTER REH D2 | 00000632 | ARABIC LETTER ZAIN D3 | 00000633 | ARABIC LETTER SEEN D4 | 00000634 | ARABIC LETTER SHEEN D5 | 00000635 | ARABIC LETTER SAD D6 | 00000636 | ARABIC LETTER DAD D7 | 00000637 | ARABIC LETTER TAH D8 | 00000638 | ARABIC LETTER ZAH D9 | 00000639 | ARABIC LETTER AIN DA | 0000063A | ARABIC LETTER GHAIN E0 | 00000640 | ARABIC TATWEEL E1 | 00000641 | ARABIC LETTER FEH E2 | 00000642 | ARABIC LETTER QAF E3 | 00000643 | ARABIC LETTER KAF E4 | 00000644 | ARABIC LETTER LAM E5 | 00000645 | ARABIC LETTER MEEM E6 | 00000646 | ARABIC LETTER NOON E7 | 00000647 | ARABIC LETTER HEH E8 | 00000648 | ARABIC LETTER WAW E9 | 00000649 | ARABIC LETTER ALEF MAKSURA EA | 0000064A | ARABIC LETTER YEH EB | 0000064B | ARABIC FATHATAN EC | 0000064C | ARABIC DAMMATAN ED | 0000064D | ARABIC KASRATAN EE | 0000064E | ARABIC FATHA EF | 0000064F | ARABIC DAMMA F0 | 00000650 | ARABIC KASRA F1 | 00000651 | ARABIC SHADDA F2 | 00000652 | ARABIC SUKUN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_7.pm000644 000765 000024 00000064342 12716422334 022201 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-7. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_7; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xe2\x80\x98", "\xe2\x80\x99", "\xc2\xa3", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xef\xbf\xbd", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xef\xbf\xbd", "\xe2\x80\x95", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xce\x84", "\xce\x85", "\xce\x86", "\xc2\xb7", "\xce\x88", "\xce\x89", "\xce\x8a", "\xc2\xbb", "\xce\x8c", "\xc2\xbd", "\xce\x8e", "\xce\x8f", "\xce\x90", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xef\xbf\xbd", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xce\xaa", "\xce\xab", "\xce\xac", "\xce\xad", "\xce\xae", "\xce\xaf", "\xce\xb0", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xcf\x8a", "\xcf\x8b", "\xcf\x8c", "\xcf\x8d", "\xcf\x8e", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a3 => "\xa3", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b7 => "\xb7", 0x000000bb => "\xbb", 0x000000bd => "\xbd", 0x00000384 => "\xb4", 0x00000385 => "\xb5", 0x00000386 => "\xb6", 0x00000388 => "\xb8", 0x00000389 => "\xb9", 0x0000038a => "\xba", 0x0000038c => "\xbc", 0x0000038e => "\xbe", 0x0000038f => "\xbf", 0x00000390 => "\xc0", 0x00000391 => "\xc1", 0x00000392 => "\xc2", 0x00000393 => "\xc3", 0x00000394 => "\xc4", 0x00000395 => "\xc5", 0x00000396 => "\xc6", 0x00000397 => "\xc7", 0x00000398 => "\xc8", 0x00000399 => "\xc9", 0x0000039a => "\xca", 0x0000039b => "\xcb", 0x0000039c => "\xcc", 0x0000039d => "\xcd", 0x0000039e => "\xce", 0x0000039f => "\xcf", 0x000003a0 => "\xd0", 0x000003a1 => "\xd1", 0x000003a3 => "\xd3", 0x000003a4 => "\xd4", 0x000003a5 => "\xd5", 0x000003a6 => "\xd6", 0x000003a7 => "\xd7", 0x000003a8 => "\xd8", 0x000003a9 => "\xd9", 0x000003aa => "\xda", 0x000003ab => "\xdb", 0x000003ac => "\xdc", 0x000003ad => "\xdd", 0x000003ae => "\xde", 0x000003af => "\xdf", 0x000003b0 => "\xe0", 0x000003b1 => "\xe1", 0x000003b2 => "\xe2", 0x000003b3 => "\xe3", 0x000003b4 => "\xe4", 0x000003b5 => "\xe5", 0x000003b6 => "\xe6", 0x000003b7 => "\xe7", 0x000003b8 => "\xe8", 0x000003b9 => "\xe9", 0x000003ba => "\xea", 0x000003bb => "\xeb", 0x000003bc => "\xec", 0x000003bd => "\xed", 0x000003be => "\xee", 0x000003bf => "\xef", 0x000003c0 => "\xf0", 0x000003c1 => "\xf1", 0x000003c2 => "\xf2", 0x000003c3 => "\xf3", 0x000003c4 => "\xf4", 0x000003c5 => "\xf5", 0x000003c6 => "\xf6", 0x000003c7 => "\xf7", 0x000003c8 => "\xf8", 0x000003c9 => "\xf9", 0x000003ca => "\xfa", 0x000003cb => "\xfb", 0x000003cc => "\xfc", 0x000003cd => "\xfd", 0x000003ce => "\xfe", 0x00002015 => "\xaf", 0x00002018 => "\xa1", 0x00002019 => "\xa2", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_7 - Conversion routines for ISO-8859-7 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-7. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-126 alias ISO_8859-7:1987 alias ISO_8859-7 alias ELOT_928 alias ECMA-118 alias GREEK alias GREEK8 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 00002018 | LEFT SINGLE QUOTATION MARK A2 | 00002019 | RIGHT SINGLE QUOTATION MARK A3 | 000000A3 | POUND SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AF | 00002015 | HORIZONTAL BAR B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 00000384 | GREEK TONOS B5 | 00000385 | GREEK DIALYTIKA TONOS B6 | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS B7 | 000000B7 | MIDDLE DOT B8 | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS B9 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS BA | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS BD | 000000BD | VULGAR FRACTION ONE HALF BE | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS BF | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS C0 | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS C1 | 00000391 | GREEK CAPITAL LETTER ALPHA C2 | 00000392 | GREEK CAPITAL LETTER BETA C3 | 00000393 | GREEK CAPITAL LETTER GAMMA C4 | 00000394 | GREEK CAPITAL LETTER DELTA C5 | 00000395 | GREEK CAPITAL LETTER EPSILON C6 | 00000396 | GREEK CAPITAL LETTER ZETA C7 | 00000397 | GREEK CAPITAL LETTER ETA C8 | 00000398 | GREEK CAPITAL LETTER THETA C9 | 00000399 | GREEK CAPITAL LETTER IOTA CA | 0000039A | GREEK CAPITAL LETTER KAPPA CB | 0000039B | GREEK CAPITAL LETTER LAMDA CC | 0000039C | GREEK CAPITAL LETTER MU CD | 0000039D | GREEK CAPITAL LETTER NU CE | 0000039E | GREEK CAPITAL LETTER XI CF | 0000039F | GREEK CAPITAL LETTER OMICRON D0 | 000003A0 | GREEK CAPITAL LETTER PI D1 | 000003A1 | GREEK CAPITAL LETTER RHO D3 | 000003A3 | GREEK CAPITAL LETTER SIGMA D4 | 000003A4 | GREEK CAPITAL LETTER TAU D5 | 000003A5 | GREEK CAPITAL LETTER UPSILON D6 | 000003A6 | GREEK CAPITAL LETTER PHI D7 | 000003A7 | GREEK CAPITAL LETTER CHI D8 | 000003A8 | GREEK CAPITAL LETTER PSI D9 | 000003A9 | GREEK CAPITAL LETTER OMEGA DA | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA DB | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA DC | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS DD | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS DE | 000003AE | GREEK SMALL LETTER ETA WITH TONOS DF | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS E0 | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS E1 | 000003B1 | GREEK SMALL LETTER ALPHA E2 | 000003B2 | GREEK SMALL LETTER BETA E3 | 000003B3 | GREEK SMALL LETTER GAMMA E4 | 000003B4 | GREEK SMALL LETTER DELTA E5 | 000003B5 | GREEK SMALL LETTER EPSILON E6 | 000003B6 | GREEK SMALL LETTER ZETA E7 | 000003B7 | GREEK SMALL LETTER ETA E8 | 000003B8 | GREEK SMALL LETTER THETA E9 | 000003B9 | GREEK SMALL LETTER IOTA EA | 000003BA | GREEK SMALL LETTER KAPPA EB | 000003BB | GREEK SMALL LETTER LAMDA EC | 000003BC | GREEK SMALL LETTER MU ED | 000003BD | GREEK SMALL LETTER NU EE | 000003BE | GREEK SMALL LETTER XI EF | 000003BF | GREEK SMALL LETTER OMICRON F0 | 000003C0 | GREEK SMALL LETTER PI F1 | 000003C1 | GREEK SMALL LETTER RHO F2 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA F3 | 000003C3 | GREEK SMALL LETTER SIGMA F4 | 000003C4 | GREEK SMALL LETTER TAU F5 | 000003C5 | GREEK SMALL LETTER UPSILON F6 | 000003C6 | GREEK SMALL LETTER PHI F7 | 000003C7 | GREEK SMALL LETTER CHI F8 | 000003C8 | GREEK SMALL LETTER PSI F9 | 000003C9 | GREEK SMALL LETTER OMEGA FA | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA FB | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA FC | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS FD | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS FE | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_8.pm000644 000765 000024 00000057163 12716422334 022205 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-8. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_8; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xef\xbf\xbd", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc3\x97", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc3\xb7", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x97", "\xd7\x90", "\xd7\x91", "\xd7\x92", "\xd7\x93", "\xd7\x94", "\xd7\x95", "\xd7\x96", "\xd7\x97", "\xd7\x98", "\xd7\x99", "\xd7\x9a", "\xd7\x9b", "\xd7\x9c", "\xd7\x9d", "\xd7\x9e", "\xd7\x9f", "\xd7\xa0", "\xd7\xa1", "\xd7\xa2", "\xd7\xa3", "\xd7\xa4", "\xd7\xa5", "\xd7\xa6", "\xd7\xa7", "\xd7\xa8", "\xd7\xa9", "\xd7\xaa", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x8e", "\xe2\x80\x8f", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000d7 => "\xaa", 0x000000f7 => "\xba", 0x000005d0 => "\xe0", 0x000005d1 => "\xe1", 0x000005d2 => "\xe2", 0x000005d3 => "\xe3", 0x000005d4 => "\xe4", 0x000005d5 => "\xe5", 0x000005d6 => "\xe6", 0x000005d7 => "\xe7", 0x000005d8 => "\xe8", 0x000005d9 => "\xe9", 0x000005da => "\xea", 0x000005db => "\xeb", 0x000005dc => "\xec", 0x000005dd => "\xed", 0x000005de => "\xee", 0x000005df => "\xef", 0x000005e0 => "\xf0", 0x000005e1 => "\xf1", 0x000005e2 => "\xf2", 0x000005e3 => "\xf3", 0x000005e4 => "\xf4", 0x000005e5 => "\xf5", 0x000005e6 => "\xf6", 0x000005e7 => "\xf7", 0x000005e8 => "\xf8", 0x000005e9 => "\xf9", 0x000005ea => "\xfa", 0x0000200e => "\xfd", 0x0000200f => "\xfe", 0x00002017 => "\xdf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_8 - Conversion routines for ISO-8859-8 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-8. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-138 alias ISO_8859-8:1988 alias ISO_8859-8 alias HEBREW Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000D7 | MULTIPLICATION SIGN AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000F7 | DIVISION SIGN BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS DF | 00002017 | DOUBLE LOW LINE E0 | 000005D0 | HEBREW LETTER ALEF E1 | 000005D1 | HEBREW LETTER BET E2 | 000005D2 | HEBREW LETTER GIMEL E3 | 000005D3 | HEBREW LETTER DALET E4 | 000005D4 | HEBREW LETTER HE E5 | 000005D5 | HEBREW LETTER VAV E6 | 000005D6 | HEBREW LETTER ZAYIN E7 | 000005D7 | HEBREW LETTER HET E8 | 000005D8 | HEBREW LETTER TET E9 | 000005D9 | HEBREW LETTER YOD EA | 000005DA | HEBREW LETTER FINAL KAF EB | 000005DB | HEBREW LETTER KAF EC | 000005DC | HEBREW LETTER LAMED ED | 000005DD | HEBREW LETTER FINAL MEM EE | 000005DE | HEBREW LETTER MEM EF | 000005DF | HEBREW LETTER FINAL NUN F0 | 000005E0 | HEBREW LETTER NUN F1 | 000005E1 | HEBREW LETTER SAMEKH F2 | 000005E2 | HEBREW LETTER AYIN F3 | 000005E3 | HEBREW LETTER FINAL PE F4 | 000005E4 | HEBREW LETTER PE F5 | 000005E5 | HEBREW LETTER FINAL TSADI F6 | 000005E6 | HEBREW LETTER TSADI F7 | 000005E7 | HEBREW LETTER QOF F8 | 000005E8 | HEBREW LETTER RESH F9 | 000005E9 | HEBREW LETTER SHIN FA | 000005EA | HEBREW LETTER TAV FD | 0000200E | LEFT-TO-RIGHT MARK FE | 0000200F | RIGHT-TO-LEFT MARK =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/ISO_8859_9.pm000644 000765 000024 00000065372 12716422334 022207 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for ISO-8859-9. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::ISO_8859_9; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\x80", "\xc2\x81", "\xc2\x82", "\xc2\x83", "\xc2\x84", "\xc2\x85", "\xc2\x86", "\xc2\x87", "\xc2\x88", "\xc2\x89", "\xc2\x8a", "\xc2\x8b", "\xc2\x8c", "\xc2\x8d", "\xc2\x8e", "\xc2\x8f", "\xc2\x90", "\xc2\x91", "\xc2\x92", "\xc2\x93", "\xc2\x94", "\xc2\x95", "\xc2\x96", "\xc2\x97", "\xc2\x98", "\xc2\x99", "\xc2\x9a", "\xc2\x9b", "\xc2\x9c", "\xc2\x9d", "\xc2\x9e", "\xc2\x9f", "\xc2\xa0", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xc2\xa4", "\xc2\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc2\xaa", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc2\xaf", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xc2\xb3", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc2\xb8", "\xc2\xb9", "\xc2\xba", "\xc2\xbb", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc2\xbf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc4\x9e", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc4\xb0", "\xc5\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc4\x9f", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc4\xb1", "\xc5\x9f", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000080 => "\x80", 0x00000081 => "\x81", 0x00000082 => "\x82", 0x00000083 => "\x83", 0x00000084 => "\x84", 0x00000085 => "\x85", 0x00000086 => "\x86", 0x00000087 => "\x87", 0x00000088 => "\x88", 0x00000089 => "\x89", 0x0000008a => "\x8a", 0x0000008b => "\x8b", 0x0000008c => "\x8c", 0x0000008d => "\x8d", 0x0000008e => "\x8e", 0x0000008f => "\x8f", 0x00000090 => "\x90", 0x00000091 => "\x91", 0x00000092 => "\x92", 0x00000093 => "\x93", 0x00000094 => "\x94", 0x00000095 => "\x95", 0x00000096 => "\x96", 0x00000097 => "\x97", 0x00000098 => "\x98", 0x00000099 => "\x99", 0x0000009a => "\x9a", 0x0000009b => "\x9b", 0x0000009c => "\x9c", 0x0000009d => "\x9d", 0x0000009e => "\x9e", 0x0000009f => "\x9f", 0x000000a0 => "\xa0", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a5 => "\xa5", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000aa => "\xaa", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000af => "\xaf", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b3 => "\xb3", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000b8 => "\xb8", 0x000000b9 => "\xb9", 0x000000ba => "\xba", 0x000000bb => "\xbb", 0x000000bc => "\xbc", 0x000000bd => "\xbd", 0x000000be => "\xbe", 0x000000bf => "\xbf", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000ff => "\xff", 0x0000011e => "\xd0", 0x0000011f => "\xf0", 0x00000130 => "\xdd", 0x00000131 => "\xfd", 0x0000015e => "\xde", 0x0000015f => "\xfe", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::ISO_8859_9 - Conversion routines for ISO-8859-9 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for ISO-8859-9. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-148 alias ISO_8859-9:1989 alias ISO_8859-9 alias LATIN5 alias L5 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000080 | PADDING CHARACTER (PAD) 81 | 00000081 | HIGH OCTET PRESET (HOP) 82 | 00000082 | BREAK PERMITTED HERE (BPH) 83 | 00000083 | NO BREAK HERE (NBH) 84 | 00000084 | INDEX (IND) 85 | 00000085 | NEXT LINE (NEL) 86 | 00000086 | START OF SELECTED AREA (SSA) 87 | 00000087 | END OF SELECTED AREA (ESA) 88 | 00000088 | CHARACTER TABULATION SET (HTS) 89 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ) 8A | 0000008A | LINE TABULATION SET (VTS) 8B | 0000008B | PARTIAL LINE FORWARD (PLD) 8C | 0000008C | PARTIAL LINE BACKWARD (PLU) 8D | 0000008D | REVERSE LINE FEED (RI) 8E | 0000008E | SINGLE-SHIFT TWO (SS2) 8F | 0000008F | SINGLE-SHIFT THREE (SS3) 90 | 00000090 | DEVICE CONTROL STRING (DCS) 91 | 00000091 | PRIVATE USE ONE (PU1) 92 | 00000092 | PRIVATE USE TWO (PU2) 93 | 00000093 | SET TRANSMIT STATE (STS) 94 | 00000094 | CANCEL CHARACTER (CCH) 95 | 00000095 | MESSAGE WAITING (MW) 96 | 00000096 | START OF GUARDED AREA (SPA) 97 | 00000097 | END OF GUARDED AREA (EPA) 98 | 00000098 | START OF STRING (SOS) 99 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) 9A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI) 9B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI) 9C | 0000009C | STRING TERMINATOR (ST) 9D | 0000009D | OPERATING SYSTEM COMMAND (OSC) 9E | 0000009E | PRIVACY MESSAGE (PM) 9F | 0000009F | APPLICATION PROGRAM COMMAND (APC) A0 | 000000A0 | NO-BREAK SPACE A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000000A5 | YEN SIGN A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 000000AA | FEMININE ORDINAL INDICATOR AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 000000AF | MACRON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 000000B3 | SUPERSCRIPT THREE B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 000000B8 | CEDILLA B9 | 000000B9 | SUPERSCRIPT ONE BA | 000000BA | MASCULINE ORDINAL INDICATOR BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 000000BC | VULGAR FRACTION ONE QUARTER BD | 000000BD | VULGAR FRACTION ONE HALF BE | 000000BE | VULGAR FRACTION THREE QUARTERS BF | 000000BF | INVERTED QUESTION MARK C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 0000011E | LATIN CAPITAL LETTER G WITH BREVE D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE DE | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 0000011F | LATIN SMALL LETTER G WITH BREVE F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 00000131 | LATIN SMALL LETTER DOTLESS I FE | 0000015F | LATIN SMALL LETTER S WITH CEDILLA FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/KOI8_R.pm000644 000765 000024 00000066045 12716422334 021621 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for KOI8-R. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::KOI8_R; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x94\x80", "\xe2\x94\x82", "\xe2\x94\x8c", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\x98", "\xe2\x94\x9c", "\xe2\x94\xa4", "\xe2\x94\xac", "\xe2\x94\xb4", "\xe2\x94\xbc", "\xe2\x96\x80", "\xe2\x96\x84", "\xe2\x96\x88", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x8c\xa0", "\xe2\x96\xa0", "\xe2\x88\x99", "\xe2\x88\x9a", "\xe2\x89\x88", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa0", "\xe2\x8c\xa1", "\xc2\xb0", "\xc2\xb2", "\xc2\xb7", "\xc3\xb7", "\xe2\x95\x90", "\xe2\x95\x91", "\xe2\x95\x92", "\xd1\x91", "\xe2\x95\x93", "\xe2\x95\x94", "\xe2\x95\x95", "\xe2\x95\x96", "\xe2\x95\x97", "\xe2\x95\x98", "\xe2\x95\x99", "\xe2\x95\x9a", "\xe2\x95\x9b", "\xe2\x95\x9c", "\xe2\x95\x9d", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\xa0", "\xe2\x95\xa1", "\xd0\x81", "\xe2\x95\xa2", "\xe2\x95\xa3", "\xe2\x95\xa4", "\xe2\x95\xa5", "\xe2\x95\xa6", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa9", "\xe2\x95\xaa", "\xe2\x95\xab", "\xe2\x95\xac", "\xc2\xa9", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xd0\xaa", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\x9a", 0x000000a9 => "\xbf", 0x000000b0 => "\x9c", 0x000000b2 => "\x9d", 0x000000b7 => "\x9e", 0x000000f7 => "\x9f", 0x00000401 => "\xb3", 0x00000410 => "\xe1", 0x00000411 => "\xe2", 0x00000412 => "\xf7", 0x00000413 => "\xe7", 0x00000414 => "\xe4", 0x00000415 => "\xe5", 0x00000416 => "\xf6", 0x00000417 => "\xfa", 0x00000418 => "\xe9", 0x00000419 => "\xea", 0x0000041a => "\xeb", 0x0000041b => "\xec", 0x0000041c => "\xed", 0x0000041d => "\xee", 0x0000041e => "\xef", 0x0000041f => "\xf0", 0x00000420 => "\xf2", 0x00000421 => "\xf3", 0x00000422 => "\xf4", 0x00000423 => "\xf5", 0x00000424 => "\xe6", 0x00000425 => "\xe8", 0x00000426 => "\xe3", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042a => "\xff", 0x0000042b => "\xf9", 0x0000042c => "\xf8", 0x0000042d => "\xfc", 0x0000042e => "\xe0", 0x0000042f => "\xf1", 0x00000430 => "\xc1", 0x00000431 => "\xc2", 0x00000432 => "\xd7", 0x00000433 => "\xc7", 0x00000434 => "\xc4", 0x00000435 => "\xc5", 0x00000436 => "\xd6", 0x00000437 => "\xda", 0x00000438 => "\xc9", 0x00000439 => "\xca", 0x0000043a => "\xcb", 0x0000043b => "\xcc", 0x0000043c => "\xcd", 0x0000043d => "\xce", 0x0000043e => "\xcf", 0x0000043f => "\xd0", 0x00000440 => "\xd2", 0x00000441 => "\xd3", 0x00000442 => "\xd4", 0x00000443 => "\xd5", 0x00000444 => "\xc6", 0x00000445 => "\xc8", 0x00000446 => "\xc3", 0x00000447 => "\xde", 0x00000448 => "\xdb", 0x00000449 => "\xdd", 0x0000044a => "\xdf", 0x0000044b => "\xd9", 0x0000044c => "\xd8", 0x0000044d => "\xdc", 0x0000044e => "\xc0", 0x0000044f => "\xd1", 0x00000451 => "\xa3", 0x00002219 => "\x95", 0x0000221a => "\x96", 0x00002248 => "\x97", 0x00002264 => "\x98", 0x00002265 => "\x99", 0x00002320 => "\x93", 0x00002321 => "\x9b", 0x00002500 => "\x80", 0x00002502 => "\x81", 0x0000250c => "\x82", 0x00002510 => "\x83", 0x00002514 => "\x84", 0x00002518 => "\x85", 0x0000251c => "\x86", 0x00002524 => "\x87", 0x0000252c => "\x88", 0x00002534 => "\x89", 0x0000253c => "\x8a", 0x00002550 => "\xa0", 0x00002551 => "\xa1", 0x00002552 => "\xa2", 0x00002553 => "\xa4", 0x00002554 => "\xa5", 0x00002555 => "\xa6", 0x00002556 => "\xa7", 0x00002557 => "\xa8", 0x00002558 => "\xa9", 0x00002559 => "\xaa", 0x0000255a => "\xab", 0x0000255b => "\xac", 0x0000255c => "\xad", 0x0000255d => "\xae", 0x0000255e => "\xaf", 0x0000255f => "\xb0", 0x00002560 => "\xb1", 0x00002561 => "\xb2", 0x00002562 => "\xb4", 0x00002563 => "\xb5", 0x00002564 => "\xb6", 0x00002565 => "\xb7", 0x00002566 => "\xb8", 0x00002567 => "\xb9", 0x00002568 => "\xba", 0x00002569 => "\xbb", 0x0000256a => "\xbc", 0x0000256b => "\xbd", 0x0000256c => "\xbe", 0x00002580 => "\x8b", 0x00002584 => "\x8c", 0x00002588 => "\x8d", 0x0000258c => "\x8e", 0x00002590 => "\x8f", 0x00002591 => "\x90", 0x00002592 => "\x91", 0x00002593 => "\x92", 0x000025a0 => "\x94", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::KOI8_R - Conversion routines for KOI8-R =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for KOI8-R. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: RFC1489 via Gabor Kiss Ekissg@sztaki.huE and Andrey A. Chernov Eache@astral.msk.suE Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL 81 | 00002502 | BOX DRAWINGS LIGHT VERTICAL 82 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT 83 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT 84 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT 85 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT 86 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT 87 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT 88 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 89 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL 8A | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 8B | 00002580 | UPPER HALF BLOCK 8C | 00002584 | LOWER HALF BLOCK 8D | 00002588 | FULL BLOCK 8E | 0000258C | LEFT HALF BLOCK 8F | 00002590 | RIGHT HALF BLOCK 90 | 00002591 | LIGHT SHADE 91 | 00002592 | MEDIUM SHADE 92 | 00002593 | DARK SHADE 93 | 00002320 | TOP HALF INTEGRAL 94 | 000025A0 | BLACK SQUARE 95 | 00002219 | BULLET OPERATOR 96 | 0000221A | SQUARE ROOT 97 | 00002248 | ALMOST EQUAL TO 98 | 00002264 | LESS-THAN OR EQUAL TO 99 | 00002265 | GREATER-THAN OR EQUAL TO 9A | 000000A0 | NO-BREAK SPACE 9B | 00002321 | BOTTOM HALF INTEGRAL 9C | 000000B0 | DEGREE SIGN 9D | 000000B2 | SUPERSCRIPT TWO 9E | 000000B7 | MIDDLE DOT 9F | 000000F7 | DIVISION SIGN A0 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL A1 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL A2 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE A3 | 00000451 | CYRILLIC SMALL LETTER IO A4 | 00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE A5 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT A6 | 00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE A7 | 00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE A8 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT A9 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE AA | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE AB | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT AC | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE AD | 0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE AE | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT AF | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE B0 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE B1 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT B2 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B3 | 00000401 | CYRILLIC CAPITAL LETTER IO B4 | 00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE B5 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT B6 | 00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE B7 | 00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE B8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL B9 | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE BA | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE BB | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL BC | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE BD | 0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE BE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL BF | 000000A9 | COPYRIGHT SIGN C0 | 0000044E | CYRILLIC SMALL LETTER YU C1 | 00000430 | CYRILLIC SMALL LETTER A C2 | 00000431 | CYRILLIC SMALL LETTER BE C3 | 00000446 | CYRILLIC SMALL LETTER TSE C4 | 00000434 | CYRILLIC SMALL LETTER DE C5 | 00000435 | CYRILLIC SMALL LETTER IE C6 | 00000444 | CYRILLIC SMALL LETTER EF C7 | 00000433 | CYRILLIC SMALL LETTER GHE C8 | 00000445 | CYRILLIC SMALL LETTER HA C9 | 00000438 | CYRILLIC SMALL LETTER I CA | 00000439 | CYRILLIC SMALL LETTER SHORT I CB | 0000043A | CYRILLIC SMALL LETTER KA CC | 0000043B | CYRILLIC SMALL LETTER EL CD | 0000043C | CYRILLIC SMALL LETTER EM CE | 0000043D | CYRILLIC SMALL LETTER EN CF | 0000043E | CYRILLIC SMALL LETTER O D0 | 0000043F | CYRILLIC SMALL LETTER PE D1 | 0000044F | CYRILLIC SMALL LETTER YA D2 | 00000440 | CYRILLIC SMALL LETTER ER D3 | 00000441 | CYRILLIC SMALL LETTER ES D4 | 00000442 | CYRILLIC SMALL LETTER TE D5 | 00000443 | CYRILLIC SMALL LETTER U D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000432 | CYRILLIC SMALL LETTER VE D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN D9 | 0000044B | CYRILLIC SMALL LETTER YERU DA | 00000437 | CYRILLIC SMALL LETTER ZE DB | 00000448 | CYRILLIC SMALL LETTER SHA DC | 0000044D | CYRILLIC SMALL LETTER E DD | 00000449 | CYRILLIC SMALL LETTER SHCHA DE | 00000447 | CYRILLIC SMALL LETTER CHE DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN E0 | 0000042E | CYRILLIC CAPITAL LETTER YU E1 | 00000410 | CYRILLIC CAPITAL LETTER A E2 | 00000411 | CYRILLIC CAPITAL LETTER BE E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE E4 | 00000414 | CYRILLIC CAPITAL LETTER DE E5 | 00000415 | CYRILLIC CAPITAL LETTER IE E6 | 00000424 | CYRILLIC CAPITAL LETTER EF E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE E8 | 00000425 | CYRILLIC CAPITAL LETTER HA E9 | 00000418 | CYRILLIC CAPITAL LETTER I EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I EB | 0000041A | CYRILLIC CAPITAL LETTER KA EC | 0000041B | CYRILLIC CAPITAL LETTER EL ED | 0000041C | CYRILLIC CAPITAL LETTER EM EE | 0000041D | CYRILLIC CAPITAL LETTER EN EF | 0000041E | CYRILLIC CAPITAL LETTER O F0 | 0000041F | CYRILLIC CAPITAL LETTER PE F1 | 0000042F | CYRILLIC CAPITAL LETTER YA F2 | 00000420 | CYRILLIC CAPITAL LETTER ER F3 | 00000421 | CYRILLIC CAPITAL LETTER ES F4 | 00000422 | CYRILLIC CAPITAL LETTER TE F5 | 00000423 | CYRILLIC CAPITAL LETTER U F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE F7 | 00000412 | CYRILLIC CAPITAL LETTER VE F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/KOI8_RU.pm000644 000765 000024 00000065617 12716422334 021752 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for KOI8-RU. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::KOI8_RU; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x045e, 0x255e, 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x040e, 0x00a9, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x94\x80", "\xe2\x94\x82", "\xe2\x94\x8c", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\x98", "\xe2\x94\x9c", "\xe2\x94\xa4", "\xe2\x94\xac", "\xe2\x94\xb4", "\xe2\x94\xbc", "\xe2\x96\x80", "\xe2\x96\x84", "\xe2\x96\x88", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x8c\xa0", "\xe2\x96\xa0", "\xe2\x88\x99", "\xe2\x88\x9a", "\xe2\x89\x88", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa0", "\xe2\x8c\xa1", "\xc2\xb0", "\xc2\xb2", "\xc2\xb7", "\xc3\xb7", "\xe2\x95\x90", "\xe2\x95\x91", "\xe2\x95\x92", "\xd1\x91", "\xd1\x94", "\xe2\x95\x94", "\xd1\x96", "\xd1\x97", "\xe2\x95\x97", "\xe2\x95\x98", "\xe2\x95\x99", "\xe2\x95\x9a", "\xe2\x95\x9b", "\xd2\x91", "\xd1\x9e", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\xa0", "\xe2\x95\xa1", "\xd0\x81", "\xd0\x84", "\xe2\x95\xa3", "\xd0\x86", "\xd0\x87", "\xe2\x95\xa6", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa9", "\xe2\x95\xaa", "\xd2\x90", "\xd0\x8e", "\xc2\xa9", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xd0\xaa", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\x9a", 0x000000a9 => "\xbf", 0x000000b0 => "\x9c", 0x000000b2 => "\x9d", 0x000000b7 => "\x9e", 0x000000f7 => "\x9f", 0x00000401 => "\xb3", 0x00000404 => "\xb4", 0x00000406 => "\xb6", 0x00000407 => "\xb7", 0x0000040e => "\xbe", 0x00000410 => "\xe1", 0x00000411 => "\xe2", 0x00000412 => "\xf7", 0x00000413 => "\xe7", 0x00000414 => "\xe4", 0x00000415 => "\xe5", 0x00000416 => "\xf6", 0x00000417 => "\xfa", 0x00000418 => "\xe9", 0x00000419 => "\xea", 0x0000041a => "\xeb", 0x0000041b => "\xec", 0x0000041c => "\xed", 0x0000041d => "\xee", 0x0000041e => "\xef", 0x0000041f => "\xf0", 0x00000420 => "\xf2", 0x00000421 => "\xf3", 0x00000422 => "\xf4", 0x00000423 => "\xf5", 0x00000424 => "\xe6", 0x00000425 => "\xe8", 0x00000426 => "\xe3", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042a => "\xff", 0x0000042b => "\xf9", 0x0000042c => "\xf8", 0x0000042d => "\xfc", 0x0000042e => "\xe0", 0x0000042f => "\xf1", 0x00000430 => "\xc1", 0x00000431 => "\xc2", 0x00000432 => "\xd7", 0x00000433 => "\xc7", 0x00000434 => "\xc4", 0x00000435 => "\xc5", 0x00000436 => "\xd6", 0x00000437 => "\xda", 0x00000438 => "\xc9", 0x00000439 => "\xca", 0x0000043a => "\xcb", 0x0000043b => "\xcc", 0x0000043c => "\xcd", 0x0000043d => "\xce", 0x0000043e => "\xcf", 0x0000043f => "\xd0", 0x00000440 => "\xd2", 0x00000441 => "\xd3", 0x00000442 => "\xd4", 0x00000443 => "\xd5", 0x00000444 => "\xc6", 0x00000445 => "\xc8", 0x00000446 => "\xc3", 0x00000447 => "\xde", 0x00000448 => "\xdb", 0x00000449 => "\xdd", 0x0000044a => "\xdf", 0x0000044b => "\xd9", 0x0000044c => "\xd8", 0x0000044d => "\xdc", 0x0000044e => "\xc0", 0x0000044f => "\xd1", 0x00000451 => "\xa3", 0x00000454 => "\xa4", 0x00000456 => "\xa6", 0x00000457 => "\xa7", 0x0000045e => "\xae", 0x00000490 => "\xbd", 0x00000491 => "\xad", 0x00002219 => "\x95", 0x0000221a => "\x96", 0x00002248 => "\x97", 0x00002264 => "\x98", 0x00002265 => "\x99", 0x00002320 => "\x93", 0x00002321 => "\x9b", 0x00002500 => "\x80", 0x00002502 => "\x81", 0x0000250c => "\x82", 0x00002510 => "\x83", 0x00002514 => "\x84", 0x00002518 => "\x85", 0x0000251c => "\x86", 0x00002524 => "\x87", 0x0000252c => "\x88", 0x00002534 => "\x89", 0x0000253c => "\x8a", 0x00002550 => "\xa0", 0x00002551 => "\xa1", 0x00002552 => "\xa2", 0x00002554 => "\xa5", 0x00002557 => "\xa8", 0x00002558 => "\xa9", 0x00002559 => "\xaa", 0x0000255a => "\xab", 0x0000255b => "\xac", 0x0000255e => "\xaf", 0x0000255f => "\xb0", 0x00002560 => "\xb1", 0x00002561 => "\xb2", 0x00002563 => "\xb5", 0x00002566 => "\xb8", 0x00002567 => "\xb9", 0x00002568 => "\xba", 0x00002569 => "\xbb", 0x0000256a => "\xbc", 0x00002580 => "\x8b", 0x00002584 => "\x8c", 0x00002588 => "\x8d", 0x0000258c => "\x8e", 0x00002590 => "\x8f", 0x00002591 => "\x90", 0x00002592 => "\x91", 0x00002593 => "\x92", 0x000025a0 => "\x94", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::KOI8_RU - Conversion routines for KOI8-RU =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for KOI8-RU. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL 81 | 00002502 | BOX DRAWINGS LIGHT VERTICAL 82 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT 83 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT 84 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT 85 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT 86 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT 87 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT 88 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 89 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL 8A | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 8B | 00002580 | UPPER HALF BLOCK 8C | 00002584 | LOWER HALF BLOCK 8D | 00002588 | FULL BLOCK 8E | 0000258C | LEFT HALF BLOCK 8F | 00002590 | RIGHT HALF BLOCK 90 | 00002591 | LIGHT SHADE 91 | 00002592 | MEDIUM SHADE 92 | 00002593 | DARK SHADE 93 | 00002320 | TOP HALF INTEGRAL 94 | 000025A0 | BLACK SQUARE 95 | 00002219 | BULLET OPERATOR 96 | 0000221A | SQUARE ROOT 97 | 00002248 | ALMOST EQUAL TO 98 | 00002264 | LESS-THAN OR EQUAL TO 99 | 00002265 | GREATER-THAN OR EQUAL TO 9A | 000000A0 | NO-BREAK SPACE 9B | 00002321 | BOTTOM HALF INTEGRAL 9C | 000000B0 | DEGREE SIGN 9D | 000000B2 | SUPERSCRIPT TWO 9E | 000000B7 | MIDDLE DOT 9F | 000000F7 | DIVISION SIGN A0 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL A1 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL A2 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE A3 | 00000451 | CYRILLIC SMALL LETTER IO A4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE A5 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT A6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I A7 | 00000457 | CYRILLIC SMALL LETTER YI A8 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT A9 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE AA | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE AB | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT AC | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE AD | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN AE | 0000045E | CYRILLIC SMALL LETTER SHORT U AF | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE B0 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE B1 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT B2 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B3 | 00000401 | CYRILLIC CAPITAL LETTER IO B4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B5 | 00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT B6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I B7 | 00000407 | CYRILLIC CAPITAL LETTER YI B8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL B9 | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE BA | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE BB | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL BC | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE BD | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN BE | 0000040E | CYRILLIC CAPITAL LETTER SHORT U BF | 000000A9 | COPYRIGHT SIGN C0 | 0000044E | CYRILLIC SMALL LETTER YU C1 | 00000430 | CYRILLIC SMALL LETTER A C2 | 00000431 | CYRILLIC SMALL LETTER BE C3 | 00000446 | CYRILLIC SMALL LETTER TSE C4 | 00000434 | CYRILLIC SMALL LETTER DE C5 | 00000435 | CYRILLIC SMALL LETTER IE C6 | 00000444 | CYRILLIC SMALL LETTER EF C7 | 00000433 | CYRILLIC SMALL LETTER GHE C8 | 00000445 | CYRILLIC SMALL LETTER HA C9 | 00000438 | CYRILLIC SMALL LETTER I CA | 00000439 | CYRILLIC SMALL LETTER SHORT I CB | 0000043A | CYRILLIC SMALL LETTER KA CC | 0000043B | CYRILLIC SMALL LETTER EL CD | 0000043C | CYRILLIC SMALL LETTER EM CE | 0000043D | CYRILLIC SMALL LETTER EN CF | 0000043E | CYRILLIC SMALL LETTER O D0 | 0000043F | CYRILLIC SMALL LETTER PE D1 | 0000044F | CYRILLIC SMALL LETTER YA D2 | 00000440 | CYRILLIC SMALL LETTER ER D3 | 00000441 | CYRILLIC SMALL LETTER ES D4 | 00000442 | CYRILLIC SMALL LETTER TE D5 | 00000443 | CYRILLIC SMALL LETTER U D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000432 | CYRILLIC SMALL LETTER VE D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN D9 | 0000044B | CYRILLIC SMALL LETTER YERU DA | 00000437 | CYRILLIC SMALL LETTER ZE DB | 00000448 | CYRILLIC SMALL LETTER SHA DC | 0000044D | CYRILLIC SMALL LETTER E DD | 00000449 | CYRILLIC SMALL LETTER SHCHA DE | 00000447 | CYRILLIC SMALL LETTER CHE DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN E0 | 0000042E | CYRILLIC CAPITAL LETTER YU E1 | 00000410 | CYRILLIC CAPITAL LETTER A E2 | 00000411 | CYRILLIC CAPITAL LETTER BE E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE E4 | 00000414 | CYRILLIC CAPITAL LETTER DE E5 | 00000415 | CYRILLIC CAPITAL LETTER IE E6 | 00000424 | CYRILLIC CAPITAL LETTER EF E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE E8 | 00000425 | CYRILLIC CAPITAL LETTER HA E9 | 00000418 | CYRILLIC CAPITAL LETTER I EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I EB | 0000041A | CYRILLIC CAPITAL LETTER KA EC | 0000041B | CYRILLIC CAPITAL LETTER EL ED | 0000041C | CYRILLIC CAPITAL LETTER EM EE | 0000041D | CYRILLIC CAPITAL LETTER EN EF | 0000041E | CYRILLIC CAPITAL LETTER O F0 | 0000041F | CYRILLIC CAPITAL LETTER PE F1 | 0000042F | CYRILLIC CAPITAL LETTER YA F2 | 00000420 | CYRILLIC CAPITAL LETTER ER F3 | 00000421 | CYRILLIC CAPITAL LETTER ES F4 | 00000422 | CYRILLIC CAPITAL LETTER TE F5 | 00000423 | CYRILLIC CAPITAL LETTER U F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE F7 | 00000412 | CYRILLIC CAPITAL LETTER VE F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/KOI8_T.pm000644 000765 000024 00000062111 12716422334 021611 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for KOI8-T. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::KOI8_T; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x049b, 0x0493, 0x201a, 0x0492, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0x04b3, 0x2039, 0x04b2, 0x04b7, 0x04b6, 0xfffd, 0x049a, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x04ef, 0x04ee, 0x0451, 0x00a4, 0x04e3, 0x00a6, 0x00a7, 0xfffd, 0xfffd, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0xfffd, 0x00b0, 0x00b1, 0x00b2, 0x0401, 0xfffd, 0x04e2, 0x00b6, 0x00b7, 0xfffd, 0x2116, 0xfffd, 0x00bb, 0xfffd, 0xfffd, 0xfffd, 0x00a9, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd2\x9b", "\xd2\x93", "\xe2\x80\x9a", "\xd2\x92", "\xe2\x80\x9e", "\xe2\x80\xa6", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xef\xbf\xbd", "\xe2\x80\xb0", "\xd2\xb3", "\xe2\x80\xb9", "\xd2\xb2", "\xd2\xb7", "\xd2\xb6", "\xef\xbf\xbd", "\xd2\x9a", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xef\xbf\xbd", "\xe2\x84\xa2", "\xef\xbf\xbd", "\xe2\x80\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd3\xaf", "\xd3\xae", "\xd1\x91", "\xc2\xa4", "\xd3\xa3", "\xc2\xa6", "\xc2\xa7", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xef\xbf\xbd", "\xc2\xb0", "\xc2\xb1", "\xc2\xb2", "\xd0\x81", "\xef\xbf\xbd", "\xd3\xa2", "\xc2\xb6", "\xc2\xb7", "\xef\xbf\xbd", "\xe2\x84\x96", "\xef\xbf\xbd", "\xc2\xbb", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xa9", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xd0\xaa", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a4 => "\xa4", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a9 => "\xbf", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b2 => "\xb2", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000bb => "\xbb", 0x00000401 => "\xb3", 0x00000410 => "\xe1", 0x00000411 => "\xe2", 0x00000412 => "\xf7", 0x00000413 => "\xe7", 0x00000414 => "\xe4", 0x00000415 => "\xe5", 0x00000416 => "\xf6", 0x00000417 => "\xfa", 0x00000418 => "\xe9", 0x00000419 => "\xea", 0x0000041a => "\xeb", 0x0000041b => "\xec", 0x0000041c => "\xed", 0x0000041d => "\xee", 0x0000041e => "\xef", 0x0000041f => "\xf0", 0x00000420 => "\xf2", 0x00000421 => "\xf3", 0x00000422 => "\xf4", 0x00000423 => "\xf5", 0x00000424 => "\xe6", 0x00000425 => "\xe8", 0x00000426 => "\xe3", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042a => "\xff", 0x0000042b => "\xf9", 0x0000042c => "\xf8", 0x0000042d => "\xfc", 0x0000042e => "\xe0", 0x0000042f => "\xf1", 0x00000430 => "\xc1", 0x00000431 => "\xc2", 0x00000432 => "\xd7", 0x00000433 => "\xc7", 0x00000434 => "\xc4", 0x00000435 => "\xc5", 0x00000436 => "\xd6", 0x00000437 => "\xda", 0x00000438 => "\xc9", 0x00000439 => "\xca", 0x0000043a => "\xcb", 0x0000043b => "\xcc", 0x0000043c => "\xcd", 0x0000043d => "\xce", 0x0000043e => "\xcf", 0x0000043f => "\xd0", 0x00000440 => "\xd2", 0x00000441 => "\xd3", 0x00000442 => "\xd4", 0x00000443 => "\xd5", 0x00000444 => "\xc6", 0x00000445 => "\xc8", 0x00000446 => "\xc3", 0x00000447 => "\xde", 0x00000448 => "\xdb", 0x00000449 => "\xdd", 0x0000044a => "\xdf", 0x0000044b => "\xd9", 0x0000044c => "\xd8", 0x0000044d => "\xdc", 0x0000044e => "\xc0", 0x0000044f => "\xd1", 0x00000451 => "\xa3", 0x00000492 => "\x83", 0x00000493 => "\x81", 0x0000049a => "\x90", 0x0000049b => "\x80", 0x000004b2 => "\x8c", 0x000004b3 => "\x8a", 0x000004b6 => "\x8e", 0x000004b7 => "\x8d", 0x000004e2 => "\xb5", 0x000004e3 => "\xa5", 0x000004ee => "\xa2", 0x000004ef => "\xa1", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201a => "\x82", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x0000201e => "\x84", 0x00002020 => "\x86", 0x00002021 => "\x87", 0x00002022 => "\x95", 0x00002026 => "\x85", 0x00002030 => "\x89", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x00002116 => "\xb9", 0x00002122 => "\x99", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::KOI8_T - Conversion routines for KOI8-T =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for KOI8-T. =head1 COMMENTS The following comments have been extracted from the original charmap: Author: Michael Davis Etajik_fonts@iname.comE URL: http://www.traveltajikistan.com/fonts Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 0000049B | CYRILLIC SMALL LETTER KA WITH DESCENDER 81 | 00000493 | CYRILLIC SMALL LETTER GHE WITH STROKE 82 | 0000201A | SINGLE LOW-9 QUOTATION MARK 83 | 00000492 | CYRILLIC CAPITAL LETTER GHE WITH STROKE 84 | 0000201E | DOUBLE LOW-9 QUOTATION MARK 85 | 00002026 | HORIZONTAL ELLIPSIS 86 | 00002020 | DAGGER 87 | 00002021 | DOUBLE DAGGER 89 | 00002030 | PER MILLE SIGN 8A | 000004B3 | CYRILLIC SMALL LETTER HA WITH DESCENDER 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 000004B2 | CYRILLIC CAPITAL LETTER HA WITH DESCENDER 8D | 000004B7 | CYRILLIC SMALL LETTER CHE WITH DESCENDER 8E | 000004B6 | CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 90 | 0000049A | CYRILLIC CAPITAL LETTER KA WITH DESCENDER 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 99 | 00002122 | TRADE MARK SIGN 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK A1 | 000004EF | CYRILLIC SMALL LETTER U WITH MACRON A2 | 000004EE | CYRILLIC CAPITAL LETTER U WITH MACRON A3 | 00000451 | CYRILLIC SMALL LETTER IO A4 | 000000A4 | CURRENCY SIGN A5 | 000004E3 | CYRILLIC SMALL LETTER I WITH MACRON A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000000B2 | SUPERSCRIPT TWO B3 | 00000401 | CYRILLIC CAPITAL LETTER IE B5 | 000004E2 | CYRILLIC CAPITAL LETTER I WITH MACRON B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B9 | 00002116 | NUMERO SIGN BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BF | 000000A9 | COPYRIGHT SIGN C0 | 0000044E | CYRILLIC SMALL LETTER YU C1 | 00000430 | CYRILLIC SMALL LETTER A C2 | 00000431 | CYRILLIC SMALL LETTER BE C3 | 00000446 | CYRILLIC SMALL LETTER TSE C4 | 00000434 | CYRILLIC SMALL LETTER DE C5 | 00000435 | CYRILLIC SMALL LETTER IE C6 | 00000444 | CYRILLIC SMALL LETTER EF C7 | 00000433 | CYRILLIC SMALL LETTER GHE C8 | 00000445 | CYRILLIC SMALL LETTER HA C9 | 00000438 | CYRILLIC SMALL LETTER I CA | 00000439 | CYRILLIC SMALL LETTER SHORT I CB | 0000043A | CYRILLIC SMALL LETTER KA CC | 0000043B | CYRILLIC SMALL LETTER EL CD | 0000043C | CYRILLIC SMALL LETTER EM CE | 0000043D | CYRILLIC SMALL LETTER EN CF | 0000043E | CYRILLIC SMALL LETTER O D0 | 0000043F | CYRILLIC SMALL LETTER PE D1 | 0000044F | CYRILLIC SMALL LETTER YA D2 | 00000440 | CYRILLIC SMALL LETTER ER D3 | 00000441 | CYRILLIC SMALL LETTER ES D4 | 00000442 | CYRILLIC SMALL LETTER TE D5 | 00000443 | CYRILLIC SMALL LETTER U D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000432 | CYRILLIC SMALL LETTER VE D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN D9 | 0000044B | CYRILLIC SMALL LETTER YERU DA | 00000437 | CYRILLIC SMALL LETTER ZE DB | 00000448 | CYRILLIC SMALL LETTER SHA DC | 0000044D | CYRILLIC SMALL LETTER E DD | 00000449 | CYRILLIC SMALL LETTER SHCHA DE | 00000447 | CYRILLIC SMALL LETTER CHE DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN E0 | 0000042E | CYRILLIC CAPITAL LETTER YU E1 | 00000410 | CYRILLIC CAPITAL LETTER A E2 | 00000411 | CYRILLIC CAPITAL LETTER BE E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE E4 | 00000414 | CYRILLIC CAPITAL LETTER DE E5 | 00000415 | CYRILLIC CAPITAL LETTER IE E6 | 00000424 | CYRILLIC CAPITAL LETTER EF E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE E8 | 00000425 | CYRILLIC CAPITAL LETTER HA E9 | 00000418 | CYRILLIC CAPITAL LETTER I EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I EB | 0000041A | CYRILLIC CAPITAL LETTER KA EC | 0000041B | CYRILLIC CAPITAL LETTER EL ED | 0000041C | CYRILLIC CAPITAL LETTER EM EE | 0000041D | CYRILLIC CAPITAL LETTER EN EF | 0000041E | CYRILLIC CAPITAL LETTER O F0 | 0000041F | CYRILLIC CAPITAL LETTER PE F1 | 0000042F | CYRILLIC CAPITAL LETTER YA F2 | 00000420 | CYRILLIC CAPITAL LETTER ER F3 | 00000421 | CYRILLIC CAPITAL LETTER ES F4 | 00000422 | CYRILLIC CAPITAL LETTER TE F5 | 00000423 | CYRILLIC CAPITAL LETTER U F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE F7 | 00000412 | CYRILLIC CAPITAL LETTER VE F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/KOI8_U.pm000644 000765 000024 00000065650 12716422334 021625 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for KOI8-U. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::KOI8_U; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x94\x80", "\xe2\x94\x82", "\xe2\x94\x8c", "\xe2\x94\x90", "\xe2\x94\x94", "\xe2\x94\x98", "\xe2\x94\x9c", "\xe2\x94\xa4", "\xe2\x94\xac", "\xe2\x94\xb4", "\xe2\x94\xbc", "\xe2\x96\x80", "\xe2\x96\x84", "\xe2\x96\x88", "\xe2\x96\x8c", "\xe2\x96\x90", "\xe2\x96\x91", "\xe2\x96\x92", "\xe2\x96\x93", "\xe2\x8c\xa0", "\xe2\x96\xa0", "\xe2\x88\x99", "\xe2\x88\x9a", "\xe2\x89\x88", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa0", "\xe2\x8c\xa1", "\xc2\xb0", "\xc2\xb2", "\xc2\xb7", "\xc3\xb7", "\xe2\x95\x90", "\xe2\x95\x91", "\xe2\x95\x92", "\xd1\x91", "\xd1\x94", "\xe2\x95\x94", "\xd1\x96", "\xd1\x97", "\xe2\x95\x97", "\xe2\x95\x98", "\xe2\x95\x99", "\xe2\x95\x9a", "\xe2\x95\x9b", "\xd2\x91", "\xe2\x95\x9d", "\xe2\x95\x9e", "\xe2\x95\x9f", "\xe2\x95\xa0", "\xe2\x95\xa1", "\xd0\x81", "\xd0\x84", "\xe2\x95\xa3", "\xd0\x86", "\xd0\x87", "\xe2\x95\xa6", "\xe2\x95\xa7", "\xe2\x95\xa8", "\xe2\x95\xa9", "\xe2\x95\xaa", "\xd2\x90", "\xe2\x95\xac", "\xc2\xa9", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xd0\xaa", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\x9a", 0x000000a9 => "\xbf", 0x000000b0 => "\x9c", 0x000000b2 => "\x9d", 0x000000b7 => "\x9e", 0x000000f7 => "\x9f", 0x00000401 => "\xb3", 0x00000404 => "\xb4", 0x00000406 => "\xb6", 0x00000407 => "\xb7", 0x00000410 => "\xe1", 0x00000411 => "\xe2", 0x00000412 => "\xf7", 0x00000413 => "\xe7", 0x00000414 => "\xe4", 0x00000415 => "\xe5", 0x00000416 => "\xf6", 0x00000417 => "\xfa", 0x00000418 => "\xe9", 0x00000419 => "\xea", 0x0000041a => "\xeb", 0x0000041b => "\xec", 0x0000041c => "\xed", 0x0000041d => "\xee", 0x0000041e => "\xef", 0x0000041f => "\xf0", 0x00000420 => "\xf2", 0x00000421 => "\xf3", 0x00000422 => "\xf4", 0x00000423 => "\xf5", 0x00000424 => "\xe6", 0x00000425 => "\xe8", 0x00000426 => "\xe3", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042a => "\xff", 0x0000042b => "\xf9", 0x0000042c => "\xf8", 0x0000042d => "\xfc", 0x0000042e => "\xe0", 0x0000042f => "\xf1", 0x00000430 => "\xc1", 0x00000431 => "\xc2", 0x00000432 => "\xd7", 0x00000433 => "\xc7", 0x00000434 => "\xc4", 0x00000435 => "\xc5", 0x00000436 => "\xd6", 0x00000437 => "\xda", 0x00000438 => "\xc9", 0x00000439 => "\xca", 0x0000043a => "\xcb", 0x0000043b => "\xcc", 0x0000043c => "\xcd", 0x0000043d => "\xce", 0x0000043e => "\xcf", 0x0000043f => "\xd0", 0x00000440 => "\xd2", 0x00000441 => "\xd3", 0x00000442 => "\xd4", 0x00000443 => "\xd5", 0x00000444 => "\xc6", 0x00000445 => "\xc8", 0x00000446 => "\xc3", 0x00000447 => "\xde", 0x00000448 => "\xdb", 0x00000449 => "\xdd", 0x0000044a => "\xdf", 0x0000044b => "\xd9", 0x0000044c => "\xd8", 0x0000044d => "\xdc", 0x0000044e => "\xc0", 0x0000044f => "\xd1", 0x00000451 => "\xa3", 0x00000454 => "\xa4", 0x00000456 => "\xa6", 0x00000457 => "\xa7", 0x00000490 => "\xbd", 0x00000491 => "\xad", 0x00002219 => "\x95", 0x0000221a => "\x96", 0x00002248 => "\x97", 0x00002264 => "\x98", 0x00002265 => "\x99", 0x00002320 => "\x93", 0x00002321 => "\x9b", 0x00002500 => "\x80", 0x00002502 => "\x81", 0x0000250c => "\x82", 0x00002510 => "\x83", 0x00002514 => "\x84", 0x00002518 => "\x85", 0x0000251c => "\x86", 0x00002524 => "\x87", 0x0000252c => "\x88", 0x00002534 => "\x89", 0x0000253c => "\x8a", 0x00002550 => "\xa0", 0x00002551 => "\xa1", 0x00002552 => "\xa2", 0x00002554 => "\xa5", 0x00002557 => "\xa8", 0x00002558 => "\xa9", 0x00002559 => "\xaa", 0x0000255a => "\xab", 0x0000255b => "\xac", 0x0000255d => "\xae", 0x0000255e => "\xaf", 0x0000255f => "\xb0", 0x00002560 => "\xb1", 0x00002561 => "\xb2", 0x00002563 => "\xb5", 0x00002566 => "\xb8", 0x00002567 => "\xb9", 0x00002568 => "\xba", 0x00002569 => "\xbb", 0x0000256a => "\xbc", 0x0000256c => "\xbe", 0x00002580 => "\x8b", 0x00002584 => "\x8c", 0x00002588 => "\x8d", 0x0000258c => "\x8e", 0x00002590 => "\x8f", 0x00002591 => "\x90", 0x00002592 => "\x91", 0x00002593 => "\x92", 0x000025a0 => "\x94", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::KOI8_U - Conversion routines for KOI8-U =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for KOI8-U. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.1 source: RFC 2319 source: http://www.net.ua/KOI8-U/ Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00002500 | BOX DRAWINGS LIGHT HORIZONTAL 81 | 00002502 | BOX DRAWINGS LIGHT VERTICAL 82 | 0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT 83 | 00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT 84 | 00002514 | BOX DRAWINGS LIGHT UP AND RIGHT 85 | 00002518 | BOX DRAWINGS LIGHT UP AND LEFT 86 | 0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT 87 | 00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT 88 | 0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 89 | 00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL 8A | 0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 8B | 00002580 | UPPER HALF BLOCK 8C | 00002584 | LOWER HALF BLOCK 8D | 00002588 | FULL BLOCK 8E | 0000258C | LEFT HALF BLOCK 8F | 00002590 | RIGHT HALF BLOCK 90 | 00002591 | LIGHT SHADE 91 | 00002592 | MEDIUM SHADE 92 | 00002593 | DARK SHADE 93 | 00002320 | TOP HALF INTEGRAL 94 | 000025A0 | BLACK SQUARE 95 | 00002219 | BULLET OPERATOR 96 | 0000221A | SQUARE ROOT 97 | 00002248 | ALMOST EQUAL TO 98 | 00002264 | LESS THAN OR EQUAL TO 99 | 00002265 | GREATER THAN OR EQUAL TO 9A | 000000A0 | NO-BREAK SPACE 9B | 00002321 | BOTTOM HALF INTEGRAL 9C | 000000B0 | DEGREE SIGN 9D | 000000B2 | SUPERSCRIPT DIGIT TWO 9E | 000000B7 | MIDDLE DOT 9F | 000000F7 | DIVISION SIGN A0 | 00002550 | BOX DRAWINGS DOUBLE HORIZONTAL A1 | 00002551 | BOX DRAWINGS DOUBLE VERTICAL A2 | 00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE A3 | 00000451 | CYRILLIC SMALL LETTER IO A4 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE A5 | 00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT A6 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I A7 | 00000457 | CYRILLIC SMALL LETTER YI (Ukrainian) A8 | 00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT A9 | 00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE AA | 00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE AB | 0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT AC | 0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE AD | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN AE | 0000255D | BOX DRAWINGS DOUBLE UP AND LEFT AF | 0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE B0 | 0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE B1 | 00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT B2 | 00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE B3 | 00000401 | CYRILLIC CAPITAL LETTER IO B4 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B5 | 00002563 | DOUBLE VERTICAL AND LEFT B6 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I B7 | 00000407 | CYRILLIC CAPITAL LETTER YI (Ukrainian) B8 | 00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL B9 | 00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE BA | 00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE BB | 00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL BC | 0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE BD | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN BE | 0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL BF | 000000A9 | COPYRIGHT SIGN C0 | 0000044E | CYRILLIC SMALL LETTER YU C1 | 00000430 | CYRILLIC SMALL LETTER A C2 | 00000431 | CYRILLIC SMALL LETTER BE C3 | 00000446 | CYRILLIC SMALL LETTER TSE C4 | 00000434 | CYRILLIC SMALL LETTER DE C5 | 00000435 | CYRILLIC SMALL LETTER IE C6 | 00000444 | CYRILLIC SMALL LETTER EF C7 | 00000433 | CYRILLIC SMALL LETTER GHE C8 | 00000445 | CYRILLIC SMALL LETTER HA C9 | 00000438 | CYRILLIC SMALL LETTER I CA | 00000439 | CYRILLIC SMALL LETTER SHORT I CB | 0000043A | CYRILLIC SMALL LETTER KA CC | 0000043B | CYRILLIC SMALL LETTER EL CD | 0000043C | CYRILLIC SMALL LETTER EM CE | 0000043D | CYRILLIC SMALL LETTER EN CF | 0000043E | CYRILLIC SMALL LETTER O D0 | 0000043F | CYRILLIC SMALL LETTER PE D1 | 0000044F | CYRILLIC SMALL LETTER YA D2 | 00000440 | CYRILLIC SMALL LETTER ER D3 | 00000441 | CYRILLIC SMALL LETTER ES D4 | 00000442 | CYRILLIC SMALL LETTER TE D5 | 00000443 | CYRILLIC SMALL LETTER U D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000432 | CYRILLIC SMALL LETTER VE D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN D9 | 0000044B | CYRILLIC SMALL LETTER YERU DA | 00000437 | CYRILLIC SMALL LETTER ZE DB | 00000448 | CYRILLIC SMALL LETTER SHA DC | 0000044D | CYRILLIC SMALL LETTER E DD | 00000449 | CYRILLIC SMALL LETTER SHCHA DE | 00000447 | CYRILLIC SMALL LETTER CHE DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN E0 | 0000042E | CYRILLIC CAPITAL LETTER YU E1 | 00000410 | CYRILLIC CAPITAL LETTER A E2 | 00000411 | CYRILLIC CAPITAL LETTER BE E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE E4 | 00000414 | CYRILLIC CAPITAL LETTER DE E5 | 00000415 | CYRILLIC CAPITAL LETTER IE E6 | 00000424 | CYRILLIC CAPITAL LETTER EF E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE E8 | 00000425 | CYRILLIC CAPITAL LETTER HA E9 | 00000418 | CYRILLIC CAPITAL LETTER I EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I EB | 0000041A | CYRILLIC CAPITAL LETTER KA EC | 0000041B | CYRILLIC CAPITAL LETTER EL ED | 0000041C | CYRILLIC CAPITAL LETTER EM EE | 0000041D | CYRILLIC CAPITAL LETTER EN EF | 0000041E | CYRILLIC CAPITAL LETTER O F0 | 0000041F | CYRILLIC CAPITAL LETTER PE F1 | 0000042F | CYRILLIC CAPITAL LETTER YA F2 | 00000420 | CYRILLIC CAPITAL LETTER ER F3 | 00000421 | CYRILLIC CAPITAL LETTER ES F4 | 00000422 | CYRILLIC CAPITAL LETTER TE F5 | 00000423 | CYRILLIC CAPITAL LETTER U F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE F7 | 00000412 | CYRILLIC CAPITAL LETTER VE F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE FF | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/KOI_8.pm000644 000765 000024 00000054125 12716422334 021473 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for KOI-8. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::KOI_8; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd1\x8e", "\xd0\xb0", "\xd0\xb1", "\xd1\x86", "\xd0\xb4", "\xd0\xb5", "\xd1\x84", "\xd0\xb3", "\xd1\x85", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x8f", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd0\xb6", "\xd0\xb2", "\xd1\x8c", "\xd1\x8b", "\xd0\xb7", "\xd1\x88", "\xd1\x8d", "\xd1\x89", "\xd1\x87", "\xd1\x8a", "\xd0\xae", "\xd0\x90", "\xd0\x91", "\xd0\xa6", "\xd0\x94", "\xd0\x95", "\xd0\xa4", "\xd0\x93", "\xd0\xa5", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xaf", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\x96", "\xd0\x92", "\xd0\xac", "\xd0\xab", "\xd0\x97", "\xd0\xa8", "\xd0\xad", "\xd0\xa9", "\xd0\xa7", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000410 => "\xe1", 0x00000411 => "\xe2", 0x00000412 => "\xf7", 0x00000413 => "\xe7", 0x00000414 => "\xe4", 0x00000415 => "\xe5", 0x00000416 => "\xf6", 0x00000417 => "\xfa", 0x00000418 => "\xe9", 0x00000419 => "\xea", 0x0000041a => "\xeb", 0x0000041b => "\xec", 0x0000041c => "\xed", 0x0000041d => "\xee", 0x0000041e => "\xef", 0x0000041f => "\xf0", 0x00000420 => "\xf2", 0x00000421 => "\xf3", 0x00000422 => "\xf4", 0x00000423 => "\xf5", 0x00000424 => "\xe6", 0x00000425 => "\xe8", 0x00000426 => "\xe3", 0x00000427 => "\xfe", 0x00000428 => "\xfb", 0x00000429 => "\xfd", 0x0000042b => "\xf9", 0x0000042c => "\xf8", 0x0000042d => "\xfc", 0x0000042e => "\xe0", 0x0000042f => "\xf1", 0x00000430 => "\xc1", 0x00000431 => "\xc2", 0x00000432 => "\xd7", 0x00000433 => "\xc7", 0x00000434 => "\xc4", 0x00000435 => "\xc5", 0x00000436 => "\xd6", 0x00000437 => "\xda", 0x00000438 => "\xc9", 0x00000439 => "\xca", 0x0000043a => "\xcb", 0x0000043b => "\xcc", 0x0000043c => "\xcd", 0x0000043d => "\xce", 0x0000043e => "\xcf", 0x0000043f => "\xd0", 0x00000440 => "\xd2", 0x00000441 => "\xd3", 0x00000442 => "\xd4", 0x00000443 => "\xd5", 0x00000444 => "\xc6", 0x00000445 => "\xc8", 0x00000446 => "\xc3", 0x00000447 => "\xde", 0x00000448 => "\xdb", 0x00000449 => "\xdd", 0x0000044a => "\xdf", 0x0000044b => "\xd9", 0x0000044c => "\xd8", 0x0000044d => "\xdc", 0x0000044e => "\xc0", 0x0000044f => "\xd1", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::KOI_8 - Conversion routines for KOI-8 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for KOI-8. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: Andrey A. Chernov Eache@astral.msk.suE Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) C0 | 0000044E | CYRILLIC SMALL LETTER YU C1 | 00000430 | CYRILLIC SMALL LETTER A C2 | 00000431 | CYRILLIC SMALL LETTER BE C3 | 00000446 | CYRILLIC SMALL LETTER TSE C4 | 00000434 | CYRILLIC SMALL LETTER DE C5 | 00000435 | CYRILLIC SMALL LETTER IE C6 | 00000444 | CYRILLIC SMALL LETTER EF C7 | 00000433 | CYRILLIC SMALL LETTER GHE C8 | 00000445 | CYRILLIC SMALL LETTER HA C9 | 00000438 | CYRILLIC SMALL LETTER I CA | 00000439 | CYRILLIC SMALL LETTER SHORT I CB | 0000043A | CYRILLIC SMALL LETTER KA CC | 0000043B | CYRILLIC SMALL LETTER EL CD | 0000043C | CYRILLIC SMALL LETTER EM CE | 0000043D | CYRILLIC SMALL LETTER EN CF | 0000043E | CYRILLIC SMALL LETTER O D0 | 0000043F | CYRILLIC SMALL LETTER PE D1 | 0000044F | CYRILLIC SMALL LETTER YA D2 | 00000440 | CYRILLIC SMALL LETTER ER D3 | 00000441 | CYRILLIC SMALL LETTER ES D4 | 00000442 | CYRILLIC SMALL LETTER TE D5 | 00000443 | CYRILLIC SMALL LETTER U D6 | 00000436 | CYRILLIC SMALL LETTER ZHE D7 | 00000432 | CYRILLIC SMALL LETTER VE D8 | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN D9 | 0000044B | CYRILLIC SMALL LETTER YERU DA | 00000437 | CYRILLIC SMALL LETTER ZE DB | 00000448 | CYRILLIC SMALL LETTER SHA DC | 0000044D | CYRILLIC SMALL LETTER E DD | 00000449 | CYRILLIC SMALL LETTER SHCHA DE | 00000447 | CYRILLIC SMALL LETTER CHE DF | 0000044A | CYRILLIC SMALL LETTER HARD SIGN E0 | 0000042E | CYRILLIC CAPITAL LETTER YU E1 | 00000410 | CYRILLIC CAPITAL LETTER A E2 | 00000411 | CYRILLIC CAPITAL LETTER BE E3 | 00000426 | CYRILLIC CAPITAL LETTER TSE E4 | 00000414 | CYRILLIC CAPITAL LETTER DE E5 | 00000415 | CYRILLIC CAPITAL LETTER IE E6 | 00000424 | CYRILLIC CAPITAL LETTER EF E7 | 00000413 | CYRILLIC CAPITAL LETTER GHE E8 | 00000425 | CYRILLIC CAPITAL LETTER HA E9 | 00000418 | CYRILLIC CAPITAL LETTER I EA | 00000419 | CYRILLIC CAPITAL LETTER SHORT I EB | 0000041A | CYRILLIC CAPITAL LETTER KA EC | 0000041B | CYRILLIC CAPITAL LETTER EL ED | 0000041C | CYRILLIC CAPITAL LETTER EM EE | 0000041D | CYRILLIC CAPITAL LETTER EN EF | 0000041E | CYRILLIC CAPITAL LETTER O F0 | 0000041F | CYRILLIC CAPITAL LETTER PE F1 | 0000042F | CYRILLIC CAPITAL LETTER YA F2 | 00000420 | CYRILLIC CAPITAL LETTER ER F3 | 00000421 | CYRILLIC CAPITAL LETTER ES F4 | 00000422 | CYRILLIC CAPITAL LETTER TE F5 | 00000423 | CYRILLIC CAPITAL LETTER U F6 | 00000416 | CYRILLIC CAPITAL LETTER ZHE F7 | 00000412 | CYRILLIC CAPITAL LETTER VE F8 | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN F9 | 0000042B | CYRILLIC CAPITAL LETTER YERU FA | 00000417 | CYRILLIC CAPITAL LETTER ZE FB | 00000428 | CYRILLIC CAPITAL LETTER SHA FC | 0000042D | CYRILLIC CAPITAL LETTER E FD | 00000429 | CYRILLIC CAPITAL LETTER SHCHA FE | 00000427 | CYRILLIC CAPITAL LETTER CHE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/LATIN_GREEK.pm000644 000765 000024 00000043744 12716422334 022413 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for LATIN-GREEK. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::LATIN_GREEK; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0391, 0x0392, 0x03a8, 0x0394, 0x0395, 0x03a6, 0x0393, 0x0397, 0x0399, 0x039e, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f, 0x03a0, 0xfffd, 0x03a1, 0x03a3, 0x03a4, 0x0398, 0x03a9, 0x00b7, 0x03a7, 0x03a5, 0x0396, 0x007b, 0x007c, 0x007d, 0x00a8, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\xc2\xa3", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\xce\x91", "\xce\x92", "\xce\xa8", "\xce\x94", "\xce\x95", "\xce\xa6", "\xce\x93", "\xce\x97", "\xce\x99", "\xce\x9e", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9f", "\xce\xa0", "\xef\xbf\xbd", "\xce\xa1", "\xce\xa3", "\xce\xa4", "\xce\x98", "\xce\xa9", "\xc2\xb7", "\xce\xa7", "\xce\xa5", "\xce\x96", "\x7b", "\x7c", "\x7d", "\xc2\xa8", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007f => "\x7f", 0x000000a3 => "\x23", 0x000000a8 => "\x7e", 0x000000b7 => "\x77", 0x00000391 => "\x61", 0x00000392 => "\x62", 0x00000393 => "\x67", 0x00000394 => "\x64", 0x00000395 => "\x65", 0x00000396 => "\x7a", 0x00000397 => "\x68", 0x00000398 => "\x75", 0x00000399 => "\x69", 0x0000039a => "\x6b", 0x0000039b => "\x6c", 0x0000039c => "\x6d", 0x0000039d => "\x6e", 0x0000039e => "\x6a", 0x0000039f => "\x6f", 0x000003a0 => "\x70", 0x000003a1 => "\x72", 0x000003a3 => "\x73", 0x000003a4 => "\x74", 0x000003a5 => "\x79", 0x000003a6 => "\x66", 0x000003a7 => "\x78", 0x000003a8 => "\x63", 0x000003a9 => "\x76", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::LATIN_GREEK - Conversion routines for LATIN_GREEK =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for LATIN-GREEK. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-19 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 000000A3 | POUND SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000391 | GREEK CAPITAL LETTER ALPHA 62 | 00000392 | GREEK CAPITAL LETTER BETA 63 | 000003A8 | GREEK CAPITAL LETTER PSI 64 | 00000394 | GREEK CAPITAL LETTER DELTA 65 | 00000395 | GREEK CAPITAL LETTER EPSILON 66 | 000003A6 | GREEK CAPITAL LETTER PHI 67 | 00000393 | GREEK CAPITAL LETTER GAMMA 68 | 00000397 | GREEK CAPITAL LETTER ETA 69 | 00000399 | GREEK CAPITAL LETTER IOTA 6A | 0000039E | GREEK CAPITAL LETTER XI 6B | 0000039A | GREEK CAPITAL LETTER KAPPA 6C | 0000039B | GREEK CAPITAL LETTER LAMDA 6D | 0000039C | GREEK CAPITAL LETTER MU 6E | 0000039D | GREEK CAPITAL LETTER NU 6F | 0000039F | GREEK CAPITAL LETTER OMICRON 70 | 000003A0 | GREEK CAPITAL LETTER PI 72 | 000003A1 | GREEK CAPITAL LETTER RHO 73 | 000003A3 | GREEK CAPITAL LETTER SIGMA 74 | 000003A4 | GREEK CAPITAL LETTER TAU 75 | 00000398 | GREEK CAPITAL LETTER THETA 76 | 000003A9 | GREEK CAPITAL LETTER OMEGA 77 | 000000B7 | MIDDLE DOT 78 | 000003A7 | GREEK CAPITAL LETTER CHI 79 | 000003A5 | GREEK CAPITAL LETTER UPSILON 7A | 00000396 | GREEK CAPITAL LETTER ZETA 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 000000A8 | DIAERESIS 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/LATIN_GREEK_1.pm000644 000765 000024 00000043764 12716422334 022635 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for LATIN-GREEK-1. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::LATIN_GREEK_1; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x039e, 0x0022, 0x0393, 0x00a4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x03a8, 0x003b, 0x003c, 0x003d, 0x003e, 0x03a0, 0x0394, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x03a9, 0x0398, 0x03a6, 0x039b, 0x03a3, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\xce\x9e", "\x22", "\xce\x93", "\xc2\xa4", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\xce\xa8", "\x3b", "\x3c", "\x3d", "\x3e", "\xce\xa0", "\xce\x94", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xce\xa9", "\xce\x98", "\xce\xa6", "\xce\x9b", "\xce\xa3", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\xe2\x80\xbe", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000022 => "\x22", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007f => "\x7f", 0x000000a4 => "\x24", 0x00000393 => "\x23", 0x00000394 => "\x40", 0x00000398 => "\x5c", 0x0000039b => "\x5e", 0x0000039e => "\x21", 0x000003a0 => "\x3f", 0x000003a3 => "\x5f", 0x000003a6 => "\x5d", 0x000003a8 => "\x3a", 0x000003a9 => "\x5b", 0x0000203e => "\x7e", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::LATIN_GREEK_1 - Conversion routines for LATIN_GREEK_1 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for LATIN-GREEK-1. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-27 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 0000039E | GREEK CAPITAL LETTER XI 22 | 00000022 | QUOTATION MARK 23 | 00000393 | GREEK CAPITAL LETTER GAMMA 24 | 000000A4 | CURRENCY SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 000003A8 | GREEK CAPITAL LETTER PSI 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 000003A0 | GREEK CAPITAL LETTER PI 40 | 00000394 | GREEK CAPITAL LETTER DELTA 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 000003A9 | GREEK CAPITAL LETTER OMEGA 5C | 00000398 | GREEK CAPITAL LETTER THETA 5D | 000003A6 | GREEK CAPITAL LETTER PHI 5E | 0000039B | GREEK CAPITAL LETTER LAMDA 5F | 000003A3 | GREEK CAPITAL LETTER SIGMA 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000203E | OVERLINE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MAC_IS.pm000644 000765 000024 00000064611 12716422334 021616 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MAC-IS. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MAC_IS; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0394, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x2014, 0x2013, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25c6, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x0110, 0x0111, 0x00de, 0x00fe, 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0xe01e, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0xfffd, 0xfffd, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc3\x86", "\xc3\x98", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa5", "\xc2\xb5", "\xe2\x88\x82", "\xe2\x88\x91", "\xe2\x88\x8f", "\xcf\x80", "\xe2\x88\xab", "\xc2\xaa", "\xc2\xba", "\xce\xa9", "\xc3\xa6", "\xc3\xb8", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xce\x94", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xe2\x80\x94", "\xe2\x80\x93", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x86", "\xc3\xbf", "\xc5\xb8", "\xe2\x81\x84", "\xc2\xa4", "\xc4\x90", "\xc4\x91", "\xc3\x9e", "\xc3\xbe", "\xe2\x80\xa1", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc3\x8a", "\xc3\x81", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xee\x80\x9e", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc4\xb1", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc2\xaf", "\xcb\x98", "\xcb\x99", "\xcb\x9a", "\xc2\xb8", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xdb", 0x000000a5 => "\xb4", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xa9", 0x000000aa => "\xbb", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000af => "\xf8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b4 => "\xab", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000b8 => "\xfc", 0x000000ba => "\xbc", 0x000000bb => "\xc8", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c6 => "\xae", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xe6", 0x000000cb => "\xe8", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d8 => "\xaf", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000de => "\xde", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e6 => "\xbe", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f8 => "\xbf", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000000fe => "\xdf", 0x000000ff => "\xd8", 0x00000110 => "\xdc", 0x00000111 => "\xdd", 0x00000131 => "\xf5", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x00000178 => "\xd9", 0x00000192 => "\xc4", 0x000002c7 => "\xff", 0x000002d8 => "\xf9", 0x000002d9 => "\xfa", 0x000002da => "\xfb", 0x000002db => "\xfe", 0x000002dd => "\xfd", 0x00000394 => "\xc6", 0x000003a9 => "\xbd", 0x000003c0 => "\xb9", 0x00002013 => "\xd1", 0x00002014 => "\xd0", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002020 => "\xa0", 0x00002021 => "\xe0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002044 => "\xda", 0x00002122 => "\xaa", 0x00002202 => "\xb6", 0x0000220f => "\xb8", 0x00002211 => "\xb7", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x0000222b => "\xba", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", 0x000025c6 => "\xd7", 0x0000e01e => "\xf0", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MAC_IS - Conversion routines for MAC-IS =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MAC-IS. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S (German) A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 000000C6 | LATIN CAPITAL LETTER AE AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 000000A5 | YEN SIGN B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00002211 | N-ARY SUMMATION B8 | 0000220F | N-ARY PRODUCT B9 | 000003C0 | GREEK SMALL LETTER PI BA | 0000222B | INTEGRAL BB | 000000AA | FEMININE ORDINAL INDICATOR BC | 000000BA | MASCULINE ORDINAL INDICATOR BD | 000003A9 | GREEK CAPITAL LETTER OMEGA BE | 000000E6 | LATIN SMALL LETTER AE BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00000394 | GREEK CAPITAL LETTER DELTA C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LIGATURE OE CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00002014 | EM DASH D1 | 00002013 | EN DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025C6 | BLACK DIAMOND D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DA | 00002044 | FRACTION SLASH DB | 000000A4 | CURRENCY SIGN DC | 00000110 | LATIN CAPITAL LETTER D WITH STROKE DD | 00000111 | LATIN SMALL LETTER D WITH STROKE DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) DF | 000000FE | LATIN SMALL LETTER THORN (Icelandic) E0 | 00002021 | DOUBLE DAGGER E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F0 | 0000E01E | APPLE LOGO (Macintosh_F0) F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F8 | 000000AF | MACRON F9 | 000002D8 | BREVE FA | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) FB | 000002DA | RING ABOVE FC | 000000B8 | CEDILLA FD | 000002DD | DOUBLE ACUTE ACCENT FE | 000002DB | OGONEK FF | 000002C7 | CARON (Mandarin Chinese third tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MAC_SAMI.pm000644 000765 000024 00000065470 12716422334 022040 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MAC-SAMI. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MAC_SAMI; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x00dd, 0x00b0, 0x010c, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 0x0110, 0x014a, 0x821e, 0x821f, 0x0160, 0x0166, 0x2202, 0x017d, 0x010d, 0x0111, 0x014b, 0x0161, 0x0167, 0x017e, 0x00e6, 0x00f8, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x00d0, 0x00f0, 0x00de, 0x00fe, 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x01b7, 0x0292, 0x01ee, 0x01ef, 0x01e4, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\x9d", "\xc2\xb0", "\xc4\x8c", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc3\x86", "\xc3\x98", "\xc4\x90", "\xc5\x8a", "\xe8\x88\x9e", "\xe8\x88\x9f", "\xc5\xa0", "\xc5\xa6", "\xe2\x88\x82", "\xc5\xbd", "\xc4\x8d", "\xc4\x91", "\xc5\x8b", "\xc5\xa1", "\xc5\xa7", "\xc5\xbe", "\xc3\xa6", "\xc3\xb8", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x8a", "\xc3\xbf", "\xc5\xb8", "\xe2\x81\x84", "\xc2\xa4", "\xc3\x90", "\xc3\xb0", "\xc3\x9e", "\xc3\xbe", "\xc3\xbd", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc3\x8a", "\xc3\x81", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xef\xa3\xbf", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc4\xb1", "\xc6\xb7", "\xca\x92", "\xc7\xae", "\xc7\xaf", "\xc7\xa4", "\xc7\xa5", "\xc7\xa6", "\xc7\xa7", "\xc7\xa8", "\xc7\xa9", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a3 => "\xa3", 0x000000a4 => "\xdb", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xa9", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000b0 => "\xa1", 0x000000b4 => "\xab", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000bb => "\xc8", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c6 => "\xae", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xe6", 0x000000cb => "\xe8", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d0 => "\xdc", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d8 => "\xaf", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000dd => "\xa0", 0x000000de => "\xde", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e6 => "\xbe", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f0 => "\xdd", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f8 => "\xbf", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000000fd => "\xe0", 0x000000fe => "\xdf", 0x000000ff => "\xd8", 0x0000010c => "\xa2", 0x0000010d => "\xb8", 0x00000110 => "\xb0", 0x00000111 => "\xb9", 0x00000131 => "\xf5", 0x0000014a => "\xb1", 0x0000014b => "\xba", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x00000160 => "\xb4", 0x00000161 => "\xbb", 0x00000166 => "\xb5", 0x00000167 => "\xbc", 0x00000178 => "\xd9", 0x0000017d => "\xb7", 0x0000017e => "\xbd", 0x00000192 => "\xc4", 0x000001b7 => "\xf6", 0x000001e4 => "\xfa", 0x000001e5 => "\xfb", 0x000001e6 => "\xfc", 0x000001e7 => "\xfd", 0x000001e8 => "\xfe", 0x000001e9 => "\xff", 0x000001ee => "\xf8", 0x000001ef => "\xf9", 0x00000292 => "\xf7", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002044 => "\xda", 0x00002122 => "\xaa", 0x00002202 => "\xb6", 0x00002206 => "\xc6", 0x0000221a => "\xc3", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x000025ca => "\xd7", 0x0000821e => "\xb2", 0x0000821f => "\xb3", 0x0000f8ff => "\xf0", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MAC_SAMI - Conversion routines for MAC-SAMI =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MAC-SAMI. =head1 COMMENTS The following comments have been extracted from the original charmap: source: http://www.indigo.ie/egt/standards/se/mac-sami.html author: Regnor Jernsletten ERegnor.Jernsletten@sami.uit.noE date: 2001-07-31 comment: Macintosh sami standard. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE A1 | 000000B0 | DEGREE SIGN A2 | 0000010C | LATIN CAPITAL LETTER C WITH CARON A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S (German) A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 000000C6 | LATIN CAPITAL LETTER AE AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE B1 | 0000014A | LATIN CAPITAL LETTER ENG B2 | 0000821E | LATIN CAPITAL LETTER H WITH CARON B3 | 0000821F | LATIN SMALL LETTER H WITH CARON B4 | 00000160 | LATIN CAPITAL LETTER S WITH CARON B5 | 00000166 | LATIN CAPITAL LETTER T WITH STROKE B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 0000017D | LATIN CAPITAL LETTER Z WITH CARON B8 | 0000010D | LATIN SMALL LETTER C WITH CARON B9 | 00000111 | LATIN SMALL LETTER D WITH STROKE BA | 0000014B | LATIN SMALL LETTER ENG BB | 00000161 | LATIN SMALL LETTER S WITH CARON BC | 00000167 | LATIN SMALL LETTER T WITH STROKE BD | 0000017E | LATIN SMALL LETTER Z WITH CARON BE | 000000E6 | LATIN SMALL LETTER AE BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LETTER LIGATURE OE CF | 00000153 | LATIN SMALL LETTER LIGATURE OE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025CA | LOZENGE D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DA | 00002044 | FRACTION SLASH DB | 000000A4 | CURRENCY SIGN DC | 000000D0 | LATIN CAPITAL LETTER ETH DD | 000000F0 | LATIN SMALL LETTER ETH DE | 000000DE | LATIN CAPITAL LETTER THORN DF | 000000FE | LATIN SMALL LETTER THORN E0 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F0 | 0000F8FF | APPLE SIGN F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F6 | 000001B7 | LATIN CAPITAL LETTER EZH F7 | 00000292 | LATIN SMALL LETTER EZH F8 | 000001EE | LATIN CAPITAL LETTER EZH WITH CARON F9 | 000001EF | LATIN SMALL LETTER EZH WITH CARON FA | 000001E4 | LATIN CAPITAL LETTER G WITH STROKE FB | 000001E5 | LATIN SMALLL LETTER G WITH STROKE FC | 000001E6 | LATIN CAPITAL LETTER G WITH CARON FD | 000001E7 | LATIN SMALL LETTER G WITH CARON FE | 000001E8 | LATIN CAPITAL LETTER K WITH CARON FF | 000001E9 | LATIN SMALL LETTER K WITH CARON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MAC_UK.pm000644 000765 000024 00000064270 12716422334 021623 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MAC-UK. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MAC_UK; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xe2\x80\xa0", "\xc2\xb0", "\xd2\x90", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xd0\x86", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xd0\x82", "\xd1\x92", "\xe2\x89\xa0", "\xd0\x83", "\xd1\x93", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xd1\x96", "\xc2\xb5", "\xd2\x91", "\xd0\x88", "\xd0\x84", "\xd1\x94", "\xd0\x87", "\xd1\x97", "\xd0\x89", "\xd1\x99", "\xd0\x8a", "\xd1\x9a", "\xd1\x98", "\xd0\x85", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xd0\x8b", "\xd1\x9b", "\xd0\x8c", "\xd1\x9c", "\xd1\x95", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x80\x9e", "\xd0\x8e", "\xd1\x9e", "\xd0\x8f", "\xd1\x9f", "\xe2\x84\x96", "\xd0\x81", "\xd1\x91", "\xd1\x8f", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xc2\xa4", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a3 => "\xa3", 0x000000a4 => "\xff", 0x000000a7 => "\xa4", 0x000000a9 => "\xa9", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000bb => "\xc8", 0x000000f7 => "\xd6", 0x00000192 => "\xc4", 0x00000401 => "\xdd", 0x00000402 => "\xab", 0x00000403 => "\xae", 0x00000404 => "\xb8", 0x00000405 => "\xc1", 0x00000406 => "\xa7", 0x00000407 => "\xba", 0x00000408 => "\xb7", 0x00000409 => "\xbc", 0x0000040a => "\xbe", 0x0000040b => "\xcb", 0x0000040c => "\xcd", 0x0000040e => "\xd8", 0x0000040f => "\xda", 0x00000410 => "\x80", 0x00000411 => "\x81", 0x00000412 => "\x82", 0x00000413 => "\x83", 0x00000414 => "\x84", 0x00000415 => "\x85", 0x00000416 => "\x86", 0x00000417 => "\x87", 0x00000418 => "\x88", 0x00000419 => "\x89", 0x0000041a => "\x8a", 0x0000041b => "\x8b", 0x0000041c => "\x8c", 0x0000041d => "\x8d", 0x0000041e => "\x8e", 0x0000041f => "\x8f", 0x00000420 => "\x90", 0x00000421 => "\x91", 0x00000422 => "\x92", 0x00000423 => "\x93", 0x00000424 => "\x94", 0x00000425 => "\x95", 0x00000426 => "\x96", 0x00000427 => "\x97", 0x00000428 => "\x98", 0x00000429 => "\x99", 0x0000042a => "\x9a", 0x0000042b => "\x9b", 0x0000042c => "\x9c", 0x0000042d => "\x9d", 0x0000042e => "\x9e", 0x0000042f => "\x9f", 0x00000430 => "\xe0", 0x00000431 => "\xe1", 0x00000432 => "\xe2", 0x00000433 => "\xe3", 0x00000434 => "\xe4", 0x00000435 => "\xe5", 0x00000436 => "\xe6", 0x00000437 => "\xe7", 0x00000438 => "\xe8", 0x00000439 => "\xe9", 0x0000043a => "\xea", 0x0000043b => "\xeb", 0x0000043c => "\xec", 0x0000043d => "\xed", 0x0000043e => "\xee", 0x0000043f => "\xef", 0x00000440 => "\xf0", 0x00000441 => "\xf1", 0x00000442 => "\xf2", 0x00000443 => "\xf3", 0x00000444 => "\xf4", 0x00000445 => "\xf5", 0x00000446 => "\xf6", 0x00000447 => "\xf7", 0x00000448 => "\xf8", 0x00000449 => "\xf9", 0x0000044a => "\xfa", 0x0000044b => "\xfb", 0x0000044c => "\xfc", 0x0000044d => "\xfd", 0x0000044e => "\xfe", 0x0000044f => "\xdf", 0x00000451 => "\xde", 0x00000452 => "\xac", 0x00000453 => "\xaf", 0x00000454 => "\xb9", 0x00000455 => "\xcf", 0x00000456 => "\xb4", 0x00000457 => "\xbb", 0x00000458 => "\xc0", 0x00000459 => "\xbd", 0x0000045a => "\xbf", 0x0000045b => "\xcc", 0x0000045c => "\xce", 0x0000045e => "\xd9", 0x0000045f => "\xdb", 0x00000490 => "\xa2", 0x00000491 => "\xb6", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xd7", 0x00002020 => "\xa0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002116 => "\xdc", 0x00002122 => "\xaa", 0x00002206 => "\xc6", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MAC_UK - Conversion routines for MAC-UK =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MAC-UK. =head1 COMMENTS The following comments have been extracted from the original charmap: automatically generated from the charDB Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL 01 | 00000001 | START OF HEADING 02 | 00000002 | START OF TEXT 03 | 00000003 | END OF TEXT 04 | 00000004 | END OF TRANSMISSION 05 | 00000005 | ENQUIRY 06 | 00000006 | ACKNOWLEDGE 07 | 00000007 | BELL 08 | 00000008 | BACKSPACE 09 | 00000009 | HORIZONTAL TABULATION 0A | 0000000A | LINE FEED 0B | 0000000B | VERTICAL TABULATION 0C | 0000000C | FORM FEED 0D | 0000000D | CARRIAGE RETURN 0E | 0000000E | SHIFT OUT 0F | 0000000F | SHIFT IN 10 | 00000010 | DATA LINK ESCAPE 11 | 00000011 | DEVICE CONTROL ONE 12 | 00000012 | DEVICE CONTROL TWO 13 | 00000013 | DEVICE CONTROL THREE 14 | 00000014 | DEVICE CONTROL FOUR 15 | 00000015 | NEGATIVE ACKNOWLEDGE 16 | 00000016 | SYNCHRONOUS IDLE 17 | 00000017 | END OF TRANSMISSION BLOCK 18 | 00000018 | CANCEL 19 | 00000019 | END OF MEDIUM 1A | 0000001A | SUBSTITUTE 1B | 0000001B | ESCAPE 1C | 0000001C | FILE SEPARATOR 1D | 0000001D | GROUP SEPARATOR 1E | 0000001E | RECORD SEPARATOR 1F | 0000001F | UNIT SEPARATOR 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE 80 | 00000410 | CYRILLIC CAPITAL LETTER A 81 | 00000411 | CYRILLIC CAPITAL LETTER BE 82 | 00000412 | CYRILLIC CAPITAL LETTER VE 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE 84 | 00000414 | CYRILLIC CAPITAL LETTER DE 85 | 00000415 | CYRILLIC CAPITAL LETTER IE 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE 88 | 00000418 | CYRILLIC CAPITAL LETTER I 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 8A | 0000041A | CYRILLIC CAPITAL LETTER KA 8B | 0000041B | CYRILLIC CAPITAL LETTER EL 8C | 0000041C | CYRILLIC CAPITAL LETTER EM 8D | 0000041D | CYRILLIC CAPITAL LETTER EN 8E | 0000041E | CYRILLIC CAPITAL LETTER O 8F | 0000041F | CYRILLIC CAPITAL LETTER PE 90 | 00000420 | CYRILLIC CAPITAL LETTER ER 91 | 00000421 | CYRILLIC CAPITAL LETTER ES 92 | 00000422 | CYRILLIC CAPITAL LETTER TE 93 | 00000423 | CYRILLIC CAPITAL LETTER U 94 | 00000424 | CYRILLIC CAPITAL LETTER EF 95 | 00000425 | CYRILLIC CAPITAL LETTER HA 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 9D | 0000042D | CYRILLIC CAPITAL LETTER E 9E | 0000042E | CYRILLIC CAPITAL LETTER YU 9F | 0000042F | CYRILLIC CAPITAL LETTER YA A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 00000402 | CYRILLIC CAPITAL LETTER DJE AC | 00000452 | CYRILLIC SMALL LETTER DJE AD | 00002260 | NOT EQUAL TO AE | 00000403 | CYRILLIC CAPITAL LETTER GJE AF | 00000453 | CYRILLIC SMALL LETTER GJE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I B5 | 000000B5 | MICRO SIGN B6 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN B7 | 00000408 | CYRILLIC CAPITAL LETTER JE B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE BA | 00000407 | CYRILLIC CAPITAL LETTER YI BB | 00000457 | CYRILLIC SMALL LETTER YI BC | 00000409 | CYRILLIC CAPITAL LETTER LJE BD | 00000459 | CYRILLIC SMALL LETTER LJE BE | 0000040A | CYRILLIC CAPITAL LETTER NJE BF | 0000045A | CYRILLIC SMALL LETTER NJE C0 | 00000458 | CYRILLIC SMALL LETTER JE C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE CC | 0000045B | CYRILLIC SMALL LETTER TSHE CD | 0000040C | CYRILLIC CAPITAL LETTER KJE CE | 0000045C | CYRILLIC SMALL LETTER KJE CF | 00000455 | CYRILLIC SMALL LETTER DZE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE DB | 0000045F | CYRILLIC SMALL LETTER DZHE DC | 00002116 | NUMERO SIGN DD | 00000401 | CYRILLIC CAPITAL LETTER IO DE | 00000451 | CYRILLIC SMALL LETTER IO DF | 0000044F | CYRILLIC SMALL LETTER YA E0 | 00000430 | CYRILLIC SMALL LETTER A E1 | 00000431 | CYRILLIC SMALL LETTER BE E2 | 00000432 | CYRILLIC SMALL LETTER VE E3 | 00000433 | CYRILLIC SMALL LETTER GHE E4 | 00000434 | CYRILLIC SMALL LETTER DE E5 | 00000435 | CYRILLIC SMALL LETTER IE E6 | 00000436 | CYRILLIC SMALL LETTER ZHE E7 | 00000437 | CYRILLIC SMALL LETTER ZE E8 | 00000438 | CYRILLIC SMALL LETTER I E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I EA | 0000043A | CYRILLIC SMALL LETTER KA EB | 0000043B | CYRILLIC SMALL LETTER EL EC | 0000043C | CYRILLIC SMALL LETTER EM ED | 0000043D | CYRILLIC SMALL LETTER EN EE | 0000043E | CYRILLIC SMALL LETTER O EF | 0000043F | CYRILLIC SMALL LETTER PE F0 | 00000440 | CYRILLIC SMALL LETTER ER F1 | 00000441 | CYRILLIC SMALL LETTER ES F2 | 00000442 | CYRILLIC SMALL LETTER TE F3 | 00000443 | CYRILLIC SMALL LETTER U F4 | 00000444 | CYRILLIC SMALL LETTER EF F5 | 00000445 | CYRILLIC SMALL LETTER HA F6 | 00000446 | CYRILLIC SMALL LETTER TSE F7 | 00000447 | CYRILLIC SMALL LETTER CHE F8 | 00000448 | CYRILLIC SMALL LETTER SHA F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN FB | 0000044B | CYRILLIC SMALL LETTER YERU FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN FD | 0000044D | CYRILLIC SMALL LETTER E FE | 0000044E | CYRILLIC SMALL LETTER YU FF | 000000A4 | CURRENCY SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACARABIC.pm000644 000765 000024 00000061056 12716422334 022065 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACARABIC. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACARABIC; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00a0, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x06ba, 0x00ab, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x2026, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00bb, 0x00f4, 0x00f6, 0x00f7, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x066a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0xfffd, 0xfffd, 0xfffd, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f, 0x066d, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 0x0650, 0x0651, 0x0652, 0x067e, 0x0679, 0x0686, 0x06d5, 0x06a4, 0x06af, 0x0688, 0x0691, 0xfffd, 0xfffd, 0xfffd, 0x0698, 0x06d2, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc2\xa0", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xda\xba", "\xc2\xab", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xe2\x80\xa6", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc2\xbb", "\xc3\xb4", "\xc3\xb6", "\xc3\xb7", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\xaa", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\x8c", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\xa0", "\xd9\xa1", "\xd9\xa2", "\xd9\xa3", "\xd9\xa4", "\xd9\xa5", "\xd9\xa6", "\xd9\xa7", "\xd9\xa8", "\xd9\xa9", "\xef\xbf\xbd", "\xd8\x9b", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd8\x9f", "\xd9\xad", "\xd8\xa1", "\xd8\xa2", "\xd8\xa3", "\xd8\xa4", "\xd8\xa5", "\xd8\xa6", "\xd8\xa7", "\xd8\xa8", "\xd8\xa9", "\xd8\xaa", "\xd8\xab", "\xd8\xac", "\xd8\xad", "\xd8\xae", "\xd8\xaf", "\xd8\xb0", "\xd8\xb1", "\xd8\xb2", "\xd8\xb3", "\xd8\xb4", "\xd8\xb5", "\xd8\xb6", "\xd8\xb7", "\xd8\xb8", "\xd8\xb9", "\xd8\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd9\x80", "\xd9\x81", "\xd9\x82", "\xd9\x83", "\xd9\x84", "\xd9\x85", "\xd9\x86", "\xd9\x87", "\xd9\x88", "\xd9\x89", "\xd9\x8a", "\xd9\x8b", "\xd9\x8c", "\xd9\x8d", "\xd9\x8e", "\xd9\x8f", "\xd9\x90", "\xd9\x91", "\xd9\x92", "\xd9\xbe", "\xd9\xb9", "\xda\x86", "\xdb\x95", "\xda\xa4", "\xda\xaf", "\xda\x88", "\xda\x91", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xda\x98", "\xdb\x92", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\x81", 0x000000ab => "\x8c", 0x000000bb => "\x98", 0x000000c4 => "\x80", 0x000000c7 => "\x82", 0x000000c9 => "\x83", 0x000000d1 => "\x84", 0x000000d6 => "\x85", 0x000000dc => "\x86", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e4 => "\x8a", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f6 => "\x9a", 0x000000f7 => "\x9b", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x0000060c => "\xac", 0x0000061b => "\xbb", 0x0000061f => "\xbf", 0x00000621 => "\xc1", 0x00000622 => "\xc2", 0x00000623 => "\xc3", 0x00000624 => "\xc4", 0x00000625 => "\xc5", 0x00000626 => "\xc6", 0x00000627 => "\xc7", 0x00000628 => "\xc8", 0x00000629 => "\xc9", 0x0000062a => "\xca", 0x0000062b => "\xcb", 0x0000062c => "\xcc", 0x0000062d => "\xcd", 0x0000062e => "\xce", 0x0000062f => "\xcf", 0x00000630 => "\xd0", 0x00000631 => "\xd1", 0x00000632 => "\xd2", 0x00000633 => "\xd3", 0x00000634 => "\xd4", 0x00000635 => "\xd5", 0x00000636 => "\xd6", 0x00000637 => "\xd7", 0x00000638 => "\xd8", 0x00000639 => "\xd9", 0x0000063a => "\xda", 0x00000640 => "\xe0", 0x00000641 => "\xe1", 0x00000642 => "\xe2", 0x00000643 => "\xe3", 0x00000644 => "\xe4", 0x00000645 => "\xe5", 0x00000646 => "\xe6", 0x00000647 => "\xe7", 0x00000648 => "\xe8", 0x00000649 => "\xe9", 0x0000064a => "\xea", 0x0000064b => "\xeb", 0x0000064c => "\xec", 0x0000064d => "\xed", 0x0000064e => "\xee", 0x0000064f => "\xef", 0x00000650 => "\xf0", 0x00000651 => "\xf1", 0x00000652 => "\xf2", 0x00000660 => "\xb0", 0x00000661 => "\xb1", 0x00000662 => "\xb2", 0x00000663 => "\xb3", 0x00000664 => "\xb4", 0x00000665 => "\xb5", 0x00000666 => "\xb6", 0x00000667 => "\xb7", 0x00000668 => "\xb8", 0x00000669 => "\xb9", 0x0000066a => "\xa5", 0x0000066d => "\xc0", 0x00000679 => "\xf4", 0x0000067e => "\xf3", 0x00000686 => "\xf5", 0x00000688 => "\xf9", 0x00000691 => "\xfa", 0x00000698 => "\xfe", 0x000006a4 => "\xf7", 0x000006af => "\xf8", 0x000006ba => "\x8b", 0x000006d2 => "\xff", 0x000006d5 => "\xf6", 0x00002026 => "\x93", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACARABIC - Conversion routines for MACARABIC =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACARABIC. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000A0 | NO-BREAK SPACE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000006BA | ARABIC LETTER NOON GHUNNA 8C | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 00002026 | HORIZONTAL ELLIPSIS 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F7 | DIVISION SIGN 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A5 | 0000066A | ARABIC PERCENT SIGN AC | 0000060C | ARABIC COMMA B0 | 00000660 | ARABIC-INDIC DIGIT ZERO B1 | 00000661 | ARABIC-INDIC DIGIT ONE B2 | 00000662 | ARABIC-INDIC DIGIT TWO B3 | 00000663 | ARABIC-INDIC DIGIT THREE B4 | 00000664 | ARABIC-INDIC DIGIT FOUR B5 | 00000665 | ARABIC-INDIC DIGIT FIVE B6 | 00000666 | ARABIC-INDIC DIGIT SIX B7 | 00000667 | ARABIC-INDIC DIGIT SEVEN B8 | 00000668 | ARABIC-INDIC DIGIT EIGHT B9 | 00000669 | ARABIC-INDIC DIGIT NINE BB | 0000061B | ARABIC SEMICOLON BF | 0000061F | ARABIC QUESTION MARK C0 | 0000066D | ARABIC FIVE POINTED STAR C1 | 00000621 | ARABIC LETTER HAMZA C2 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE C3 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE C4 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE C5 | 00000625 | ARABIC LETTER ALEF WITH HAMZA BELOW C6 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE C7 | 00000627 | ARABIC LETTER ALEF C8 | 00000628 | ARABIC LETTER BEH C9 | 00000629 | ARABIC LETTER TEH MARBUTA CA | 0000062A | ARABIC LETTER TEH CB | 0000062B | ARABIC LETTER THEH CC | 0000062C | ARABIC LETTER JEEM CD | 0000062D | ARABIC LETTER HAH CE | 0000062E | ARABIC LETTER KHAH CF | 0000062F | ARABIC LETTER DAL D0 | 00000630 | ARABIC LETTER THAL D1 | 00000631 | ARABIC LETTER REH D2 | 00000632 | ARABIC LETTER ZAIN D3 | 00000633 | ARABIC LETTER SEEN D4 | 00000634 | ARABIC LETTER SHEEN D5 | 00000635 | ARABIC LETTER SAD D6 | 00000636 | ARABIC LETTER DAD D7 | 00000637 | ARABIC LETTER TAH D8 | 00000638 | ARABIC LETTER ZAH D9 | 00000639 | ARABIC LETTER AIN DA | 0000063A | ARABIC LETTER GHAIN E0 | 00000640 | ARABIC TATWEEL E1 | 00000641 | ARABIC LETTER FEH E2 | 00000642 | ARABIC LETTER QAF E3 | 00000643 | ARABIC LETTER KAF E4 | 00000644 | ARABIC LETTER LAM E5 | 00000645 | ARABIC LETTER MEEM E6 | 00000646 | ARABIC LETTER NOON E7 | 00000647 | ARABIC LETTER HEH E8 | 00000648 | ARABIC LETTER WAW E9 | 00000649 | ARABIC LETTER ALEF MAKSURA EA | 0000064A | ARABIC LETTER YEH EB | 0000064B | ARABIC FATHATAN EC | 0000064C | ARABIC DAMMATAN ED | 0000064D | ARABIC KASRATAN EE | 0000064E | ARABIC FATHA EF | 0000064F | ARABIC DAMMA F0 | 00000650 | ARABIC KASRA F1 | 00000651 | ARABIC SHADDA F2 | 00000652 | ARABIC SUKUN F3 | 0000067E | ARABIC LETTER PEH F4 | 00000679 | ARABIC LETTER TTEH F5 | 00000686 | ARABIC LETTER TCHEH F6 | 000006D5 | ARABIC LETTER AE F7 | 000006A4 | ARABIC LETTER VEH F8 | 000006AF | ARABIC LETTER GAF F9 | 00000688 | ARABIC LETTER DDAL FA | 00000691 | ARABIC LETTER RREH FE | 00000698 | ARABIC LETTER JEH FF | 000006D2 | ARABIC LETTER YEH BARREE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACCROATIAN.pm000644 000765 000024 00000065102 12716422334 022340 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACCROATIAN. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACCROATIAN; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x0160, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x017d, 0x00d8, 0x221e, 0x00b1, 0x2264, 0x2265, 0x2206, 0x00b5, 0x2202, 0x2211, 0x220f, 0x0161, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x017e, 0x00f8, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0106, 0x00ab, 0x010c, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x0110, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0xfffd, 0x00a9, 0x2044, 0x00a4, 0x2039, 0x203a, 0x00c6, 0x00bb, 0x2013, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x0107, 0x00c1, 0x010d, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0x0111, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc5\xa0", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc5\xbd", "\xc3\x98", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xe2\x88\x86", "\xc2\xb5", "\xe2\x88\x82", "\xe2\x88\x91", "\xe2\x88\x8f", "\xc5\xa1", "\xe2\x88\xab", "\xc2\xaa", "\xc2\xba", "\xe2\x84\xa6", "\xc5\xbe", "\xc3\xb8", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xc4\x86", "\xc2\xab", "\xc4\x8c", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xc4\x90", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x8a", "\xef\xbf\xbd", "\xc2\xa9", "\xe2\x81\x84", "\xc2\xa4", "\xe2\x80\xb9", "\xe2\x80\xba", "\xc3\x86", "\xc2\xbb", "\xe2\x80\x93", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc4\x87", "\xc3\x81", "\xc4\x8d", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xc4\x91", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc4\xb1", "\xcb\x86", "\xcb\x9c", "\xc2\xaf", "\xcf\x80", "\xc3\x8b", "\xcb\x9a", "\xc2\xb8", "\xc3\x8a", "\xc3\xa6", "\xcb\x87", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xdb", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xd9", 0x000000aa => "\xbb", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000af => "\xf8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b4 => "\xab", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000b8 => "\xfc", 0x000000ba => "\xbc", 0x000000bb => "\xdf", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c6 => "\xde", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xfd", 0x000000cb => "\xfa", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d8 => "\xaf", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e6 => "\xfe", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f8 => "\xbf", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x00000106 => "\xc6", 0x00000107 => "\xe6", 0x0000010c => "\xc8", 0x0000010d => "\xe8", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000131 => "\xf5", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x00000160 => "\xa9", 0x00000161 => "\xb9", 0x0000017d => "\xae", 0x0000017e => "\xbe", 0x00000192 => "\xc4", 0x000002c6 => "\xf6", 0x000002c7 => "\xff", 0x000002da => "\xfb", 0x000002dc => "\xf7", 0x000003c0 => "\xf9", 0x00002013 => "\xe0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002020 => "\xa0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002039 => "\xdc", 0x0000203a => "\xdd", 0x00002044 => "\xda", 0x00002122 => "\xaa", 0x00002126 => "\xbd", 0x00002202 => "\xb6", 0x00002206 => "\xb4", 0x0000220f => "\xb8", 0x00002211 => "\xb7", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x0000222b => "\xba", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", 0x000025ca => "\xd7", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACCROATIAN - Conversion routines for MACCROATIAN =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACCROATIAN. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S A8 | 000000AE | REGISTERED SIGN A9 | 00000160 | LATIN CAPITAL LETTER S WITH CARON AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 00002206 | INCREMENT B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00002211 | N-ARY SUMMATION B8 | 0000220F | N-ARY PRODUCT B9 | 00000161 | LATIN SMALL LETTER S WITH CARON BA | 0000222B | INTEGRAL BB | 000000AA | FEMININE ORDINAL INDICATOR BC | 000000BA | MASCULINE ORDINAL INDICATOR BD | 00002126 | OHM SIGN BE | 0000017E | LATIN SMALL LETTER Z WITH CARON BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00000106 | LATIN CAPITAL LETTER C WITH ACUTE C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 0000010C | LATIN CAPITAL LETTER C WITH CARON C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LIGATURE OE CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025CA | LOZENGE D9 | 000000A9 | COPYRIGHT SIGN DA | 00002044 | FRACTION SLASH DB | 000000A4 | CURRENCY SIGN DC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK DD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK DE | 000000C6 | LATIN CAPITAL LETTER AE DF | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK E0 | 00002013 | EN DASH E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 00000107 | LATIN SMALL LETTER C WITH ACUTE E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 0000010D | LATIN SMALL LETTER C WITH CARON E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT F7 | 000002DC | SMALL TILDE F8 | 000000AF | MACRON F9 | 000003C0 | GREEK SMALL LETTER PI FA | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS FB | 000002DA | RING ABOVE FC | 000000B8 | CEDILLA FD | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX FE | 000000E6 | LATIN SMALL LETTER AE FF | 000002C7 | CARON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACCYRILLIC.pm000644 000765 000024 00000064604 12716422334 022360 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACCYRILLIC. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACCYRILLIC; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x2202, 0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xd0\x86", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xd0\x82", "\xd1\x92", "\xe2\x89\xa0", "\xd0\x83", "\xd1\x93", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xd1\x96", "\xc2\xb5", "\xe2\x88\x82", "\xd0\x88", "\xd0\x84", "\xd1\x94", "\xd0\x87", "\xd1\x97", "\xd0\x89", "\xd1\x99", "\xd0\x8a", "\xd1\x9a", "\xd1\x98", "\xd0\x85", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xd0\x8b", "\xd1\x9b", "\xd0\x8c", "\xd1\x9c", "\xd1\x95", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x80\x9e", "\xd0\x8e", "\xd1\x9e", "\xd0\x8f", "\xd1\x9f", "\xe2\x84\x96", "\xd0\x81", "\xd1\x91", "\xd1\x8f", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xc2\xa4", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xff", 0x000000a7 => "\xa4", 0x000000a9 => "\xa9", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000bb => "\xc8", 0x000000f7 => "\xd6", 0x00000192 => "\xc4", 0x00000401 => "\xdd", 0x00000402 => "\xab", 0x00000403 => "\xae", 0x00000404 => "\xb8", 0x00000405 => "\xc1", 0x00000406 => "\xa7", 0x00000407 => "\xba", 0x00000408 => "\xb7", 0x00000409 => "\xbc", 0x0000040a => "\xbe", 0x0000040b => "\xcb", 0x0000040c => "\xcd", 0x0000040e => "\xd8", 0x0000040f => "\xda", 0x00000410 => "\x80", 0x00000411 => "\x81", 0x00000412 => "\x82", 0x00000413 => "\x83", 0x00000414 => "\x84", 0x00000415 => "\x85", 0x00000416 => "\x86", 0x00000417 => "\x87", 0x00000418 => "\x88", 0x00000419 => "\x89", 0x0000041a => "\x8a", 0x0000041b => "\x8b", 0x0000041c => "\x8c", 0x0000041d => "\x8d", 0x0000041e => "\x8e", 0x0000041f => "\x8f", 0x00000420 => "\x90", 0x00000421 => "\x91", 0x00000422 => "\x92", 0x00000423 => "\x93", 0x00000424 => "\x94", 0x00000425 => "\x95", 0x00000426 => "\x96", 0x00000427 => "\x97", 0x00000428 => "\x98", 0x00000429 => "\x99", 0x0000042a => "\x9a", 0x0000042b => "\x9b", 0x0000042c => "\x9c", 0x0000042d => "\x9d", 0x0000042e => "\x9e", 0x0000042f => "\x9f", 0x00000430 => "\xe0", 0x00000431 => "\xe1", 0x00000432 => "\xe2", 0x00000433 => "\xe3", 0x00000434 => "\xe4", 0x00000435 => "\xe5", 0x00000436 => "\xe6", 0x00000437 => "\xe7", 0x00000438 => "\xe8", 0x00000439 => "\xe9", 0x0000043a => "\xea", 0x0000043b => "\xeb", 0x0000043c => "\xec", 0x0000043d => "\xed", 0x0000043e => "\xee", 0x0000043f => "\xef", 0x00000440 => "\xf0", 0x00000441 => "\xf1", 0x00000442 => "\xf2", 0x00000443 => "\xf3", 0x00000444 => "\xf4", 0x00000445 => "\xf5", 0x00000446 => "\xf6", 0x00000447 => "\xf7", 0x00000448 => "\xf8", 0x00000449 => "\xf9", 0x0000044a => "\xfa", 0x0000044b => "\xfb", 0x0000044c => "\xfc", 0x0000044d => "\xfd", 0x0000044e => "\xfe", 0x0000044f => "\xdf", 0x00000451 => "\xde", 0x00000452 => "\xac", 0x00000453 => "\xaf", 0x00000454 => "\xb9", 0x00000455 => "\xcf", 0x00000456 => "\xb4", 0x00000457 => "\xbb", 0x00000458 => "\xc0", 0x00000459 => "\xbd", 0x0000045a => "\xbf", 0x0000045b => "\xcc", 0x0000045c => "\xce", 0x0000045e => "\xd9", 0x0000045f => "\xdb", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xd7", 0x00002020 => "\xa0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002116 => "\xdc", 0x00002122 => "\xaa", 0x00002202 => "\xb6", 0x00002206 => "\xc6", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACCYRILLIC - Conversion routines for MACCYRILLIC =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACCYRILLIC. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000410 | CYRILLIC CAPITAL LETTER A 81 | 00000411 | CYRILLIC CAPITAL LETTER BE 82 | 00000412 | CYRILLIC CAPITAL LETTER VE 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE 84 | 00000414 | CYRILLIC CAPITAL LETTER DE 85 | 00000415 | CYRILLIC CAPITAL LETTER IE 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE 88 | 00000418 | CYRILLIC CAPITAL LETTER I 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 8A | 0000041A | CYRILLIC CAPITAL LETTER KA 8B | 0000041B | CYRILLIC CAPITAL LETTER EL 8C | 0000041C | CYRILLIC CAPITAL LETTER EM 8D | 0000041D | CYRILLIC CAPITAL LETTER EN 8E | 0000041E | CYRILLIC CAPITAL LETTER O 8F | 0000041F | CYRILLIC CAPITAL LETTER PE 90 | 00000420 | CYRILLIC CAPITAL LETTER ER 91 | 00000421 | CYRILLIC CAPITAL LETTER ES 92 | 00000422 | CYRILLIC CAPITAL LETTER TE 93 | 00000423 | CYRILLIC CAPITAL LETTER U 94 | 00000424 | CYRILLIC CAPITAL LETTER EF 95 | 00000425 | CYRILLIC CAPITAL LETTER HA 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 9D | 0000042D | CYRILLIC CAPITAL LETTER E 9E | 0000042E | CYRILLIC CAPITAL LETTER YU 9F | 0000042F | CYRILLIC CAPITAL LETTER YA A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 00000402 | CYRILLIC CAPITAL LETTER DJE AC | 00000452 | CYRILLIC SMALL LETTER DJE AD | 00002260 | NOT EQUAL TO AE | 00000403 | CYRILLIC CAPITAL LETTER GJE AF | 00000453 | CYRILLIC SMALL LETTER GJE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00000408 | CYRILLIC CAPITAL LETTER JE B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE BA | 00000407 | CYRILLIC CAPITAL LETTER YI BB | 00000457 | CYRILLIC SMALL LETTER YI BC | 00000409 | CYRILLIC CAPITAL LETTER LJE BD | 00000459 | CYRILLIC SMALL LETTER LJE BE | 0000040A | CYRILLIC CAPITAL LETTER NJE BF | 0000045A | CYRILLIC SMALL LETTER NJE C0 | 00000458 | CYRILLIC SMALL LETTER JE C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE CC | 0000045B | CYRILLIC SMALL LETTER TSHE CD | 0000040C | CYRILLIC CAPITAL LETTER KJE CE | 0000045C | CYRILLIC SMALL LETTER KJE CF | 00000455 | CYRILLIC SMALL LETTER DZE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE DB | 0000045F | CYRILLIC SMALL LETTER DZHE DC | 00002116 | NUMERO SIGN DD | 00000401 | CYRILLIC CAPITAL LETTER IO DE | 00000451 | CYRILLIC SMALL LETTER IO DF | 0000044F | CYRILLIC SMALL LETTER YA E0 | 00000430 | CYRILLIC SMALL LETTER A E1 | 00000431 | CYRILLIC SMALL LETTER BE E2 | 00000432 | CYRILLIC SMALL LETTER VE E3 | 00000433 | CYRILLIC SMALL LETTER GHE E4 | 00000434 | CYRILLIC SMALL LETTER DE E5 | 00000435 | CYRILLIC SMALL LETTER IE E6 | 00000436 | CYRILLIC SMALL LETTER ZHE E7 | 00000437 | CYRILLIC SMALL LETTER ZE E8 | 00000438 | CYRILLIC SMALL LETTER I E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I EA | 0000043A | CYRILLIC SMALL LETTER KA EB | 0000043B | CYRILLIC SMALL LETTER EL EC | 0000043C | CYRILLIC SMALL LETTER EM ED | 0000043D | CYRILLIC SMALL LETTER EN EE | 0000043E | CYRILLIC SMALL LETTER O EF | 0000043F | CYRILLIC SMALL LETTER PE F0 | 00000440 | CYRILLIC SMALL LETTER ER F1 | 00000441 | CYRILLIC SMALL LETTER ES F2 | 00000442 | CYRILLIC SMALL LETTER TE F3 | 00000443 | CYRILLIC SMALL LETTER U F4 | 00000444 | CYRILLIC SMALL LETTER EF F5 | 00000445 | CYRILLIC SMALL LETTER HA F6 | 00000446 | CYRILLIC SMALL LETTER TSE F7 | 00000447 | CYRILLIC SMALL LETTER CHE F8 | 00000448 | CYRILLIC SMALL LETTER SHA F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN FB | 0000044B | CYRILLIC SMALL LETTER YERU FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN FD | 0000044D | CYRILLIC SMALL LETTER E FE | 0000044E | CYRILLIC SMALL LETTER YU FF | 000000A4 | CURRENCY SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACGREEK.pm000644 000765 000024 00000065045 12716422334 022003 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACGREEK. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACGREEK; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385, 0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd, 0x2030, 0x00f4, 0x00f6, 0x00a6, 0x00ad, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df, 0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x0387, 0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396, 0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9, 0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153, 0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389, 0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f, 0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3, 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf, 0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2, 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc2\xb9", "\xc2\xb2", "\xc3\x89", "\xc2\xb3", "\xc3\x96", "\xc3\x9c", "\xce\x85", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xce\x84", "\xc2\xa8", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc2\xa3", "\xe2\x84\xa2", "\xc3\xae", "\xc3\xaf", "\xe2\x80\xa2", "\xc2\xbd", "\xe2\x80\xb0", "\xc3\xb4", "\xc3\xb6", "\xc2\xa6", "\xc2\xad", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\xa0", "\xce\x93", "\xce\x94", "\xce\x98", "\xce\x9b", "\xce\x9e", "\xce\xa0", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xce\xa3", "\xce\xaa", "\xc2\xa7", "\xe2\x89\xa0", "\xc2\xb0", "\xce\x87", "\xce\x91", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa5", "\xce\x92", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x99", "\xce\x9a", "\xce\x9c", "\xce\xa6", "\xce\xab", "\xce\xa8", "\xce\xa9", "\xce\xac", "\xce\x9d", "\xc2\xac", "\xce\x9f", "\xce\xa1", "\xe2\x89\x88", "\xce\xa4", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xce\xa5", "\xce\xa7", "\xce\x86", "\xce\x88", "\xc5\x93", "\xe2\x80\x93", "\xe2\x80\x95", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xce\x89", "\xce\x8a", "\xce\x8c", "\xce\x8e", "\xce\xad", "\xce\xae", "\xce\xaf", "\xcf\x8c", "\xce\x8f", "\xcf\x8d", "\xce\xb1", "\xce\xb2", "\xcf\x88", "\xce\xb4", "\xce\xb5", "\xcf\x86", "\xce\xb3", "\xce\xb7", "\xce\xb9", "\xce\xbe", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbf", "\xcf\x80", "\xcf\x8e", "\xcf\x81", "\xcf\x83", "\xcf\x84", "\xce\xb8", "\xcf\x89", "\xcf\x82", "\xcf\x87", "\xcf\x85", "\xce\xb6", "\xcf\x8a", "\xcf\x8b", "\xce\x90", "\xce\xb0", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a3 => "\x92", 0x000000a5 => "\xb4", 0x000000a6 => "\x9b", 0x000000a7 => "\xac", 0x000000a8 => "\x8c", 0x000000a9 => "\xa9", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ad => "\x9c", 0x000000ae => "\xa8", 0x000000b0 => "\xae", 0x000000b1 => "\xb1", 0x000000b2 => "\x82", 0x000000b3 => "\x84", 0x000000b9 => "\x81", 0x000000bb => "\xc8", 0x000000bd => "\x97", 0x000000c4 => "\x80", 0x000000c9 => "\x83", 0x000000d6 => "\x85", 0x000000dc => "\x86", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e2 => "\x89", 0x000000e4 => "\x8a", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f4 => "\x99", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f9 => "\x9d", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x00000153 => "\xcf", 0x00000384 => "\x8b", 0x00000385 => "\x87", 0x00000386 => "\xcd", 0x00000387 => "\xaf", 0x00000388 => "\xce", 0x00000389 => "\xd7", 0x0000038a => "\xd8", 0x0000038c => "\xd9", 0x0000038e => "\xda", 0x0000038f => "\xdf", 0x00000390 => "\xfd", 0x00000391 => "\xb0", 0x00000392 => "\xb5", 0x00000393 => "\xa1", 0x00000394 => "\xa2", 0x00000395 => "\xb6", 0x00000396 => "\xb7", 0x00000397 => "\xb8", 0x00000398 => "\xa3", 0x00000399 => "\xb9", 0x0000039a => "\xba", 0x0000039b => "\xa4", 0x0000039c => "\xbb", 0x0000039d => "\xc1", 0x0000039e => "\xa5", 0x0000039f => "\xc3", 0x000003a0 => "\xa6", 0x000003a1 => "\xc4", 0x000003a3 => "\xaa", 0x000003a4 => "\xc6", 0x000003a5 => "\xcb", 0x000003a6 => "\xbc", 0x000003a7 => "\xcc", 0x000003a8 => "\xbe", 0x000003a9 => "\xbf", 0x000003aa => "\xab", 0x000003ab => "\xbd", 0x000003ac => "\xc0", 0x000003ad => "\xdb", 0x000003ae => "\xdc", 0x000003af => "\xdd", 0x000003b0 => "\xfe", 0x000003b1 => "\xe1", 0x000003b2 => "\xe2", 0x000003b3 => "\xe7", 0x000003b4 => "\xe4", 0x000003b5 => "\xe5", 0x000003b6 => "\xfa", 0x000003b7 => "\xe8", 0x000003b8 => "\xf5", 0x000003b9 => "\xe9", 0x000003ba => "\xeb", 0x000003bb => "\xec", 0x000003bc => "\xed", 0x000003bd => "\xee", 0x000003be => "\xea", 0x000003bf => "\xef", 0x000003c0 => "\xf0", 0x000003c1 => "\xf2", 0x000003c2 => "\xf7", 0x000003c3 => "\xf3", 0x000003c4 => "\xf4", 0x000003c5 => "\xf9", 0x000003c6 => "\xe6", 0x000003c7 => "\xf8", 0x000003c8 => "\xe3", 0x000003c9 => "\xf6", 0x000003ca => "\xfb", 0x000003cb => "\xfc", 0x000003cc => "\xde", 0x000003cd => "\xe0", 0x000003ce => "\xf1", 0x00002013 => "\xd0", 0x00002015 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x00002020 => "\xa0", 0x00002022 => "\x96", 0x00002026 => "\xc9", 0x00002030 => "\x98", 0x00002122 => "\x93", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACGREEK - Conversion routines for MACGREEK =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACGREEK. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000B9 | SUPERSCRIPT ONE 82 | 000000B2 | SUPERSCRIPT TWO 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000B3 | SUPERSCRIPT THREE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 00000385 | GREEK DIALYTIKA TONOS 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 00000384 | GREEK TONOS 8C | 000000A8 | DIAERESIS 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000A3 | POUND SIGN 93 | 00002122 | TRADE MARK SIGN 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 00002022 | BULLET 97 | 000000BD | VULGAR FRACTION ONE HALF 98 | 00002030 | PER MILLE SIGN 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000A6 | BROKEN BAR 9C | 000000AD | SOFT HYPHEN 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 00002020 | DAGGER A1 | 00000393 | GREEK CAPITAL LETTER GAMMA A2 | 00000394 | GREEK CAPITAL LETTER DELTA A3 | 00000398 | GREEK CAPITAL LETTER THETA A4 | 0000039B | GREEK CAPITAL LETTER LAMDA A5 | 0000039E | GREEK CAPITAL LETTER XI A6 | 000003A0 | GREEK CAPITAL LETTER PI A7 | 000000DF | LATIN SMALL LETTER SHARP S A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 000003A3 | GREEK CAPITAL LETTER SIGMA AB | 000003AA | GREEK CAPITAL LETTER IOTA WITH DIALYTIKA AC | 000000A7 | SECTION SIGN AD | 00002260 | NOT EQUAL TO AE | 000000B0 | DEGREE SIGN AF | 00000387 | GREEK ANO TELEIA B0 | 00000391 | GREEK CAPITAL LETTER ALPHA B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 000000A5 | YEN SIGN B5 | 00000392 | GREEK CAPITAL LETTER BETA B6 | 00000395 | GREEK CAPITAL LETTER EPSILON B7 | 00000396 | GREEK CAPITAL LETTER ZETA B8 | 00000397 | GREEK CAPITAL LETTER ETA B9 | 00000399 | GREEK CAPITAL LETTER IOTA BA | 0000039A | GREEK CAPITAL LETTER KAPPA BB | 0000039C | GREEK CAPITAL LETTER MU BC | 000003A6 | GREEK CAPITAL LETTER PHI BD | 000003AB | GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA BE | 000003A8 | GREEK CAPITAL LETTER PSI BF | 000003A9 | GREEK CAPITAL LETTER OMEGA C0 | 000003AC | GREEK SMALL LETTER ALPHA WITH TONOS C1 | 0000039D | GREEK CAPITAL LETTER NU C2 | 000000AC | NOT SIGN C3 | 0000039F | GREEK CAPITAL LETTER OMICRON C4 | 000003A1 | GREEK CAPITAL LETTER RHO C5 | 00002248 | ALMOST EQUAL TO C6 | 000003A4 | GREEK CAPITAL LETTER TAU C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000003A5 | GREEK CAPITAL LETTER UPSILON CC | 000003A7 | GREEK CAPITAL LETTER CHI CD | 00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS CE | 00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00002013 | EN DASH D1 | 00002015 | HORIZONTAL BAR D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 00000389 | GREEK CAPITAL LETTER ETA WITH TONOS D8 | 0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS D9 | 0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS DA | 0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS DB | 000003AD | GREEK SMALL LETTER EPSILON WITH TONOS DC | 000003AE | GREEK SMALL LETTER ETA WITH TONOS DD | 000003AF | GREEK SMALL LETTER IOTA WITH TONOS DE | 000003CC | GREEK SMALL LETTER OMICRON WITH TONOS DF | 0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS E0 | 000003CD | GREEK SMALL LETTER UPSILON WITH TONOS E1 | 000003B1 | GREEK SMALL LETTER ALPHA E2 | 000003B2 | GREEK SMALL LETTER BETA E3 | 000003C8 | GREEK SMALL LETTER PSI E4 | 000003B4 | GREEK SMALL LETTER DELTA E5 | 000003B5 | GREEK SMALL LETTER EPSILON E6 | 000003C6 | GREEK SMALL LETTER PHI E7 | 000003B3 | GREEK SMALL LETTER GAMMA E8 | 000003B7 | GREEK SMALL LETTER ETA E9 | 000003B9 | GREEK SMALL LETTER IOTA EA | 000003BE | GREEK SMALL LETTER XI EB | 000003BA | GREEK SMALL LETTER KAPPA EC | 000003BB | GREEK SMALL LETTER LAMDA ED | 000003BC | GREEK SMALL LETTER MU EE | 000003BD | GREEK SMALL LETTER NU EF | 000003BF | GREEK SMALL LETTER OMICRON F0 | 000003C0 | GREEK SMALL LETTER PI F1 | 000003CE | GREEK SMALL LETTER OMEGA WITH TONOS F2 | 000003C1 | GREEK SMALL LETTER RHO F3 | 000003C3 | GREEK SMALL LETTER SIGMA F4 | 000003C4 | GREEK SMALL LETTER TAU F5 | 000003B8 | GREEK SMALL LETTER THETA F6 | 000003C9 | GREEK SMALL LETTER OMEGA F7 | 000003C2 | GREEK SMALL LETTER FINAL SIGMA F8 | 000003C7 | GREEK SMALL LETTER CHI F9 | 000003C5 | GREEK SMALL LETTER UPSILON FA | 000003B6 | GREEK SMALL LETTER ZETA FB | 000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA FC | 000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA FD | 00000390 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS FE | 000003B0 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACHEBREW.pm000644 000765 000024 00000057277 12716422334 022132 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACHEBREW. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACHEBREW; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0xfb1f, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x20aa, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x201e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x05bc, 0xfb4b, 0xfb35, 0x2026, 0x00a0, 0x05b8, 0x05b7, 0x05b5, 0x05b6, 0x05b4, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xfb2a, 0xfb2b, 0x05bf, 0x05b0, 0x05b2, 0x05b1, 0x05bb, 0x05b9, 0xfffd, 0x05b3, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xef\xac\x9f", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x82\xaa", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x9e", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xd6\xbc", "\xef\xad\x8b", "\xef\xac\xb5", "\xe2\x80\xa6", "\xc2\xa0", "\xd6\xb8", "\xd6\xb7", "\xd6\xb5", "\xd6\xb6", "\xd6\xb4", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xef\xac\xaa", "\xef\xac\xab", "\xd6\xbf", "\xd6\xb0", "\xd6\xb2", "\xd6\xb1", "\xd6\xbb", "\xd6\xb9", "\xef\xbf\xbd", "\xd6\xb3", "\xd7\x90", "\xd7\x91", "\xd7\x92", "\xd7\x93", "\xd7\x94", "\xd7\x95", "\xd7\x96", "\xd7\x97", "\xd7\x98", "\xd7\x99", "\xd7\x9a", "\xd7\x9b", "\xd7\x9c", "\xd7\x9d", "\xd7\x9e", "\xd7\x9f", "\xd7\xa0", "\xd7\xa1", "\xd7\xa2", "\xd7\xa3", "\xd7\xa4", "\xd7\xa5", "\xd7\xa6", "\xd7\xa7", "\xd7\xa8", "\xd7\xa9", "\xd7\xaa", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000c4 => "\x80", 0x000000c7 => "\x82", 0x000000c9 => "\x83", 0x000000d1 => "\x84", 0x000000d6 => "\x85", 0x000000dc => "\x86", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000005b0 => "\xd9", 0x000005b1 => "\xdb", 0x000005b2 => "\xda", 0x000005b3 => "\xdf", 0x000005b4 => "\xcf", 0x000005b5 => "\xcd", 0x000005b6 => "\xce", 0x000005b7 => "\xcc", 0x000005b8 => "\xcb", 0x000005b9 => "\xdd", 0x000005bb => "\xdc", 0x000005bc => "\xc6", 0x000005bf => "\xd8", 0x000005d0 => "\xe0", 0x000005d1 => "\xe1", 0x000005d2 => "\xe2", 0x000005d3 => "\xe3", 0x000005d4 => "\xe4", 0x000005d5 => "\xe5", 0x000005d6 => "\xe6", 0x000005d7 => "\xe7", 0x000005d8 => "\xe8", 0x000005d9 => "\xe9", 0x000005da => "\xea", 0x000005db => "\xeb", 0x000005dc => "\xec", 0x000005dd => "\xed", 0x000005de => "\xee", 0x000005df => "\xef", 0x000005e0 => "\xf0", 0x000005e1 => "\xf1", 0x000005e2 => "\xf2", 0x000005e3 => "\xf3", 0x000005e4 => "\xf4", 0x000005e5 => "\xf5", 0x000005e6 => "\xf6", 0x000005e7 => "\xf7", 0x000005e8 => "\xf8", 0x000005e9 => "\xf9", 0x000005ea => "\xfa", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xc1", 0x00002026 => "\xc9", 0x000020aa => "\xa6", 0x0000fb1f => "\x81", 0x0000fb2a => "\xd6", 0x0000fb2b => "\xd7", 0x0000fb35 => "\xc8", 0x0000fb4b => "\xc7", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACHEBREW - Conversion routines for MACHEBREW =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACHEBREW. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 0000FB1F | HEBREW LIGATURE YIDDISH YOD YOD PATAH 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A6 | 000020AA | NEW SHEQEL SIGN C1 | 0000201E | DOUBLE LOW-9 QUOTATION MARK C6 | 000005BC | HEBREW POINT DAGESH OR MAPIQ C7 | 0000FB4B | HEBREW LETTER VAV WITH HOLAM C8 | 0000FB35 | HEBREW LETTER VAV WITH DAGESH C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000005B8 | HEBREW POINT QAMATS CC | 000005B7 | HEBREW POINT PATAH CD | 000005B5 | HEBREW POINT TSERE CE | 000005B6 | HEBREW POINT SEGOL CF | 000005B4 | HEBREW POINT HIRIQ D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 0000FB2A | HEBREW LETTER SHIN WITH SHIN DOT D7 | 0000FB2B | HEBREW LETTER SHIN WITH SIN DOT D8 | 000005BF | HEBREW POINT RAFE D9 | 000005B0 | HEBREW POINT SHEVA DA | 000005B2 | HEBREW POINT HATAF PATAH DB | 000005B1 | HEBREW POINT HATAF SEGOL DC | 000005BB | HEBREW POINT QUBUTS DD | 000005B9 | HEBREW POINT HOLAM DF | 000005B3 | HEBREW POINT HATAF QAMATS E0 | 000005D0 | HEBREW LETTER ALEF E1 | 000005D1 | HEBREW LETTER BET E2 | 000005D2 | HEBREW LETTER GIMEL E3 | 000005D3 | HEBREW LETTER DALET E4 | 000005D4 | HEBREW LETTER HE E5 | 000005D5 | HEBREW LETTER VAV E6 | 000005D6 | HEBREW LETTER ZAYIN E7 | 000005D7 | HEBREW LETTER HET E8 | 000005D8 | HEBREW LETTER TET E9 | 000005D9 | HEBREW LETTER YOD EA | 000005DA | HEBREW LETTER FINAL KAF EB | 000005DB | HEBREW LETTER KAF EC | 000005DC | HEBREW LETTER LAMED ED | 000005DD | HEBREW LETTER FINAL MEM EE | 000005DE | HEBREW LETTER MEM EF | 000005DF | HEBREW LETTER FINAL NUN F0 | 000005E0 | HEBREW LETTER NUN F1 | 000005E1 | HEBREW LETTER SAMEKH F2 | 000005E2 | HEBREW LETTER AYIN F3 | 000005E3 | HEBREW LETTER FINAL PE F4 | 000005E4 | HEBREW LETTER PE F5 | 000005E5 | HEBREW LETTER FINAL TSADI F6 | 000005E6 | HEBREW LETTER TSADI F7 | 000005E7 | HEBREW LETTER QOF F8 | 000005E8 | HEBREW LETTER RESH F9 | 000005E9 | HEBREW LETTER SHIN FA | 000005EA | HEBREW LETTER TAV =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACICELAND.pm000644 000765 000024 00000064655 12716422334 022213 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACICELAND. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACICELAND; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x00d0, 0x00f0, 0x00de, 0x00fe, 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xc3\x9d", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc3\x86", "\xc3\x98", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa5", "\xc2\xb5", "\xe2\x88\x82", "\xe2\x88\x91", "\xe2\x88\x8f", "\xcf\x80", "\xe2\x88\xab", "\xc2\xaa", "\xc2\xba", "\xe2\x84\xa6", "\xc3\xa6", "\xc3\xb8", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x8a", "\xc3\xbf", "\xc5\xb8", "\xe2\x81\x84", "\xc2\xa4", "\xc3\x90", "\xc3\xb0", "\xc3\x9e", "\xc3\xbe", "\xc3\xbd", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc3\x8a", "\xc3\x81", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xef\xbf\xbd", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc4\xb1", "\xcb\x86", "\xcb\x9c", "\xc2\xaf", "\xcb\x98", "\xcb\x99", "\xcb\x9a", "\xc2\xb8", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xdb", 0x000000a5 => "\xb4", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xa9", 0x000000aa => "\xbb", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000af => "\xf8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b4 => "\xab", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000b8 => "\xfc", 0x000000ba => "\xbc", 0x000000bb => "\xc8", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c6 => "\xae", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xe6", 0x000000cb => "\xe8", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d0 => "\xdc", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d8 => "\xaf", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000dd => "\xa0", 0x000000de => "\xde", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e6 => "\xbe", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f0 => "\xdd", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f8 => "\xbf", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000000fd => "\xe0", 0x000000fe => "\xdf", 0x000000ff => "\xd8", 0x00000131 => "\xf5", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x00000178 => "\xd9", 0x00000192 => "\xc4", 0x000002c6 => "\xf6", 0x000002c7 => "\xff", 0x000002d8 => "\xf9", 0x000002d9 => "\xfa", 0x000002da => "\xfb", 0x000002db => "\xfe", 0x000002dc => "\xf7", 0x000002dd => "\xfd", 0x000003c0 => "\xb9", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002044 => "\xda", 0x00002122 => "\xaa", 0x00002126 => "\xbd", 0x00002202 => "\xb6", 0x00002206 => "\xc6", 0x0000220f => "\xb8", 0x00002211 => "\xb7", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x0000222b => "\xba", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", 0x000025ca => "\xd7", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACICELAND - Conversion routines for MACICELAND =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACICELAND. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 000000C6 | LATIN CAPITAL LETTER AE AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 000000A5 | YEN SIGN B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00002211 | N-ARY SUMMATION B8 | 0000220F | N-ARY PRODUCT B9 | 000003C0 | GREEK SMALL LETTER PI BA | 0000222B | INTEGRAL BB | 000000AA | FEMININE ORDINAL INDICATOR BC | 000000BA | MASCULINE ORDINAL INDICATOR BD | 00002126 | OHM SIGN BE | 000000E6 | LATIN SMALL LETTER AE BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LIGATURE OE CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025CA | LOZENGE D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DA | 00002044 | FRACTION SLASH DB | 000000A4 | CURRENCY SIGN DC | 000000D0 | LATIN CAPITAL LETTER ETH DD | 000000F0 | LATIN SMALL LETTER ETH DE | 000000DE | LATIN CAPITAL LETTER THORN DF | 000000FE | LATIN SMALL LETTER THORN E0 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT F7 | 000002DC | SMALL TILDE F8 | 000000AF | MACRON F9 | 000002D8 | BREVE FA | 000002D9 | DOT ABOVE FB | 000002DA | RING ABOVE FC | 000000B8 | CEDILLA FD | 000002DD | DOUBLE ACUTE ACCENT FE | 000002DB | OGONEK FF | 000002C7 | CARON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACINTOSH.pm000644 000765 000024 00000065153 12716422334 022152 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACINTOSH. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACINTOSH; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0394, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0xe01e, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc3\x86", "\xc3\x98", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa5", "\xc2\xb5", "\xe2\x88\x82", "\xe2\x88\x91", "\xe2\x88\x8f", "\xcf\x80", "\xe2\x88\xab", "\xc2\xaa", "\xc2\xba", "\xce\xa9", "\xc3\xa6", "\xc3\xb8", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xce\x94", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x8a", "\xc3\xbf", "\xc5\xb8", "\xe2\x81\x84", "\xe2\x82\xac", "\xe2\x80\xb9", "\xe2\x80\xba", "\xef\xac\x81", "\xef\xac\x82", "\xe2\x80\xa1", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc3\x8a", "\xc3\x81", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xee\x80\x9e", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc4\xb1", "\xcb\x86", "\xcb\x9c", "\xc2\xaf", "\xcb\x98", "\xcb\x99", "\xcb\x9a", "\xc2\xb8", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a5 => "\xb4", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xa9", 0x000000aa => "\xbb", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000af => "\xf8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b4 => "\xab", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000b8 => "\xfc", 0x000000ba => "\xbc", 0x000000bb => "\xc8", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c6 => "\xae", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xe6", 0x000000cb => "\xe8", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d8 => "\xaf", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e6 => "\xbe", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f8 => "\xbf", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000000ff => "\xd8", 0x00000131 => "\xf5", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x00000178 => "\xd9", 0x00000192 => "\xc4", 0x000002c6 => "\xf6", 0x000002c7 => "\xff", 0x000002d8 => "\xf9", 0x000002d9 => "\xfa", 0x000002da => "\xfb", 0x000002db => "\xfe", 0x000002dc => "\xf7", 0x000002dd => "\xfd", 0x00000394 => "\xc6", 0x000003a9 => "\xbd", 0x000003c0 => "\xb9", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002020 => "\xa0", 0x00002021 => "\xe0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002039 => "\xdc", 0x0000203a => "\xdd", 0x00002044 => "\xda", 0x000020ac => "\xdb", 0x00002122 => "\xaa", 0x00002202 => "\xb6", 0x0000220f => "\xb8", 0x00002211 => "\xb7", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x0000222b => "\xba", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", 0x000025ca => "\xd7", 0x0000e01e => "\xf0", 0x0000fb01 => "\xde", 0x0000fb02 => "\xdf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACINTOSH - Conversion routines for MACINTOSH =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACINTOSH. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991 alias MAC Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S (German) A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 000000C6 | LATIN CAPITAL LETTER AE AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 000000A5 | YEN SIGN B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00002211 | N-ARY SUMMATION B8 | 0000220F | N-ARY PRODUCT B9 | 000003C0 | GREEK SMALL LETTER PI BA | 0000222B | INTEGRAL BB | 000000AA | FEMININE ORDINAL INDICATOR BC | 000000BA | MASCULINE ORDINAL INDICATOR BD | 000003A9 | GREEK CAPITAL LETTER OMEGA BE | 000000E6 | LATIN SMALL LETTER AE BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00000394 | GREEK CAPITAL LETTER DELTA C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LIGATURE OE CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025CA | LOZENGE D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DA | 00002044 | FRACTION SLASH DB | 000020AC | EURO SIGN DC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK DD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK DE | 0000FB01 | LATIN SMALL LIGATURE FI DF | 0000FB02 | LATIN SMALL LIGATURE FL E0 | 00002021 | DOUBLE DAGGER E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F0 | 0000E01E | APPLE LOGO (Macintosh_F0) F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT F7 | 000002DC | SMALL TILDE F8 | 000000AF | MACRON F9 | 000002D8 | BREVE FA | 000002D9 | DOT ABOVE (Mandarin Chinese light tone) FB | 000002DA | RING ABOVE FC | 000000B8 | CEDILLA FD | 000002DD | DOUBLE ACUTE ACCENT FE | 000002DB | OGONEK FF | 000002C7 | CARON (Mandarin Chinese third tone) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACROMANIA.pm000644 000765 000024 00000064735 12716422334 022241 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACROMANIA. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACROMANIA; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x0102, 0x015e, 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x0103, 0x015f, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0x0162, 0x0163, 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc4\x82", "\xc5\x9e", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa5", "\xc2\xb5", "\xe2\x88\x82", "\xe2\x88\x91", "\xe2\x88\x8f", "\xcf\x80", "\xe2\x88\xab", "\xc2\xaa", "\xc2\xba", "\xe2\x84\xa6", "\xc4\x83", "\xc5\x9f", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x8a", "\xc3\xbf", "\xc5\xb8", "\xe2\x81\x84", "\xc2\xa4", "\xe2\x80\xb9", "\xe2\x80\xba", "\xc5\xa2", "\xc5\xa3", "\xe2\x80\xa1", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc3\x8a", "\xc3\x81", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xef\xbf\xbd", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xc4\xb1", "\xcb\x86", "\xcb\x9c", "\xc2\xaf", "\xcb\x98", "\xcb\x99", "\xcb\x9a", "\xc2\xb8", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xdb", 0x000000a5 => "\xb4", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xa9", 0x000000aa => "\xbb", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000af => "\xf8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b4 => "\xab", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000b8 => "\xfc", 0x000000ba => "\xbc", 0x000000bb => "\xc8", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xe6", 0x000000cb => "\xe8", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000000ff => "\xd8", 0x00000102 => "\xae", 0x00000103 => "\xbe", 0x00000131 => "\xf5", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x0000015e => "\xaf", 0x0000015f => "\xbf", 0x00000162 => "\xde", 0x00000163 => "\xdf", 0x00000178 => "\xd9", 0x00000192 => "\xc4", 0x000002c6 => "\xf6", 0x000002c7 => "\xff", 0x000002d8 => "\xf9", 0x000002d9 => "\xfa", 0x000002da => "\xfb", 0x000002db => "\xfe", 0x000002dc => "\xf7", 0x000002dd => "\xfd", 0x000003c0 => "\xb9", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002020 => "\xa0", 0x00002021 => "\xe0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002039 => "\xdc", 0x0000203a => "\xdd", 0x00002044 => "\xda", 0x00002122 => "\xaa", 0x00002126 => "\xbd", 0x00002202 => "\xb6", 0x00002206 => "\xc6", 0x0000220f => "\xb8", 0x00002211 => "\xb7", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x0000222b => "\xba", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", 0x000025ca => "\xd7", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACROMANIA - Conversion routines for MACROMANIA =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACROMANIA. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 00000102 | LATIN CAPITAL LETTER A WITH BREVE AF | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 000000A5 | YEN SIGN B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00002211 | N-ARY SUMMATION B8 | 0000220F | N-ARY PRODUCT B9 | 000003C0 | GREEK SMALL LETTER PI BA | 0000222B | INTEGRAL BB | 000000AA | FEMININE ORDINAL INDICATOR BC | 000000BA | MASCULINE ORDINAL INDICATOR BD | 00002126 | OHM SIGN BE | 00000103 | LATIN SMALL LETTER A WITH BREVE BF | 0000015F | LATIN SMALL LETTER S WITH CEDILLA C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LIGATURE OE CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025CA | LOZENGE D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DA | 00002044 | FRACTION SLASH DB | 000000A4 | CURRENCY SIGN DC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK DD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK DE | 00000162 | LATIN CAPITAL LETTER T WITH CEDILLA DF | 00000163 | LATIN SMALL LETTER T WITH CEDILLA E0 | 00002021 | DOUBLE DAGGER E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT F7 | 000002DC | SMALL TILDE F8 | 000000AF | MACRON F9 | 000002D8 | BREVE FA | 000002D9 | DOT ABOVE FB | 000002DA | RING ABOVE FC | 000000B8 | CEDILLA FD | 000002DD | DOUBLE ACUTE ACCENT FE | 000002DB | OGONEK FF | 000002C7 | CARON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACTHAI.pm000644 000765 000024 00000063642 12716422334 021674 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACTHAI. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACTHAI; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00ab, 0x00bb, 0x2026, 0xf88c, 0xf88f, 0xf892, 0xf895, 0xf898, 0xf88b, 0xf88e, 0xf891, 0xf894, 0xf897, 0x201c, 0x201d, 0xf899, 0xfffd, 0x2022, 0xf884, 0xf889, 0xf885, 0xf886, 0xf887, 0xf888, 0xf88a, 0xf88d, 0xf890, 0xf893, 0xf896, 0x2018, 0x2019, 0xfffd, 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfeff, 0x200b, 0x2013, 0x2014, 0x0e3f, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x2122, 0x0e4f, 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x00ae, 0x00a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xef\xa2\x8c", "\xef\xa2\x8f", "\xef\xa2\x92", "\xef\xa2\x95", "\xef\xa2\x98", "\xef\xa2\x8b", "\xef\xa2\x8e", "\xef\xa2\x91", "\xef\xa2\x94", "\xef\xa2\x97", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xef\xa2\x99", "\xef\xbf\xbd", "\xe2\x80\xa2", "\xef\xa2\x84", "\xef\xa2\x89", "\xef\xa2\x85", "\xef\xa2\x86", "\xef\xa2\x87", "\xef\xa2\x88", "\xef\xa2\x8a", "\xef\xa2\x8d", "\xef\xa2\x90", "\xef\xa2\x93", "\xef\xa2\x96", "\xe2\x80\x98", "\xe2\x80\x99", "\xef\xbf\xbd", "\xc2\xa0", "\xe0\xb8\x81", "\xe0\xb8\x82", "\xe0\xb8\x83", "\xe0\xb8\x84", "\xe0\xb8\x85", "\xe0\xb8\x86", "\xe0\xb8\x87", "\xe0\xb8\x88", "\xe0\xb8\x89", "\xe0\xb8\x8a", "\xe0\xb8\x8b", "\xe0\xb8\x8c", "\xe0\xb8\x8d", "\xe0\xb8\x8e", "\xe0\xb8\x8f", "\xe0\xb8\x90", "\xe0\xb8\x91", "\xe0\xb8\x92", "\xe0\xb8\x93", "\xe0\xb8\x94", "\xe0\xb8\x95", "\xe0\xb8\x96", "\xe0\xb8\x97", "\xe0\xb8\x98", "\xe0\xb8\x99", "\xe0\xb8\x9a", "\xe0\xb8\x9b", "\xe0\xb8\x9c", "\xe0\xb8\x9d", "\xe0\xb8\x9e", "\xe0\xb8\x9f", "\xe0\xb8\xa0", "\xe0\xb8\xa1", "\xe0\xb8\xa2", "\xe0\xb8\xa3", "\xe0\xb8\xa4", "\xe0\xb8\xa5", "\xe0\xb8\xa6", "\xe0\xb8\xa7", "\xe0\xb8\xa8", "\xe0\xb8\xa9", "\xe0\xb8\xaa", "\xe0\xb8\xab", "\xe0\xb8\xac", "\xe0\xb8\xad", "\xe0\xb8\xae", "\xe0\xb8\xaf", "\xe0\xb8\xb0", "\xe0\xb8\xb1", "\xe0\xb8\xb2", "\xe0\xb8\xb3", "\xe0\xb8\xb4", "\xe0\xb8\xb5", "\xe0\xb8\xb6", "\xe0\xb8\xb7", "\xe0\xb8\xb8", "\xe0\xb8\xb9", "\xe0\xb8\xba", "\xef\xbb\xbf", "\xe2\x80\x8b", "\xe2\x80\x93", "\xe2\x80\x94", "\xe0\xb8\xbf", "\xe0\xb9\x80", "\xe0\xb9\x81", "\xe0\xb9\x82", "\xe0\xb9\x83", "\xe0\xb9\x84", "\xe0\xb9\x85", "\xe0\xb9\x86", "\xe0\xb9\x87", "\xe0\xb9\x88", "\xe0\xb9\x89", "\xe0\xb9\x8a", "\xe0\xb9\x8b", "\xe0\xb9\x8c", "\xe0\xb9\x8d", "\xe2\x84\xa2", "\xe0\xb9\x8f", "\xe0\xb9\x90", "\xe0\xb9\x91", "\xe0\xb9\x92", "\xe0\xb9\x93", "\xe0\xb9\x94", "\xe0\xb9\x95", "\xe0\xb9\x96", "\xe0\xb9\x97", "\xe0\xb9\x98", "\xe0\xb9\x99", "\xc2\xae", "\xc2\xa9", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a9 => "\xfb", 0x000000ab => "\x80", 0x000000ae => "\xfa", 0x000000bb => "\x81", 0x00000e01 => "\xa1", 0x00000e02 => "\xa2", 0x00000e03 => "\xa3", 0x00000e04 => "\xa4", 0x00000e05 => "\xa5", 0x00000e06 => "\xa6", 0x00000e07 => "\xa7", 0x00000e08 => "\xa8", 0x00000e09 => "\xa9", 0x00000e0a => "\xaa", 0x00000e0b => "\xab", 0x00000e0c => "\xac", 0x00000e0d => "\xad", 0x00000e0e => "\xae", 0x00000e0f => "\xaf", 0x00000e10 => "\xb0", 0x00000e11 => "\xb1", 0x00000e12 => "\xb2", 0x00000e13 => "\xb3", 0x00000e14 => "\xb4", 0x00000e15 => "\xb5", 0x00000e16 => "\xb6", 0x00000e17 => "\xb7", 0x00000e18 => "\xb8", 0x00000e19 => "\xb9", 0x00000e1a => "\xba", 0x00000e1b => "\xbb", 0x00000e1c => "\xbc", 0x00000e1d => "\xbd", 0x00000e1e => "\xbe", 0x00000e1f => "\xbf", 0x00000e20 => "\xc0", 0x00000e21 => "\xc1", 0x00000e22 => "\xc2", 0x00000e23 => "\xc3", 0x00000e24 => "\xc4", 0x00000e25 => "\xc5", 0x00000e26 => "\xc6", 0x00000e27 => "\xc7", 0x00000e28 => "\xc8", 0x00000e29 => "\xc9", 0x00000e2a => "\xca", 0x00000e2b => "\xcb", 0x00000e2c => "\xcc", 0x00000e2d => "\xcd", 0x00000e2e => "\xce", 0x00000e2f => "\xcf", 0x00000e30 => "\xd0", 0x00000e31 => "\xd1", 0x00000e32 => "\xd2", 0x00000e33 => "\xd3", 0x00000e34 => "\xd4", 0x00000e35 => "\xd5", 0x00000e36 => "\xd6", 0x00000e37 => "\xd7", 0x00000e38 => "\xd8", 0x00000e39 => "\xd9", 0x00000e3a => "\xda", 0x00000e3f => "\xdf", 0x00000e40 => "\xe0", 0x00000e41 => "\xe1", 0x00000e42 => "\xe2", 0x00000e43 => "\xe3", 0x00000e44 => "\xe4", 0x00000e45 => "\xe5", 0x00000e46 => "\xe6", 0x00000e47 => "\xe7", 0x00000e48 => "\xe8", 0x00000e49 => "\xe9", 0x00000e4a => "\xea", 0x00000e4b => "\xeb", 0x00000e4c => "\xec", 0x00000e4d => "\xed", 0x00000e4f => "\xef", 0x00000e50 => "\xf0", 0x00000e51 => "\xf1", 0x00000e52 => "\xf2", 0x00000e53 => "\xf3", 0x00000e54 => "\xf4", 0x00000e55 => "\xf5", 0x00000e56 => "\xf6", 0x00000e57 => "\xf7", 0x00000e58 => "\xf8", 0x00000e59 => "\xf9", 0x0000200b => "\xdc", 0x00002013 => "\xdd", 0x00002014 => "\xde", 0x00002018 => "\x9d", 0x00002019 => "\x9e", 0x0000201c => "\x8d", 0x0000201d => "\x8e", 0x00002022 => "\x91", 0x00002026 => "\x82", 0x00002122 => "\xee", 0x0000f884 => "\x92", 0x0000f885 => "\x94", 0x0000f886 => "\x95", 0x0000f887 => "\x96", 0x0000f888 => "\x97", 0x0000f889 => "\x93", 0x0000f88a => "\x98", 0x0000f88b => "\x88", 0x0000f88c => "\x83", 0x0000f88d => "\x99", 0x0000f88e => "\x89", 0x0000f88f => "\x84", 0x0000f890 => "\x9a", 0x0000f891 => "\x8a", 0x0000f892 => "\x85", 0x0000f893 => "\x9b", 0x0000f894 => "\x8b", 0x0000f895 => "\x86", 0x0000f896 => "\x9c", 0x0000f897 => "\x8c", 0x0000f898 => "\x87", 0x0000f899 => "\x8f", 0x0000feff => "\xdb", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACTHAI - Conversion routines for MACTHAI =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACTHAI. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 81 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 82 | 00002026 | HORIZONTAL ELLIPSIS 83 | 0000F88C | ECJKE 84 | 0000F88F | ECJKE 85 | 0000F892 | ECJKE 86 | 0000F895 | ECJKE 87 | 0000F898 | ECJKE 88 | 0000F88B | ECJKE 89 | 0000F88E | ECJKE 8A | 0000F891 | ECJKE 8B | 0000F894 | ECJKE 8C | 0000F897 | ECJKE 8D | 0000201C | LEFT DOUBLE QUOTATION MARK 8E | 0000201D | RIGHT DOUBLE QUOTATION MARK 8F | 0000F899 | ECJKE 91 | 00002022 | BULLET 92 | 0000F884 | ECJKE 93 | 0000F889 | ECJKE 94 | 0000F885 | ECJKE 95 | 0000F886 | ECJKE 96 | 0000F887 | ECJKE 97 | 0000F888 | ECJKE 98 | 0000F88A | ECJKE 99 | 0000F88D | ECJKE 9A | 0000F890 | ECJKE 9B | 0000F893 | ECJKE 9C | 0000F896 | ECJKE 9D | 00002018 | LEFT SINGLE QUOTATION MARK 9E | 00002019 | RIGHT SINGLE QUOTATION MARK A0 | 000000A0 | NO-BREAK SPACE A1 | 00000E01 | THAI CHARACTER KO KAI A2 | 00000E02 | THAI CHARACTER KHO KHAI A3 | 00000E03 | THAI CHARACTER KHO KHUAT A4 | 00000E04 | THAI CHARACTER KHO KHWAI A5 | 00000E05 | THAI CHARACTER KHO KHON A6 | 00000E06 | THAI CHARACTER KHO RAKHANG A7 | 00000E07 | THAI CHARACTER NGO NGU A8 | 00000E08 | THAI CHARACTER CHO CHAN A9 | 00000E09 | THAI CHARACTER CHO CHING AA | 00000E0A | THAI CHARACTER CHO CHANG AB | 00000E0B | THAI CHARACTER SO SO AC | 00000E0C | THAI CHARACTER CHO CHOE AD | 00000E0D | THAI CHARACTER YO YING AE | 00000E0E | THAI CHARACTER DO CHADA AF | 00000E0F | THAI CHARACTER TO PATAK B0 | 00000E10 | THAI CHARACTER THO THAN B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO B2 | 00000E12 | THAI CHARACTER THO PHUTHAO B3 | 00000E13 | THAI CHARACTER NO NEN B4 | 00000E14 | THAI CHARACTER DO DEK B5 | 00000E15 | THAI CHARACTER TO TAO B6 | 00000E16 | THAI CHARACTER THO THUNG B7 | 00000E17 | THAI CHARACTER THO THAHAN B8 | 00000E18 | THAI CHARACTER THO THONG B9 | 00000E19 | THAI CHARACTER NO NU BA | 00000E1A | THAI CHARACTER BO BAIMAI BB | 00000E1B | THAI CHARACTER PO PLA BC | 00000E1C | THAI CHARACTER PHO PHUNG BD | 00000E1D | THAI CHARACTER FO FA BE | 00000E1E | THAI CHARACTER PHO PHAN BF | 00000E1F | THAI CHARACTER FO FAN C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO C1 | 00000E21 | THAI CHARACTER MO MA C2 | 00000E22 | THAI CHARACTER YO YAK C3 | 00000E23 | THAI CHARACTER RO RUA C4 | 00000E24 | THAI CHARACTER RU C5 | 00000E25 | THAI CHARACTER LO LING C6 | 00000E26 | THAI CHARACTER LU C7 | 00000E27 | THAI CHARACTER WO WAEN C8 | 00000E28 | THAI CHARACTER SO SALA C9 | 00000E29 | THAI CHARACTER SO RUSI CA | 00000E2A | THAI CHARACTER SO SUA CB | 00000E2B | THAI CHARACTER HO HIP CC | 00000E2C | THAI CHARACTER LO CHULA CD | 00000E2D | THAI CHARACTER O ANG CE | 00000E2E | THAI CHARACTER HO NOKHUK CF | 00000E2F | THAI CHARACTER PAIYANNOI D0 | 00000E30 | THAI CHARACTER SARA A D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT D2 | 00000E32 | THAI CHARACTER SARA AA D3 | 00000E33 | THAI CHARACTER SARA AM D4 | 00000E34 | THAI CHARACTER SARA I D5 | 00000E35 | THAI CHARACTER SARA II D6 | 00000E36 | THAI CHARACTER SARA UE D7 | 00000E37 | THAI CHARACTER SARA UEE D8 | 00000E38 | THAI CHARACTER SARA U D9 | 00000E39 | THAI CHARACTER SARA UU DA | 00000E3A | THAI CHARACTER PHINTHU DB | 0000FEFF | ZERO WIDTH NO-BREAK SPACE DC | 0000200B | ZERO WIDTH SPACE DD | 00002013 | EN DASH DE | 00002014 | EM DASH DF | 00000E3F | THAI CURRENCY SYMBOL BAHT E0 | 00000E40 | THAI CHARACTER SARA E E1 | 00000E41 | THAI CHARACTER SARA AE E2 | 00000E42 | THAI CHARACTER SARA O E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO E6 | 00000E46 | THAI CHARACTER MAIYAMOK E7 | 00000E47 | THAI CHARACTER MAITAIKHU E8 | 00000E48 | THAI CHARACTER MAI EK E9 | 00000E49 | THAI CHARACTER MAI THO EA | 00000E4A | THAI CHARACTER MAI TRI EB | 00000E4B | THAI CHARACTER MAI CHATTAWA EC | 00000E4C | THAI CHARACTER THANTHAKHAT ED | 00000E4D | THAI CHARACTER NIKHAHIT EE | 00002122 | TRADE MARK SIGN EF | 00000E4F | THAI CHARACTER FONGMAN F0 | 00000E50 | THAI DIGIT ZERO F1 | 00000E51 | THAI DIGIT ONE F2 | 00000E52 | THAI DIGIT TWO F3 | 00000E53 | THAI DIGIT THREE F4 | 00000E54 | THAI DIGIT FOUR F5 | 00000E55 | THAI DIGIT FIVE F6 | 00000E56 | THAI DIGIT SIX F7 | 00000E57 | THAI DIGIT SEVEN F8 | 00000E58 | THAI DIGIT EIGHT F9 | 00000E59 | THAI DIGIT NINE FA | 000000AE | REGISTERED SIGN FB | 000000A9 | COPYRIGHT SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACTURKISH.pm000644 000765 000024 00000064606 12716422334 022301 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACTURKISH. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACTURKISH; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8, 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x011e, 0x011f, 0x0130, 0x0131, 0x015e, 0x015f, 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0xfffd, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x89", "\xc3\x91", "\xc3\x96", "\xc3\x9c", "\xc3\xa1", "\xc3\xa0", "\xc3\xa2", "\xc3\xa4", "\xc3\xa3", "\xc3\xa5", "\xc3\xa7", "\xc3\xa9", "\xc3\xa8", "\xc3\xaa", "\xc3\xab", "\xc3\xad", "\xc3\xac", "\xc3\xae", "\xc3\xaf", "\xc3\xb1", "\xc3\xb3", "\xc3\xb2", "\xc3\xb4", "\xc3\xb6", "\xc3\xb5", "\xc3\xba", "\xc3\xb9", "\xc3\xbb", "\xc3\xbc", "\xe2\x80\xa0", "\xc2\xb0", "\xc2\xa2", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xc3\x9f", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xc2\xb4", "\xc2\xa8", "\xe2\x89\xa0", "\xc3\x86", "\xc3\x98", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xc2\xa5", "\xc2\xb5", "\xe2\x88\x82", "\xe2\x88\x91", "\xe2\x88\x8f", "\xcf\x80", "\xe2\x88\xab", "\xc2\xaa", "\xc2\xba", "\xe2\x84\xa6", "\xc3\xa6", "\xc3\xb8", "\xc2\xbf", "\xc2\xa1", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xc3\x80", "\xc3\x83", "\xc3\x95", "\xc5\x92", "\xc5\x93", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x97\x8a", "\xc3\xbf", "\xc5\xb8", "\xc4\x9e", "\xc4\x9f", "\xc4\xb0", "\xc4\xb1", "\xc5\x9e", "\xc5\x9f", "\xe2\x80\xa1", "\xc2\xb7", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\xb0", "\xc3\x82", "\xc3\x8a", "\xc3\x81", "\xc3\x8b", "\xc3\x88", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x8c", "\xc3\x93", "\xc3\x94", "\xef\xbf\xbd", "\xc3\x92", "\xc3\x9a", "\xc3\x9b", "\xc3\x99", "\xef\xbf\xbd", "\xcb\x86", "\xcb\x9c", "\xc2\xaf", "\xcb\x98", "\xcb\x99", "\xcb\x9a", "\xc2\xb8", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a1 => "\xc1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a5 => "\xb4", 0x000000a7 => "\xa4", 0x000000a8 => "\xac", 0x000000a9 => "\xa9", 0x000000aa => "\xbb", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000af => "\xf8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b4 => "\xab", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000b7 => "\xe1", 0x000000b8 => "\xfc", 0x000000ba => "\xbc", 0x000000bb => "\xc8", 0x000000bf => "\xc0", 0x000000c0 => "\xcb", 0x000000c1 => "\xe7", 0x000000c2 => "\xe5", 0x000000c3 => "\xcc", 0x000000c4 => "\x80", 0x000000c5 => "\x81", 0x000000c6 => "\xae", 0x000000c7 => "\x82", 0x000000c8 => "\xe9", 0x000000c9 => "\x83", 0x000000ca => "\xe6", 0x000000cb => "\xe8", 0x000000cc => "\xed", 0x000000cd => "\xea", 0x000000ce => "\xeb", 0x000000cf => "\xec", 0x000000d1 => "\x84", 0x000000d2 => "\xf1", 0x000000d3 => "\xee", 0x000000d4 => "\xef", 0x000000d5 => "\xcd", 0x000000d6 => "\x85", 0x000000d8 => "\xaf", 0x000000d9 => "\xf4", 0x000000da => "\xf2", 0x000000db => "\xf3", 0x000000dc => "\x86", 0x000000df => "\xa7", 0x000000e0 => "\x88", 0x000000e1 => "\x87", 0x000000e2 => "\x89", 0x000000e3 => "\x8b", 0x000000e4 => "\x8a", 0x000000e5 => "\x8c", 0x000000e6 => "\xbe", 0x000000e7 => "\x8d", 0x000000e8 => "\x8f", 0x000000e9 => "\x8e", 0x000000ea => "\x90", 0x000000eb => "\x91", 0x000000ec => "\x93", 0x000000ed => "\x92", 0x000000ee => "\x94", 0x000000ef => "\x95", 0x000000f1 => "\x96", 0x000000f2 => "\x98", 0x000000f3 => "\x97", 0x000000f4 => "\x99", 0x000000f5 => "\x9b", 0x000000f6 => "\x9a", 0x000000f7 => "\xd6", 0x000000f8 => "\xbf", 0x000000f9 => "\x9d", 0x000000fa => "\x9c", 0x000000fb => "\x9e", 0x000000fc => "\x9f", 0x000000ff => "\xd8", 0x0000011e => "\xda", 0x0000011f => "\xdb", 0x00000130 => "\xdc", 0x00000131 => "\xdd", 0x00000152 => "\xce", 0x00000153 => "\xcf", 0x0000015e => "\xde", 0x0000015f => "\xdf", 0x00000178 => "\xd9", 0x00000192 => "\xc4", 0x000002c6 => "\xf6", 0x000002c7 => "\xff", 0x000002d8 => "\xf9", 0x000002d9 => "\xfa", 0x000002da => "\xfb", 0x000002db => "\xfe", 0x000002dc => "\xf7", 0x000002dd => "\xfd", 0x000003c0 => "\xb9", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201a => "\xe2", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xe3", 0x00002020 => "\xa0", 0x00002021 => "\xe0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002030 => "\xe4", 0x00002122 => "\xaa", 0x00002126 => "\xbd", 0x00002202 => "\xb6", 0x00002206 => "\xc6", 0x0000220f => "\xb8", 0x00002211 => "\xb7", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x0000222b => "\xba", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", 0x000025ca => "\xd7", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACTURKISH - Conversion routines for MACTURKISH =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACTURKISH. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 81 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 82 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 83 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 84 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 85 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 86 | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 87 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE 88 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE 89 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX 8A | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 8B | 000000E3 | LATIN SMALL LETTER A WITH TILDE 8C | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 8D | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA 8E | 000000E9 | LATIN SMALL LETTER E WITH ACUTE 8F | 000000E8 | LATIN SMALL LETTER E WITH GRAVE 90 | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX 91 | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS 92 | 000000ED | LATIN SMALL LETTER I WITH ACUTE 93 | 000000EC | LATIN SMALL LETTER I WITH GRAVE 94 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX 95 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS 96 | 000000F1 | LATIN SMALL LETTER N WITH TILDE 97 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE 98 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE 99 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX 9A | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 9B | 000000F5 | LATIN SMALL LETTER O WITH TILDE 9C | 000000FA | LATIN SMALL LETTER U WITH ACUTE 9D | 000000F9 | LATIN SMALL LETTER U WITH GRAVE 9E | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX 9F | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 000000DF | LATIN SMALL LETTER SHARP S A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 000000B4 | ACUTE ACCENT AC | 000000A8 | DIAERESIS AD | 00002260 | NOT EQUAL TO AE | 000000C6 | LATIN CAPITAL LETTER AE AF | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 000000A5 | YEN SIGN B5 | 000000B5 | MICRO SIGN B6 | 00002202 | PARTIAL DIFFERENTIAL B7 | 00002211 | N-ARY SUMMATION B8 | 0000220F | N-ARY PRODUCT B9 | 000003C0 | GREEK SMALL LETTER PI BA | 0000222B | INTEGRAL BB | 000000AA | FEMININE ORDINAL INDICATOR BC | 000000BA | MASCULINE ORDINAL INDICATOR BD | 00002126 | OHM SIGN BE | 000000E6 | LATIN SMALL LETTER AE BF | 000000F8 | LATIN SMALL LETTER O WITH STROKE C0 | 000000BF | INVERTED QUESTION MARK C1 | 000000A1 | INVERTED EXCLAMATION MARK C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE CC | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE CD | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE CE | 00000152 | LATIN CAPITAL LIGATURE OE CF | 00000153 | LATIN SMALL LIGATURE OE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 000025CA | LOZENGE D8 | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS D9 | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS DA | 0000011E | LATIN CAPITAL LETTER G WITH BREVE DB | 0000011F | LATIN SMALL LETTER G WITH BREVE DC | 00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE DD | 00000131 | LATIN SMALL LETTER DOTLESS I DE | 0000015E | LATIN CAPITAL LETTER S WITH CEDILLA DF | 0000015F | LATIN SMALL LETTER S WITH CEDILLA E0 | 00002021 | DOUBLE DAGGER E1 | 000000B7 | MIDDLE DOT E2 | 0000201A | SINGLE LOW-9 QUOTATION MARK E3 | 0000201E | DOUBLE LOW-9 QUOTATION MARK E4 | 00002030 | PER MILLE SIGN E5 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX E6 | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX E7 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE E8 | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS E9 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE EA | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE EB | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX EC | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS ED | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE EF | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX F1 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE F2 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE F3 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX F4 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE F6 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT F7 | 000002DC | SMALL TILDE F8 | 000000AF | MACRON F9 | 000002D8 | BREVE FA | 000002D9 | DOT ABOVE FB | 000002DA | RING ABOVE FC | 000000B8 | CEDILLA FD | 000002DD | DOUBLE ACUTE ACCENT FE | 000002DB | OGONEK FF | 000002C7 | CARON =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/MACUKRAINE.pm000644 000765 000024 00000064652 12716422334 022247 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for MACUKRAINE. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::MACUKRAINE; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xd0\x90", "\xd0\x91", "\xd0\x92", "\xd0\x93", "\xd0\x94", "\xd0\x95", "\xd0\x96", "\xd0\x97", "\xd0\x98", "\xd0\x99", "\xd0\x9a", "\xd0\x9b", "\xd0\x9c", "\xd0\x9d", "\xd0\x9e", "\xd0\x9f", "\xd0\xa0", "\xd0\xa1", "\xd0\xa2", "\xd0\xa3", "\xd0\xa4", "\xd0\xa5", "\xd0\xa6", "\xd0\xa7", "\xd0\xa8", "\xd0\xa9", "\xd0\xaa", "\xd0\xab", "\xd0\xac", "\xd0\xad", "\xd0\xae", "\xd0\xaf", "\xe2\x80\xa0", "\xc2\xb0", "\xd2\x90", "\xc2\xa3", "\xc2\xa7", "\xe2\x80\xa2", "\xc2\xb6", "\xd0\x86", "\xc2\xae", "\xc2\xa9", "\xe2\x84\xa2", "\xd0\x82", "\xd1\x92", "\xe2\x89\xa0", "\xd0\x83", "\xd1\x93", "\xe2\x88\x9e", "\xc2\xb1", "\xe2\x89\xa4", "\xe2\x89\xa5", "\xd1\x96", "\xc2\xb5", "\xd2\x91", "\xd0\x88", "\xd0\x84", "\xd1\x94", "\xd0\x87", "\xd1\x97", "\xd0\x89", "\xd1\x99", "\xd0\x8a", "\xd1\x9a", "\xd1\x98", "\xd0\x85", "\xc2\xac", "\xe2\x88\x9a", "\xc6\x92", "\xe2\x89\x88", "\xe2\x88\x86", "\xc2\xab", "\xc2\xbb", "\xe2\x80\xa6", "\xc2\xa0", "\xd0\x8b", "\xd1\x9b", "\xd0\x8c", "\xd1\x9c", "\xd1\x95", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99", "\xc3\xb7", "\xe2\x80\x9e", "\xd0\x8e", "\xd1\x9e", "\xd0\x8f", "\xd1\x9f", "\xe2\x84\x96", "\xd0\x81", "\xd1\x91", "\xd1\x8f", "\xd0\xb0", "\xd0\xb1", "\xd0\xb2", "\xd0\xb3", "\xd0\xb4", "\xd0\xb5", "\xd0\xb6", "\xd0\xb7", "\xd0\xb8", "\xd0\xb9", "\xd0\xba", "\xd0\xbb", "\xd0\xbc", "\xd0\xbd", "\xd0\xbe", "\xd0\xbf", "\xd1\x80", "\xd1\x81", "\xd1\x82", "\xd1\x83", "\xd1\x84", "\xd1\x85", "\xd1\x86", "\xd1\x87", "\xd1\x88", "\xd1\x89", "\xd1\x8a", "\xd1\x8b", "\xd1\x8c", "\xd1\x8d", "\xd1\x8e", "\xc2\xa4", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xca", 0x000000a3 => "\xa3", 0x000000a4 => "\xff", 0x000000a7 => "\xa4", 0x000000a9 => "\xa9", 0x000000ab => "\xc7", 0x000000ac => "\xc2", 0x000000ae => "\xa8", 0x000000b0 => "\xa1", 0x000000b1 => "\xb1", 0x000000b5 => "\xb5", 0x000000b6 => "\xa6", 0x000000bb => "\xc8", 0x000000f7 => "\xd6", 0x00000192 => "\xc4", 0x00000401 => "\xdd", 0x00000402 => "\xab", 0x00000403 => "\xae", 0x00000404 => "\xb8", 0x00000405 => "\xc1", 0x00000406 => "\xa7", 0x00000407 => "\xba", 0x00000408 => "\xb7", 0x00000409 => "\xbc", 0x0000040a => "\xbe", 0x0000040b => "\xcb", 0x0000040c => "\xcd", 0x0000040e => "\xd8", 0x0000040f => "\xda", 0x00000410 => "\x80", 0x00000411 => "\x81", 0x00000412 => "\x82", 0x00000413 => "\x83", 0x00000414 => "\x84", 0x00000415 => "\x85", 0x00000416 => "\x86", 0x00000417 => "\x87", 0x00000418 => "\x88", 0x00000419 => "\x89", 0x0000041a => "\x8a", 0x0000041b => "\x8b", 0x0000041c => "\x8c", 0x0000041d => "\x8d", 0x0000041e => "\x8e", 0x0000041f => "\x8f", 0x00000420 => "\x90", 0x00000421 => "\x91", 0x00000422 => "\x92", 0x00000423 => "\x93", 0x00000424 => "\x94", 0x00000425 => "\x95", 0x00000426 => "\x96", 0x00000427 => "\x97", 0x00000428 => "\x98", 0x00000429 => "\x99", 0x0000042a => "\x9a", 0x0000042b => "\x9b", 0x0000042c => "\x9c", 0x0000042d => "\x9d", 0x0000042e => "\x9e", 0x0000042f => "\x9f", 0x00000430 => "\xe0", 0x00000431 => "\xe1", 0x00000432 => "\xe2", 0x00000433 => "\xe3", 0x00000434 => "\xe4", 0x00000435 => "\xe5", 0x00000436 => "\xe6", 0x00000437 => "\xe7", 0x00000438 => "\xe8", 0x00000439 => "\xe9", 0x0000043a => "\xea", 0x0000043b => "\xeb", 0x0000043c => "\xec", 0x0000043d => "\xed", 0x0000043e => "\xee", 0x0000043f => "\xef", 0x00000440 => "\xf0", 0x00000441 => "\xf1", 0x00000442 => "\xf2", 0x00000443 => "\xf3", 0x00000444 => "\xf4", 0x00000445 => "\xf5", 0x00000446 => "\xf6", 0x00000447 => "\xf7", 0x00000448 => "\xf8", 0x00000449 => "\xf9", 0x0000044a => "\xfa", 0x0000044b => "\xfb", 0x0000044c => "\xfc", 0x0000044d => "\xfd", 0x0000044e => "\xfe", 0x0000044f => "\xdf", 0x00000451 => "\xde", 0x00000452 => "\xac", 0x00000453 => "\xaf", 0x00000454 => "\xb9", 0x00000455 => "\xcf", 0x00000456 => "\xb4", 0x00000457 => "\xbb", 0x00000458 => "\xc0", 0x00000459 => "\xbd", 0x0000045a => "\xbf", 0x0000045b => "\xcc", 0x0000045c => "\xce", 0x0000045e => "\xd9", 0x0000045f => "\xdb", 0x00000490 => "\xa2", 0x00000491 => "\xb6", 0x00002013 => "\xd0", 0x00002014 => "\xd1", 0x00002018 => "\xd4", 0x00002019 => "\xd5", 0x0000201c => "\xd2", 0x0000201d => "\xd3", 0x0000201e => "\xd7", 0x00002020 => "\xa0", 0x00002022 => "\xa5", 0x00002026 => "\xc9", 0x00002116 => "\xdc", 0x00002122 => "\xaa", 0x00002206 => "\xc6", 0x0000221a => "\xc3", 0x0000221e => "\xb0", 0x00002248 => "\xc5", 0x00002260 => "\xad", 0x00002264 => "\xb2", 0x00002265 => "\xb3", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::MACUKRAINE - Conversion routines for MACUKRAINE =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for MACUKRAINE. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00000410 | CYRILLIC CAPITAL LETTER A 81 | 00000411 | CYRILLIC CAPITAL LETTER BE 82 | 00000412 | CYRILLIC CAPITAL LETTER VE 83 | 00000413 | CYRILLIC CAPITAL LETTER GHE 84 | 00000414 | CYRILLIC CAPITAL LETTER DE 85 | 00000415 | CYRILLIC CAPITAL LETTER IE 86 | 00000416 | CYRILLIC CAPITAL LETTER ZHE 87 | 00000417 | CYRILLIC CAPITAL LETTER ZE 88 | 00000418 | CYRILLIC CAPITAL LETTER I 89 | 00000419 | CYRILLIC CAPITAL LETTER SHORT I 8A | 0000041A | CYRILLIC CAPITAL LETTER KA 8B | 0000041B | CYRILLIC CAPITAL LETTER EL 8C | 0000041C | CYRILLIC CAPITAL LETTER EM 8D | 0000041D | CYRILLIC CAPITAL LETTER EN 8E | 0000041E | CYRILLIC CAPITAL LETTER O 8F | 0000041F | CYRILLIC CAPITAL LETTER PE 90 | 00000420 | CYRILLIC CAPITAL LETTER ER 91 | 00000421 | CYRILLIC CAPITAL LETTER ES 92 | 00000422 | CYRILLIC CAPITAL LETTER TE 93 | 00000423 | CYRILLIC CAPITAL LETTER U 94 | 00000424 | CYRILLIC CAPITAL LETTER EF 95 | 00000425 | CYRILLIC CAPITAL LETTER HA 96 | 00000426 | CYRILLIC CAPITAL LETTER TSE 97 | 00000427 | CYRILLIC CAPITAL LETTER CHE 98 | 00000428 | CYRILLIC CAPITAL LETTER SHA 99 | 00000429 | CYRILLIC CAPITAL LETTER SHCHA 9A | 0000042A | CYRILLIC CAPITAL LETTER HARD SIGN 9B | 0000042B | CYRILLIC CAPITAL LETTER YERU 9C | 0000042C | CYRILLIC CAPITAL LETTER SOFT SIGN 9D | 0000042D | CYRILLIC CAPITAL LETTER E 9E | 0000042E | CYRILLIC CAPITAL LETTER YU 9F | 0000042F | CYRILLIC CAPITAL LETTER YA A0 | 00002020 | DAGGER A1 | 000000B0 | DEGREE SIGN A2 | 00000490 | CYRILLIC CAPITAL LETTER GHE WITH UPTURN A3 | 000000A3 | POUND SIGN A4 | 000000A7 | SECTION SIGN A5 | 00002022 | BULLET A6 | 000000B6 | PILCROW SIGN A7 | 00000406 | CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I A8 | 000000AE | REGISTERED SIGN A9 | 000000A9 | COPYRIGHT SIGN AA | 00002122 | TRADE MARK SIGN AB | 00000402 | CYRILLIC CAPITAL LETTER DJE AC | 00000452 | CYRILLIC SMALL LETTER DJE AD | 00002260 | NOT EQUAL TO AE | 00000403 | CYRILLIC CAPITAL LETTER GJE AF | 00000453 | CYRILLIC SMALL LETTER GJE B0 | 0000221E | INFINITY B1 | 000000B1 | PLUS-MINUS SIGN B2 | 00002264 | LESS-THAN OR EQUAL TO B3 | 00002265 | GREATER-THAN OR EQUAL TO B4 | 00000456 | CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I B5 | 000000B5 | MICRO SIGN B6 | 00000491 | CYRILLIC SMALL LETTER GHE WITH UPTURN B7 | 00000408 | CYRILLIC CAPITAL LETTER JE B8 | 00000404 | CYRILLIC CAPITAL LETTER UKRAINIAN IE B9 | 00000454 | CYRILLIC SMALL LETTER UKRAINIAN IE BA | 00000407 | CYRILLIC CAPITAL LETTER YI BB | 00000457 | CYRILLIC SMALL LETTER YI BC | 00000409 | CYRILLIC CAPITAL LETTER LJE BD | 00000459 | CYRILLIC SMALL LETTER LJE BE | 0000040A | CYRILLIC CAPITAL LETTER NJE BF | 0000045A | CYRILLIC SMALL LETTER NJE C0 | 00000458 | CYRILLIC SMALL LETTER JE C1 | 00000405 | CYRILLIC CAPITAL LETTER DZE C2 | 000000AC | NOT SIGN C3 | 0000221A | SQUARE ROOT C4 | 00000192 | LATIN SMALL LETTER F WITH HOOK C5 | 00002248 | ALMOST EQUAL TO C6 | 00002206 | INCREMENT C7 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK C8 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK C9 | 00002026 | HORIZONTAL ELLIPSIS CA | 000000A0 | NO-BREAK SPACE CB | 0000040B | CYRILLIC CAPITAL LETTER TSHE CC | 0000045B | CYRILLIC SMALL LETTER TSHE CD | 0000040C | CYRILLIC CAPITAL LETTER KJE CE | 0000045C | CYRILLIC SMALL LETTER KJE CF | 00000455 | CYRILLIC SMALL LETTER DZE D0 | 00002013 | EN DASH D1 | 00002014 | EM DASH D2 | 0000201C | LEFT DOUBLE QUOTATION MARK D3 | 0000201D | RIGHT DOUBLE QUOTATION MARK D4 | 00002018 | LEFT SINGLE QUOTATION MARK D5 | 00002019 | RIGHT SINGLE QUOTATION MARK D6 | 000000F7 | DIVISION SIGN D7 | 0000201E | DOUBLE LOW-9 QUOTATION MARK D8 | 0000040E | CYRILLIC CAPITAL LETTER SHORT U D9 | 0000045E | CYRILLIC SMALL LETTER SHORT U DA | 0000040F | CYRILLIC CAPITAL LETTER DZHE DB | 0000045F | CYRILLIC SMALL LETTER DZHE DC | 00002116 | NUMERO SIGN DD | 00000401 | CYRILLIC CAPITAL LETTER IO DE | 00000451 | CYRILLIC SMALL LETTER IO DF | 0000044F | CYRILLIC SMALL LETTER YA E0 | 00000430 | CYRILLIC SMALL LETTER A E1 | 00000431 | CYRILLIC SMALL LETTER BE E2 | 00000432 | CYRILLIC SMALL LETTER VE E3 | 00000433 | CYRILLIC SMALL LETTER GHE E4 | 00000434 | CYRILLIC SMALL LETTER DE E5 | 00000435 | CYRILLIC SMALL LETTER IE E6 | 00000436 | CYRILLIC SMALL LETTER ZHE E7 | 00000437 | CYRILLIC SMALL LETTER ZE E8 | 00000438 | CYRILLIC SMALL LETTER I E9 | 00000439 | CYRILLIC SMALL LETTER SHORT I EA | 0000043A | CYRILLIC SMALL LETTER KA EB | 0000043B | CYRILLIC SMALL LETTER EL EC | 0000043C | CYRILLIC SMALL LETTER EM ED | 0000043D | CYRILLIC SMALL LETTER EN EE | 0000043E | CYRILLIC SMALL LETTER O EF | 0000043F | CYRILLIC SMALL LETTER PE F0 | 00000440 | CYRILLIC SMALL LETTER ER F1 | 00000441 | CYRILLIC SMALL LETTER ES F2 | 00000442 | CYRILLIC SMALL LETTER TE F3 | 00000443 | CYRILLIC SMALL LETTER U F4 | 00000444 | CYRILLIC SMALL LETTER EF F5 | 00000445 | CYRILLIC SMALL LETTER HA F6 | 00000446 | CYRILLIC SMALL LETTER TSE F7 | 00000447 | CYRILLIC SMALL LETTER CHE F8 | 00000448 | CYRILLIC SMALL LETTER SHA F9 | 00000449 | CYRILLIC SMALL LETTER SHCHA FA | 0000044A | CYRILLIC SMALL LETTER HARD SIGN FB | 0000044B | CYRILLIC SMALL LETTER YERU FC | 0000044C | CYRILLIC SMALL LETTER SOFT SIGN FD | 0000044D | CYRILLIC SMALL LETTER E FE | 0000044E | CYRILLIC SMALL LETTER YU FF | 000000A4 | CURRENCY SIGN =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/NATS_DANO.pm000644 000765 000024 00000044055 12716422334 022171 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for NATS-DANO. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::NATS_DANO; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x00ab, 0x00bb, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0xe018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00c6, 0x00d8, 0x00c5, 0x25a0, 0x005f, 0xe019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00e6, 0x00f8, 0x00e5, 0x2013, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\xc2\xab", "\xc2\xbb", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\xee\x80\x98", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc3\x86", "\xc3\x98", "\xc3\x85", "\xe2\x96\xa0", "\x5f", "\xee\x80\x99", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc3\xa6", "\xc3\xb8", "\xc3\xa5", "\xe2\x80\x93", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005f => "\x5f", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007f => "\x7f", 0x000000ab => "\x22", 0x000000bb => "\x23", 0x000000c5 => "\x5d", 0x000000c6 => "\x5b", 0x000000d8 => "\x5c", 0x000000e5 => "\x7d", 0x000000e6 => "\x7b", 0x000000f8 => "\x7c", 0x00002013 => "\x7e", 0x000025a0 => "\x5e", 0x0000e018 => "\x40", 0x0000e019 => "\x60", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::NATS_DANO - Conversion routines for NATS_DANO =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for NATS-DANO. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-9-1 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 23 | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 0000E018 | Unit space A EISO-IR-8-1_40E 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 000000C6 | LATIN CAPITAL LETTER AE 5C | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE 5D | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5E | 000025A0 | BLACK SQUARE 5F | 0000005F | LOW LINE 60 | 0000E019 | Unit space B EISO-IR-8-1_60E 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 000000E6 | LATIN SMALL LETTER AE 7C | 000000F8 | LATIN SMALL LETTER O WITH STROKE 7D | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 7E | 00002013 | EN DASH 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/NATS_SEFI.pm000644 000765 000024 00000044015 12716422334 022172 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for NATS-SEFI. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::NATS_SEFI; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0xe018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00c5, 0x25a0, 0x005f, 0xe019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00e5, 0x2013, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\xee\x80\x98", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\xc3\x84", "\xc3\x96", "\xc3\x85", "\xe2\x96\xa0", "\x5f", "\xee\x80\x99", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\xc3\xa4", "\xc3\xb6", "\xc3\xa5", "\xe2\x80\x93", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005f => "\x5f", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007f => "\x7f", 0x000000c4 => "\x5b", 0x000000c5 => "\x5d", 0x000000d6 => "\x5c", 0x000000e4 => "\x7b", 0x000000e5 => "\x7d", 0x000000f6 => "\x7c", 0x00002013 => "\x7e", 0x000025a0 => "\x5e", 0x0000e018 => "\x40", 0x0000e019 => "\x60", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::NATS_SEFI - Conversion routines for NATS_SEFI =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for NATS-SEFI. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 source: ECMA registry alias ISO-IR-8-1 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 0000E018 | Unit space A EISO-IR-8-1_40E 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 5C | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 5D | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 5E | 000025A0 | BLACK SQUARE 5F | 0000005F | LOW LINE 60 | 0000E019 | Unit space B EISO-IR-8-1_60E 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS 7C | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS 7D | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE 7E | 00002013 | EN DASH 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/NEXTSTEP.pm000644 000765 000024 00000064711 12716422334 022076 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for NEXTSTEP. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::NEXTSTEP; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x00a0, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00b5, 0x00d7, 0x00f7, 0x00a9, 0x00a1, 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 0x00a4, 0x2019, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x00ae, 0x2013, 0x2020, 0x2021, 0x00b7, 0x00a6, 0x00b6, 0x2022, 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030, 0x00ac, 0x00bf, 0x00b9, 0x02cb, 0x00b4, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x00a8, 0x00b2, 0x02da, 0x00b8, 0x00b3, 0x02dd, 0x02db, 0x02c7, 0x2014, 0x00b1, 0x00bc, 0x00bd, 0x00be, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00c6, 0x00ed, 0x00aa, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00e6, 0x00f9, 0x00fa, 0x00fb, 0x0131, 0x00fc, 0x00fd, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x00ff, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xc2\xa0", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc2\xb5", "\xc3\x97", "\xc3\xb7", "\xc2\xa9", "\xc2\xa1", "\xc2\xa2", "\xc2\xa3", "\xe2\x81\x84", "\xc2\xa5", "\xc6\x92", "\xc2\xa7", "\xc2\xa4", "\xe2\x80\x99", "\xe2\x80\x9c", "\xc2\xab", "\xe2\x80\xb9", "\xe2\x80\xba", "\xef\xac\x81", "\xef\xac\x82", "\xc2\xae", "\xe2\x80\x93", "\xe2\x80\xa0", "\xe2\x80\xa1", "\xc2\xb7", "\xc2\xa6", "\xc2\xb6", "\xe2\x80\xa2", "\xe2\x80\x9a", "\xe2\x80\x9e", "\xe2\x80\x9d", "\xc2\xbb", "\xe2\x80\xa6", "\xe2\x80\xb0", "\xc2\xac", "\xc2\xbf", "\xc2\xb9", "\xcb\x8b", "\xc2\xb4", "\xcb\x86", "\xcb\x9c", "\xc2\xaf", "\xcb\x98", "\xcb\x99", "\xc2\xa8", "\xc2\xb2", "\xcb\x9a", "\xc2\xb8", "\xc2\xb3", "\xcb\x9d", "\xcb\x9b", "\xcb\x87", "\xe2\x80\x94", "\xc2\xb1", "\xc2\xbc", "\xc2\xbd", "\xc2\xbe", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\x86", "\xc3\xad", "\xc2\xaa", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc5\x81", "\xc3\x98", "\xc5\x92", "\xc2\xba", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xa6", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc4\xb1", "\xc3\xbc", "\xc3\xbd", "\xc5\x82", "\xc3\xb8", "\xc5\x93", "\xc3\x9f", "\xc3\xbe", "\xc3\xbf", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\x80", 0x000000a1 => "\xa1", 0x000000a2 => "\xa2", 0x000000a3 => "\xa3", 0x000000a4 => "\xa8", 0x000000a5 => "\xa5", 0x000000a6 => "\xb5", 0x000000a7 => "\xa7", 0x000000a8 => "\xc8", 0x000000a9 => "\xa0", 0x000000aa => "\xe3", 0x000000ab => "\xab", 0x000000ac => "\xbe", 0x000000ae => "\xb0", 0x000000af => "\xc5", 0x000000b1 => "\xd1", 0x000000b2 => "\xc9", 0x000000b3 => "\xcc", 0x000000b4 => "\xc2", 0x000000b5 => "\x9d", 0x000000b6 => "\xb6", 0x000000b7 => "\xb4", 0x000000b8 => "\xcb", 0x000000b9 => "\xc0", 0x000000ba => "\xeb", 0x000000bb => "\xbb", 0x000000bc => "\xd2", 0x000000bd => "\xd3", 0x000000be => "\xd4", 0x000000bf => "\xbf", 0x000000c0 => "\x81", 0x000000c1 => "\x82", 0x000000c2 => "\x83", 0x000000c3 => "\x84", 0x000000c4 => "\x85", 0x000000c5 => "\x86", 0x000000c6 => "\xe1", 0x000000c7 => "\x87", 0x000000c8 => "\x88", 0x000000c9 => "\x89", 0x000000ca => "\x8a", 0x000000cb => "\x8b", 0x000000cc => "\x8c", 0x000000cd => "\x8d", 0x000000ce => "\x8e", 0x000000cf => "\x8f", 0x000000d0 => "\x90", 0x000000d1 => "\x91", 0x000000d2 => "\x92", 0x000000d3 => "\x93", 0x000000d4 => "\x94", 0x000000d5 => "\x95", 0x000000d6 => "\x96", 0x000000d7 => "\x9e", 0x000000d8 => "\xe9", 0x000000d9 => "\x97", 0x000000da => "\x98", 0x000000db => "\x99", 0x000000dc => "\x9a", 0x000000dd => "\x9b", 0x000000de => "\x9c", 0x000000df => "\xfb", 0x000000e0 => "\xd5", 0x000000e1 => "\xd6", 0x000000e2 => "\xd7", 0x000000e3 => "\xd8", 0x000000e4 => "\xd9", 0x000000e5 => "\xda", 0x000000e6 => "\xf1", 0x000000e7 => "\xdb", 0x000000e8 => "\xdc", 0x000000e9 => "\xdd", 0x000000ea => "\xde", 0x000000eb => "\xdf", 0x000000ec => "\xe0", 0x000000ed => "\xe2", 0x000000ee => "\xe4", 0x000000ef => "\xe5", 0x000000f0 => "\xe6", 0x000000f1 => "\xe7", 0x000000f2 => "\xec", 0x000000f3 => "\xed", 0x000000f4 => "\xee", 0x000000f5 => "\xef", 0x000000f6 => "\xf0", 0x000000f7 => "\x9f", 0x000000f8 => "\xf9", 0x000000f9 => "\xf2", 0x000000fa => "\xf3", 0x000000fb => "\xf4", 0x000000fc => "\xf6", 0x000000fd => "\xf7", 0x000000fe => "\xfc", 0x000000ff => "\xfd", 0x00000131 => "\xf5", 0x00000141 => "\xe8", 0x00000142 => "\xf8", 0x00000152 => "\xea", 0x00000153 => "\xfa", 0x00000192 => "\xa6", 0x000002c6 => "\xc3", 0x000002c7 => "\xcf", 0x000002cb => "\xc1", 0x000002d8 => "\xc6", 0x000002d9 => "\xc7", 0x000002da => "\xca", 0x000002db => "\xce", 0x000002dc => "\xc4", 0x000002dd => "\xcd", 0x00002013 => "\xb1", 0x00002014 => "\xd0", 0x00002019 => "\xa9", 0x0000201a => "\xb8", 0x0000201c => "\xaa", 0x0000201d => "\xba", 0x0000201e => "\xb9", 0x00002020 => "\xb2", 0x00002021 => "\xb3", 0x00002022 => "\xb7", 0x00002026 => "\xbc", 0x00002030 => "\xbd", 0x00002039 => "\xac", 0x0000203a => "\xad", 0x00002044 => "\xa4", 0x0000fb01 => "\xae", 0x0000fb02 => "\xaf", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::NEXTSTEP - Conversion routines for NEXTSTEP =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for NEXTSTEP. =head1 COMMENTS The following comments have been extracted from the original charmap: This charmap has been generated automatically from GNU libiconv conversions. Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000000A0 | NO-BREAK SPACE 81 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE 82 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE 83 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX 84 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE 85 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS 86 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE 87 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA 88 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE 89 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE 8A | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX 8B | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS 8C | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE 8D | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE 8E | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX 8F | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS 90 | 000000D0 | LATIN CAPITAL LETTER ETH 91 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE 92 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE 93 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE 94 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX 95 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE 96 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS 97 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE 98 | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE 99 | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX 9A | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS 9B | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE 9C | 000000DE | LATIN CAPITAL LETTER THORN 9D | 000000B5 | MICRO SIGN 9E | 000000D7 | MULTIPLICATION SIGN 9F | 000000F7 | DIVISION SIGN A0 | 000000A9 | COPYRIGHT SIGN A1 | 000000A1 | INVERTED EXCLAMATION MARK A2 | 000000A2 | CENT SIGN A3 | 000000A3 | POUND SIGN A4 | 00002044 | FRACTION SLASH A5 | 000000A5 | YEN SIGN A6 | 00000192 | LATIN SMALL LETTER F WITH HOOK A7 | 000000A7 | SECTION SIGN A8 | 000000A4 | CURRENCY SIGN A9 | 00002019 | RIGHT SINGLE QUOTATION MARK AA | 0000201C | LEFT DOUBLE QUOTATION MARK AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK AD | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK AE | 0000FB01 | LATIN SMALL LIGATURE FI AF | 0000FB02 | LATIN SMALL LIGATURE FL B0 | 000000AE | REGISTERED SIGN B1 | 00002013 | EN DASH B2 | 00002020 | DAGGER B3 | 00002021 | DOUBLE DAGGER B4 | 000000B7 | MIDDLE DOT B5 | 000000A6 | BROKEN BAR B6 | 000000B6 | PILCROW SIGN B7 | 00002022 | BULLET B8 | 0000201A | SINGLE LOW-9 QUOTATION MARK B9 | 0000201E | DOUBLE LOW-9 QUOTATION MARK BA | 0000201D | RIGHT DOUBLE QUOTATION MARK BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 00002026 | HORIZONTAL ELLIPSIS BD | 00002030 | PER MILLE SIGN BE | 000000AC | NOT SIGN BF | 000000BF | INVERTED QUESTION MARK C0 | 000000B9 | SUPERSCRIPT ONE C1 | 000002CB | MODIFIER LETTER GRAVE ACCENT C2 | 000000B4 | ACUTE ACCENT C3 | 000002C6 | MODIFIER LETTER CIRCUMFLEX ACCENT C4 | 000002DC | SMALL TILDE C5 | 000000AF | MACRON C6 | 000002D8 | BREVE C7 | 000002D9 | DOT ABOVE C8 | 000000A8 | DIAERESIS C9 | 000000B2 | SUPERSCRIPT TWO CA | 000002DA | RING ABOVE CB | 000000B8 | CEDILLA CC | 000000B3 | SUPERSCRIPT THREE CD | 000002DD | DOUBLE ACUTE ACCENT CE | 000002DB | OGONEK CF | 000002C7 | CARON D0 | 00002014 | EM DASH D1 | 000000B1 | PLUS-MINUS SIGN D2 | 000000BC | VULGAR FRACTION ONE QUARTER D3 | 000000BD | VULGAR FRACTION ONE HALF D4 | 000000BE | VULGAR FRACTION THREE QUARTERS D5 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE D6 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE D7 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX D8 | 000000E3 | LATIN SMALL LETTER A WITH TILDE D9 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS DA | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE DB | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA DC | 000000E8 | LATIN SMALL LETTER E WITH GRAVE DD | 000000E9 | LATIN SMALL LETTER E WITH ACUTE DE | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX DF | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS E0 | 000000EC | LATIN SMALL LETTER I WITH GRAVE E1 | 000000C6 | LATIN CAPITAL LETTER AE E2 | 000000ED | LATIN SMALL LETTER I WITH ACUTE E3 | 000000AA | FEMININE ORDINAL INDICATOR E4 | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX E5 | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS E6 | 000000F0 | LATIN SMALL LETTER ETH E7 | 000000F1 | LATIN SMALL LETTER N WITH TILDE E8 | 00000141 | LATIN CAPITAL LETTER L WITH STROKE E9 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE EA | 00000152 | LATIN CAPITAL LIGATURE OE EB | 000000BA | MASCULINE ORDINAL INDICATOR EC | 000000F2 | LATIN SMALL LETTER O WITH GRAVE ED | 000000F3 | LATIN SMALL LETTER O WITH ACUTE EE | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX EF | 000000F5 | LATIN SMALL LETTER O WITH TILDE F0 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F1 | 000000E6 | LATIN SMALL LETTER AE F2 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE F3 | 000000FA | LATIN SMALL LETTER U WITH ACUTE F4 | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX F5 | 00000131 | LATIN SMALL LETTER DOTLESS I F6 | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS F7 | 000000FD | LATIN SMALL LETTER Y WITH ACUTE F8 | 00000142 | LATIN SMALL LETTER L WITH STROKE F9 | 000000F8 | LATIN SMALL LETTER O WITH STROKE FA | 00000153 | LATIN SMALL LIGATURE OE FB | 000000DF | LATIN SMALL LETTER SHARP S FC | 000000FE | LATIN SMALL LETTER THORN FD | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/SAMI_WS2.pm000644 000765 000024 00000065435 12716422334 022054 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for WIN-SAMI-2. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::SAMI_WS2; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x20ac, 0xfffd, 0x010c, 0x0192, 0x010d, 0x01b7, 0x0292, 0x01ee, 0x01ef, 0x0110, 0x0160, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0111, 0x01e6, 0x0161, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, 0x00a0, 0x01e7, 0x01e4, 0x00a3, 0x00a4, 0x01e5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x021e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x021f, 0x00b0, 0x00b1, 0x01e8, 0x01e9, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x014a, 0x014b, 0x0166, 0x00bb, 0x0167, 0x00bd, 0x017d, 0x017e, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe2\x82\xac", "\xef\xbf\xbd", "\xc4\x8c", "\xc6\x92", "\xc4\x8d", "\xc6\xb7", "\xca\x92", "\xc7\xae", "\xc7\xaf", "\xc4\x90", "\xc5\xa0", "\xe2\x80\xb9", "\xc5\x92", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\xa2", "\xe2\x80\x93", "\xe2\x80\x94", "\xc4\x91", "\xc7\xa6", "\xc5\xa1", "\xe2\x80\xba", "\xc5\x93", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xc5\xb8", "\xc2\xa0", "\xc7\xa7", "\xc7\xa4", "\xc2\xa3", "\xc2\xa4", "\xc7\xa5", "\xc2\xa6", "\xc2\xa7", "\xc2\xa8", "\xc2\xa9", "\xc8\x9e", "\xc2\xab", "\xc2\xac", "\xc2\xad", "\xc2\xae", "\xc8\x9f", "\xc2\xb0", "\xc2\xb1", "\xc7\xa8", "\xc7\xa9", "\xc2\xb4", "\xc2\xb5", "\xc2\xb6", "\xc2\xb7", "\xc5\x8a", "\xc5\x8b", "\xc5\xa6", "\xc2\xbb", "\xc5\xa7", "\xc2\xbd", "\xc5\xbd", "\xc5\xbe", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xc3\x84", "\xc3\x85", "\xc3\x86", "\xc3\x87", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xc3\x8b", "\xc3\x8c", "\xc3\x8d", "\xc3\x8e", "\xc3\x8f", "\xc3\x90", "\xc3\x91", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xc3\x95", "\xc3\x96", "\xc3\x97", "\xc3\x98", "\xc3\x99", "\xc3\x9a", "\xc3\x9b", "\xc3\x9c", "\xc3\x9d", "\xc3\x9e", "\xc3\x9f", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", "\xc3\xa6", "\xc3\xa7", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf", "\xc3\xb0", "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", "\xc3\xb7", "\xc3\xb8", "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd", "\xc3\xbe", "\xc3\xbf", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000a0 => "\xa0", 0x000000a3 => "\xa3", 0x000000a4 => "\xa4", 0x000000a6 => "\xa6", 0x000000a7 => "\xa7", 0x000000a8 => "\xa8", 0x000000a9 => "\xa9", 0x000000ab => "\xab", 0x000000ac => "\xac", 0x000000ad => "\xad", 0x000000ae => "\xae", 0x000000b0 => "\xb0", 0x000000b1 => "\xb1", 0x000000b4 => "\xb4", 0x000000b5 => "\xb5", 0x000000b6 => "\xb6", 0x000000b7 => "\xb7", 0x000000bb => "\xbb", 0x000000bd => "\xbd", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c4 => "\xc4", 0x000000c5 => "\xc5", 0x000000c6 => "\xc6", 0x000000c7 => "\xc7", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cb => "\xcb", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000ce => "\xce", 0x000000cf => "\xcf", 0x000000d0 => "\xd0", 0x000000d1 => "\xd1", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xd5", 0x000000d6 => "\xd6", 0x000000d7 => "\xd7", 0x000000d8 => "\xd8", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000db => "\xdb", 0x000000dc => "\xdc", 0x000000dd => "\xdd", 0x000000de => "\xde", 0x000000df => "\xdf", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e4 => "\xe4", 0x000000e5 => "\xe5", 0x000000e6 => "\xe6", 0x000000e7 => "\xe7", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000eb => "\xeb", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000ee => "\xee", 0x000000ef => "\xef", 0x000000f0 => "\xf0", 0x000000f1 => "\xf1", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f6 => "\xf6", 0x000000f7 => "\xf7", 0x000000f8 => "\xf8", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fb => "\xfb", 0x000000fc => "\xfc", 0x000000fd => "\xfd", 0x000000fe => "\xfe", 0x000000ff => "\xff", 0x0000010c => "\x82", 0x0000010d => "\x84", 0x00000110 => "\x89", 0x00000111 => "\x98", 0x0000014a => "\xb8", 0x0000014b => "\xb9", 0x00000152 => "\x8c", 0x00000153 => "\x9c", 0x00000160 => "\x8a", 0x00000161 => "\x9a", 0x00000166 => "\xba", 0x00000167 => "\xbc", 0x00000178 => "\x9f", 0x0000017d => "\xbe", 0x0000017e => "\xbf", 0x00000192 => "\x83", 0x000001b7 => "\x85", 0x000001e4 => "\xa2", 0x000001e5 => "\xa5", 0x000001e6 => "\x99", 0x000001e7 => "\xa1", 0x000001e8 => "\xb2", 0x000001e9 => "\xb3", 0x000001ee => "\x87", 0x000001ef => "\x88", 0x0000021e => "\xaa", 0x0000021f => "\xaf", 0x00000292 => "\x86", 0x00002013 => "\x96", 0x00002014 => "\x97", 0x00002018 => "\x91", 0x00002019 => "\x92", 0x0000201c => "\x93", 0x0000201d => "\x94", 0x00002022 => "\x95", 0x00002039 => "\x8b", 0x0000203a => "\x9b", 0x000020ac => "\x80", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::SAMI_WS2 - Conversion routines for SAMI_WS2 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for WIN-SAMI-2. =head1 COMMENTS The following comments have been extracted from the original charmap: source: EURL:http://www2.isl.uit.no/trond/ws2t.htmlE and EURL:http://www.unicode.org/unicode/alloc/Pipeline.htmlE author: Petter Reinholdtsen Epere@td.org.uit.noE date: 1999-01-20 based on info from Trond Trosterud ETrond.Trosterud@hum.uit.noE. This charmap is based on MS CP1252, not ISO 8859/1. alias WS2 alias WINDOWS-SAMI2 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 000020AC | EURO SIGN 82 | 0000010C | LATIN CAPITAL LETTER C WITH CARON 83 | 00000192 | LATIN SMALL LETTER F WITH HOOK 84 | 0000010D | LATIN SMALL LETTER C WITH CARON 85 | 000001B7 | LATIN CAPITAL LETTER EZH 86 | 00000292 | LATIN SMALL LETTER EZH 87 | 000001EE | LATIN CAPITAL LETTER EZH WITH CARON 88 | 000001EF | LATIN SMALL LETTER EZH WITH CARON 89 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE 8A | 00000160 | LATIN CAPITAL LETTER S WITH CARON 8B | 00002039 | SINGLE LEFT-POINTING ANGLE QUOTATION MARK 8C | 00000152 | LATIN CAPITAL LIGATURE OE 91 | 00002018 | LEFT SINGLE QUOTATION MARK 92 | 00002019 | RIGHT SINGLE QUOTATION MARK 93 | 0000201C | LEFT DOUBLE QUOTATION MARK 94 | 0000201D | RIGHT DOUBLE QUOTATION MARK 95 | 00002022 | BULLET 96 | 00002013 | EN DASH 97 | 00002014 | EM DASH 98 | 00000111 | LATIN SMALL LETTER D WITH STROKE 99 | 000001E6 | LATIN CAPITAL LETTER G WITH CARON 9A | 00000161 | LATIN SMALL LETTER S WITH CARON 9B | 0000203A | SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 9C | 00000153 | LATIN SMALL LIGATURE OE 9F | 00000178 | LATIN CAPITAL LETTER Y WITH DIAERESIS A0 | 000000A0 | NO-BREAK SPACE A1 | 000001E7 | LATIN SMALL LETTER G WITH CARON A2 | 000001E4 | LATIN CAPITAL LETTER G WITH STROKE A3 | 000000A3 | POUND SIGN A4 | 000000A4 | CURRENCY SIGN A5 | 000001E5 | LATIN SMALL LETTER G WITH STROKE A6 | 000000A6 | BROKEN BAR A7 | 000000A7 | SECTION SIGN A8 | 000000A8 | DIAERESIS A9 | 000000A9 | COPYRIGHT SIGN AA | 0000021E | LATIN CAPITAL LETTER H WITH CARON AB | 000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK AC | 000000AC | NOT SIGN AD | 000000AD | SOFT HYPHEN AE | 000000AE | REGISTERED SIGN AF | 0000021F | LATIN SMALL LETTER H WITH CARON B0 | 000000B0 | DEGREE SIGN B1 | 000000B1 | PLUS-MINUS SIGN B2 | 000001E8 | LATIN CAPITAL LETTER K WITH CARON B3 | 000001E9 | LATIN SMALL LETTER K WITH CARON B4 | 000000B4 | ACUTE ACCENT B5 | 000000B5 | MICRO SIGN B6 | 000000B6 | PILCROW SIGN B7 | 000000B7 | MIDDLE DOT B8 | 0000014A | LATIN CAPITAL LETTER ENG (Sami) B9 | 0000014B | LATIN SMALL LETTER ENG (Sami) BA | 00000166 | LATIN CAPITAL LETTER T WITH STROKE BB | 000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK BC | 00000167 | LATIN SMALL LETTER T WITH STROKE BD | 000000BD | VULGAR FRACTION ONE HALF BE | 0000017D | LATIN CAPITAL LETTER Z WITH CARON BF | 0000017E | LATIN SMALL LETTER Z WITH CARON C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS C5 | 000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE C6 | 000000C6 | LATIN CAPITAL LETTER AE C7 | 000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX CF | 000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS D0 | 000000D0 | LATIN CAPITAL LETTER ETH (Icelandic) D1 | 000000D1 | LATIN CAPITAL LETTER N WITH TILDE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE D6 | 000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS D7 | 000000D7 | MULTIPLICATION SIGN D8 | 000000D8 | LATIN CAPITAL LETTER O WITH STROKE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX DC | 000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 000000DE | LATIN CAPITAL LETTER THORN (Icelandic) DF | 000000DF | LATIN SMALL LETTER SHARP S (German) E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 000000E4 | LATIN SMALL LETTER A WITH DIAERESIS E5 | 000000E5 | LATIN SMALL LETTER A WITH RING ABOVE E6 | 000000E6 | LATIN SMALL LETTER AE E7 | 000000E7 | LATIN SMALL LETTER C WITH CEDILLA E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 000000EB | LATIN SMALL LETTER E WITH DIAERESIS EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX EF | 000000EF | LATIN SMALL LETTER I WITH DIAERESIS F0 | 000000F0 | LATIN SMALL LETTER ETH (Icelandic) F1 | 000000F1 | LATIN SMALL LETTER N WITH TILDE F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 000000F6 | LATIN SMALL LETTER O WITH DIAERESIS F7 | 000000F7 | DIVISION SIGN F8 | 000000F8 | LATIN SMALL LETTER O WITH STROKE F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX FC | 000000FC | LATIN SMALL LETTER U WITH DIAERESIS FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 000000FE | LATIN SMALL LETTER THORN (Icelandic) FF | 000000FF | LATIN SMALL LETTER Y WITH DIAERESIS =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/TIS_620.pm000644 000765 000024 00000057543 12716422334 021657 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for TIS-620. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::TIS_620; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, ); my @to_utf8 = ( "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe0\xb8\x81", "\xe0\xb8\x82", "\xe0\xb8\x83", "\xe0\xb8\x84", "\xe0\xb8\x85", "\xe0\xb8\x86", "\xe0\xb8\x87", "\xe0\xb8\x88", "\xe0\xb8\x89", "\xe0\xb8\x8a", "\xe0\xb8\x8b", "\xe0\xb8\x8c", "\xe0\xb8\x8d", "\xe0\xb8\x8e", "\xe0\xb8\x8f", "\xe0\xb8\x90", "\xe0\xb8\x91", "\xe0\xb8\x92", "\xe0\xb8\x93", "\xe0\xb8\x94", "\xe0\xb8\x95", "\xe0\xb8\x96", "\xe0\xb8\x97", "\xe0\xb8\x98", "\xe0\xb8\x99", "\xe0\xb8\x9a", "\xe0\xb8\x9b", "\xe0\xb8\x9c", "\xe0\xb8\x9d", "\xe0\xb8\x9e", "\xe0\xb8\x9f", "\xe0\xb8\xa0", "\xe0\xb8\xa1", "\xe0\xb8\xa2", "\xe0\xb8\xa3", "\xe0\xb8\xa4", "\xe0\xb8\xa5", "\xe0\xb8\xa6", "\xe0\xb8\xa7", "\xe0\xb8\xa8", "\xe0\xb8\xa9", "\xe0\xb8\xaa", "\xe0\xb8\xab", "\xe0\xb8\xac", "\xe0\xb8\xad", "\xe0\xb8\xae", "\xe0\xb8\xaf", "\xe0\xb8\xb0", "\xe0\xb8\xb1", "\xe0\xb8\xb2", "\xe0\xb8\xb3", "\xe0\xb8\xb4", "\xe0\xb8\xb5", "\xe0\xb8\xb6", "\xe0\xb8\xb7", "\xe0\xb8\xb8", "\xe0\xb8\xb9", "\xe0\xb8\xba", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xe0\xb8\xbf", "\xe0\xb9\x80", "\xe0\xb9\x81", "\xe0\xb9\x82", "\xe0\xb9\x83", "\xe0\xb9\x84", "\xe0\xb9\x85", "\xe0\xb9\x86", "\xe0\xb9\x87", "\xe0\xb9\x88", "\xe0\xb9\x89", "\xe0\xb9\x8a", "\xe0\xb9\x8b", "\xe0\xb9\x8c", "\xe0\xb9\x8d", "\xe0\xb9\x8e", "\xe0\xb9\x8f", "\xe0\xb9\x90", "\xe0\xb9\x91", "\xe0\xb9\x92", "\xe0\xb9\x93", "\xe0\xb9\x94", "\xe0\xb9\x95", "\xe0\xb9\x96", "\xe0\xb9\x97", "\xe0\xb9\x98", "\xe0\xb9\x99", "\xe0\xb9\x9a", "\xe0\xb9\x9b", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", "\xef\xbf\xbd", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000002 => "\x02", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000005 => "\x05", 0x00000006 => "\x06", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000014 => "\x14", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x00000019 => "\x19", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001e => "\x1e", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x00000e01 => "\xa1", 0x00000e02 => "\xa2", 0x00000e03 => "\xa3", 0x00000e04 => "\xa4", 0x00000e05 => "\xa5", 0x00000e06 => "\xa6", 0x00000e07 => "\xa7", 0x00000e08 => "\xa8", 0x00000e09 => "\xa9", 0x00000e0a => "\xaa", 0x00000e0b => "\xab", 0x00000e0c => "\xac", 0x00000e0d => "\xad", 0x00000e0e => "\xae", 0x00000e0f => "\xaf", 0x00000e10 => "\xb0", 0x00000e11 => "\xb1", 0x00000e12 => "\xb2", 0x00000e13 => "\xb3", 0x00000e14 => "\xb4", 0x00000e15 => "\xb5", 0x00000e16 => "\xb6", 0x00000e17 => "\xb7", 0x00000e18 => "\xb8", 0x00000e19 => "\xb9", 0x00000e1a => "\xba", 0x00000e1b => "\xbb", 0x00000e1c => "\xbc", 0x00000e1d => "\xbd", 0x00000e1e => "\xbe", 0x00000e1f => "\xbf", 0x00000e20 => "\xc0", 0x00000e21 => "\xc1", 0x00000e22 => "\xc2", 0x00000e23 => "\xc3", 0x00000e24 => "\xc4", 0x00000e25 => "\xc5", 0x00000e26 => "\xc6", 0x00000e27 => "\xc7", 0x00000e28 => "\xc8", 0x00000e29 => "\xc9", 0x00000e2a => "\xca", 0x00000e2b => "\xcb", 0x00000e2c => "\xcc", 0x00000e2d => "\xcd", 0x00000e2e => "\xce", 0x00000e2f => "\xcf", 0x00000e30 => "\xd0", 0x00000e31 => "\xd1", 0x00000e32 => "\xd2", 0x00000e33 => "\xd3", 0x00000e34 => "\xd4", 0x00000e35 => "\xd5", 0x00000e36 => "\xd6", 0x00000e37 => "\xd7", 0x00000e38 => "\xd8", 0x00000e39 => "\xd9", 0x00000e3a => "\xda", 0x00000e3f => "\xdf", 0x00000e40 => "\xe0", 0x00000e41 => "\xe1", 0x00000e42 => "\xe2", 0x00000e43 => "\xe3", 0x00000e44 => "\xe4", 0x00000e45 => "\xe5", 0x00000e46 => "\xe6", 0x00000e47 => "\xe7", 0x00000e48 => "\xe8", 0x00000e49 => "\xe9", 0x00000e4a => "\xea", 0x00000e4b => "\xeb", 0x00000e4c => "\xec", 0x00000e4d => "\xed", 0x00000e4e => "\xee", 0x00000e4f => "\xef", 0x00000e50 => "\xf0", 0x00000e51 => "\xf1", 0x00000e52 => "\xf2", 0x00000e53 => "\xf3", 0x00000e54 => "\xf4", 0x00000e55 => "\xf5", 0x00000e56 => "\xf6", 0x00000e57 => "\xf7", 0x00000e58 => "\xf8", 0x00000e59 => "\xf9", 0x00000e5a => "\xfa", 0x00000e5b => "\xfb", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::TIS_620 - Conversion routines for TIS-620 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for TIS-620. =head1 COMMENTS The following comments have been extracted from the original charmap: version: 1.0 sources: Thai Industrial Standards Institute, ECMA registry, IANA alias TIS620 alias TIS620-0 alias TIS620.2529-1 alias TIS620.2533-0 alias ISO-IR-166 Please note that aliases listed above are not necessarily valid! =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) A1 | 00000E01 | THAI CHARACTER KO KAI A2 | 00000E02 | THAI CHARACTER KHO KHAI A3 | 00000E03 | THAI CHARACTER KHO KHUAT A4 | 00000E04 | THAI CHARACTER KHO KHWAI A5 | 00000E05 | THAI CHARACTER KHO KHON A6 | 00000E06 | THAI CHARACTER KHO RAKHANG A7 | 00000E07 | THAI CHARACTER NGO NGU A8 | 00000E08 | THAI CHARACTER CHO CHAN A9 | 00000E09 | THAI CHARACTER CHO CHING AA | 00000E0A | THAI CHARACTER CHO CHANG AB | 00000E0B | THAI CHARACTER SO SO AC | 00000E0C | THAI CHARACTER CHO CHOE AD | 00000E0D | THAI CHARACTER YO YING AE | 00000E0E | THAI CHARACTER DO CHADA AF | 00000E0F | THAI CHARACTER TO PATAK B0 | 00000E10 | THAI CHARACTER THO THAN B1 | 00000E11 | THAI CHARACTER THO NANGMONTHO B2 | 00000E12 | THAI CHARACTER THO PHUTHAO B3 | 00000E13 | THAI CHARACTER NO NEN B4 | 00000E14 | THAI CHARACTER DO DEK B5 | 00000E15 | THAI CHARACTER TO TAO B6 | 00000E16 | THAI CHARACTER THO THUNG B7 | 00000E17 | THAI CHARACTER THO THAHAN B8 | 00000E18 | THAI CHARACTER THO THONG B9 | 00000E19 | THAI CHARACTER NO NU BA | 00000E1A | THAI CHARACTER BO BAIMAI BB | 00000E1B | THAI CHARACTER PO PLA BC | 00000E1C | THAI CHARACTER PHO PHUNG BD | 00000E1D | THAI CHARACTER FO FA BE | 00000E1E | THAI CHARACTER PHO PHAN BF | 00000E1F | THAI CHARACTER FO FAN C0 | 00000E20 | THAI CHARACTER PHO SAMPHAO C1 | 00000E21 | THAI CHARACTER MO MA C2 | 00000E22 | THAI CHARACTER YO YAK C3 | 00000E23 | THAI CHARACTER RO RUA C4 | 00000E24 | THAI CHARACTER RU C5 | 00000E25 | THAI CHARACTER LO LING C6 | 00000E26 | THAI CHARACTER LU C7 | 00000E27 | THAI CHARACTER WO WAEN C8 | 00000E28 | THAI CHARACTER SO SALA C9 | 00000E29 | THAI CHARACTER SO RUSI CA | 00000E2A | THAI CHARACTER SO SUA CB | 00000E2B | THAI CHARACTER HO HIP CC | 00000E2C | THAI CHARACTER LO CHULA CD | 00000E2D | THAI CHARACTER O ANG CE | 00000E2E | THAI CHARACTER HO NOKHUK CF | 00000E2F | THAI CHARACTER PAIYANNOI D0 | 00000E30 | THAI CHARACTER SARA A D1 | 00000E31 | THAI CHARACTER MAI HAN-AKAT D2 | 00000E32 | THAI CHARACTER SARA AA D3 | 00000E33 | THAI CHARACTER SARA AM D4 | 00000E34 | THAI CHARACTER SARA I D5 | 00000E35 | THAI CHARACTER SARA II D6 | 00000E36 | THAI CHARACTER SARA UE D7 | 00000E37 | THAI CHARACTER SARA UEE D8 | 00000E38 | THAI CHARACTER SARA U D9 | 00000E39 | THAI CHARACTER SARA UU DA | 00000E3A | THAI CHARACTER PHINTHU DF | 00000E3F | THAI CHARACTER SYMBOL BAHT E0 | 00000E40 | THAI CHARACTER SARA E E1 | 00000E41 | THAI CHARACTER SARA AE E2 | 00000E42 | THAI CHARACTER SARA O E3 | 00000E43 | THAI CHARACTER SARA AI MAIMUAN E4 | 00000E44 | THAI CHARACTER SARA AI MAIMALAI E5 | 00000E45 | THAI CHARACTER LAKKHANGYAO E6 | 00000E46 | THAI CHARACTER MAIYAMOK E7 | 00000E47 | THAI CHARACTER MAITAIKHU E8 | 00000E48 | THAI CHARACTER MAI EK E9 | 00000E49 | THAI CHARACTER MAI THO EA | 00000E4A | THAI CHARACTER MAI TRI EB | 00000E4B | THAI CHARACTER MAI CHATTAWA EC | 00000E4C | THAI CHARACTER THANTHAKHAT ED | 00000E4D | THAI CHARACTER NIKHAHIT EE | 00000E4E | THAI CHARACTER YAMAKKAN EF | 00000E4F | THAI CHARACTER FONGMAN F0 | 00000E50 | THAI DIGIT ZERO F1 | 00000E51 | THAI DIGIT ONE F2 | 00000E52 | THAI DIGIT TWO F3 | 00000E53 | THAI DIGIT THREE F4 | 00000E54 | THAI DIGIT FOUR F5 | 00000E55 | THAI DIGIT FIVE F6 | 00000E56 | THAI DIGIT SIX F7 | 00000E57 | THAI DIGIT SEVEN F8 | 00000E58 | THAI DIGIT EIGHT F9 | 00000E59 | THAI DIGIT NINE FA | 00000E5A | THAI CHARACTER ANGKHANKHU FB | 00000E5B | THAI CHARACTER KHOMUT =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/US_ASCII.pm000644 000765 000024 00000016547 12716422334 022067 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for US-ASCII. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::US_ASCII; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { # FIXME: Maybe the lookup is cheaper than the call to chr(). $_[1] = join '', map $_ > 0x7f ? '?' : chr $_, @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8') { # FIXME: Maybe the lookup is cheaper than the call to chr(). $_[1] = join '', map $_ > 0x7f ? "\xef\xbf\xbd" : chr $_, unpack 'C*', $_[1]; } else { $_[1] = [ map { $_ > 0x7f ? 0xfffd : $_ } unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::US_ASCII - Conversion routines for US-ASCII =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module contains the conversion tables and routines for US-ASCII. =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00000002 | START OF TEXT (STX) 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00000005 | ENQUIRY (ENQ) 06 | 00000006 | ACKNOWLEDGE (ACK) 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00000014 | DEVICE CONTROL FOUR (DC4) 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00000019 | END OF MEDIUM (EM) 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 0000001E | RECORD SEPARATOR (IS2) 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/UTF_8.pm000644 000765 000024 00000011737 12716422334 021511 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for UTF-8 (perl < 5.8.0). # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::UTF_8; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { return $_[0]->_fromInternal ($_[1]); } else { return $_[0]->_toInternal ($_[1]); } } # This routine assumes that the internal representation is always sane # and contains valid codes only. sub _fromInternal { $_[1] = join '', map { if ($_ <= 0x7f) { chr $_; } elsif ($_ <= 0x7ff) { pack ("C2", (0xc0 | (($_ >> 6) & 0x1f)), (0x80 | ($_ & 0x3f))); } elsif ($_ <= 0xffff) { pack ("C3", (0xe0 | (($_ >> 12) & 0xf)), (0x80 | (($_ >> 6) & 0x3f)), (0x80 | ($_ & 0x3f))); } elsif ($_ <= 0x1fffff) { pack ("C4", (0xf0 | (($_ >> 18) & 0x7)), (0x80 | (($_ >> 12) & 0x3f)), (0x80 | (($_ >> 6) & 0x3f)), (0x80 | ($_ & 0x3f))); } elsif ($_ <= 0x3ffffff) { pack ("C5", (0xf0 | (($_ >> 24) & 0x3)), (0x80 | (($_ >> 18) & 0x3f)), (0x80 | (($_ >> 12) & 0x3f)), (0x80 | (($_ >> 6) & 0x3f)), (0x80 | ($_ & 0x3f))); } else { pack ("C6", (0xf0 | (($_ >> 30) & 0x3)), (0x80 | (($_ >> 24) & 0x1)), (0x80 | (($_ >> 18) & 0x3f)), (0x80 | (($_ >> 12) & 0x3f)), (0x80 | (($_ >> 6) & 0x3f)), (0x80 | ($_ & 0x3f))); } } @{$_[1]}; return 1; } # Decode UTF-8 into integers. We do not bother to care about possibly # configured replacement characters here and simply fall back to 0xfffd. # Rationale: the internal format is never output directly and the other # encoders will handle the replacement character correctly. sub _toInternal { if ($] >= 5.006) { $_[1] = [ unpack "U*", $_[1] ]; return 1; } # Sigh, we have to decode ourselves. FIXME: Should be optimized. # The routine is awfully slow. # It also does not necessarily detect illegal multi-byte sequences. my @chars = (); my @bytes = unpack "C*", $_[1]; BYTE: while (@bytes) { my $byte = shift @bytes; if ($byte < 0x80) { push @chars, $byte; } elsif ($byte < 0xc0 || $byte > 0xfd) { push @chars, 0xfffd; } else { my $num_bytes; my $char; if ($byte < 0xe0) { $char = $byte & 0x1f; $num_bytes = 1; } elsif ($byte < 0xf0) { $char = $byte & 0xf; $num_bytes = 2; } elsif ($byte < 0xf8) { $char = $byte & 0x7; $num_bytes = 3; } elsif ($byte < 0xfc) { $char = $byte & 0x3; $num_bytes = 4; } else { $char = $byte & 0x1; $num_bytes = 5; } for (my $i = 0; $i < $num_bytes; ++$i) { my $next = shift @bytes; if (!defined $next || $next < 0x80 || $next > 0xbf) { push @chars, 0xfffd; next BYTE; } else { $char <<= 6; $char |= $next & 0x3f; } } push @chars, $char; } } $_[1] = \@chars; return 1; } 1; __END__ =head1 NAME Locale::RecodeData::UTF_8 - Conversion routines for UTF-8 =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This modules contains the conversion tables for UTF-8. It is capable of converting from UTF-8 to the internal format of libintl-perl and vice versa. It is only suitable for Perl versions E= 5.8.0. However, you do not have to bother about version checking, Locale::Recode(3) will do that for you. =head1 CHARACTER TABLE See http://www.unicode.org/. =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/RecodeData/VISCII.pm000644 000765 000024 00000070760 12716422334 021613 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Conversion routines for VISCII. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::RecodeData::VISCII; use strict; require Locale::RecodeData; use base qw(Locale::RecodeData); my @to_ucs4 = ( 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017, 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac, 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede, 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2, 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead, 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf, 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5, 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3, 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb, 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab, 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9, 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd, 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee, ); my @to_utf8 = ( "\x00", "\x01", "\xe1\xba\xb2", "\x03", "\x04", "\xe1\xba\xb4", "\xe1\xba\xaa", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", "\x10", "\x11", "\x12", "\x13", "\xe1\xbb\xb6", "\x15", "\x16", "\x17", "\x18", "\xe1\xbb\xb8", "\x1a", "\x1b", "\x1c", "\x1d", "\xe1\xbb\xb4", "\x1f", "\x20", "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28", "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40", "\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4a", "\x4b", "\x4c", "\x4d", "\x4e", "\x4f", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f", "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\x7f", "\xe1\xba\xa0", "\xe1\xba\xae", "\xe1\xba\xb0", "\xe1\xba\xb6", "\xe1\xba\xa4", "\xe1\xba\xa6", "\xe1\xba\xa8", "\xe1\xba\xac", "\xe1\xba\xbc", "\xe1\xba\xb8", "\xe1\xba\xbe", "\xe1\xbb\x80", "\xe1\xbb\x82", "\xe1\xbb\x84", "\xe1\xbb\x86", "\xe1\xbb\x90", "\xe1\xbb\x92", "\xe1\xbb\x94", "\xe1\xbb\x96", "\xe1\xbb\x98", "\xe1\xbb\xa2", "\xe1\xbb\x9a", "\xe1\xbb\x9c", "\xe1\xbb\x9e", "\xe1\xbb\x8a", "\xe1\xbb\x8e", "\xe1\xbb\x8c", "\xe1\xbb\x88", "\xe1\xbb\xa6", "\xc5\xa8", "\xe1\xbb\xa4", "\xe1\xbb\xb2", "\xc3\x95", "\xe1\xba\xaf", "\xe1\xba\xb1", "\xe1\xba\xb7", "\xe1\xba\xa5", "\xe1\xba\xa7", "\xe1\xba\xa9", "\xe1\xba\xad", "\xe1\xba\xbd", "\xe1\xba\xb9", "\xe1\xba\xbf", "\xe1\xbb\x81", "\xe1\xbb\x83", "\xe1\xbb\x85", "\xe1\xbb\x87", "\xe1\xbb\x91", "\xe1\xbb\x93", "\xe1\xbb\x95", "\xe1\xbb\x97", "\xe1\xbb\xa0", "\xc6\xa0", "\xe1\xbb\x99", "\xe1\xbb\x9d", "\xe1\xbb\x9f", "\xe1\xbb\x8b", "\xe1\xbb\xb0", "\xe1\xbb\xa8", "\xe1\xbb\xaa", "\xe1\xbb\xac", "\xc6\xa1", "\xe1\xbb\x9b", "\xc6\xaf", "\xc3\x80", "\xc3\x81", "\xc3\x82", "\xc3\x83", "\xe1\xba\xa2", "\xc4\x82", "\xe1\xba\xb3", "\xe1\xba\xb5", "\xc3\x88", "\xc3\x89", "\xc3\x8a", "\xe1\xba\xba", "\xc3\x8c", "\xc3\x8d", "\xc4\xa8", "\xe1\xbb\xb3", "\xc4\x90", "\xe1\xbb\xa9", "\xc3\x92", "\xc3\x93", "\xc3\x94", "\xe1\xba\xa1", "\xe1\xbb\xb7", "\xe1\xbb\xab", "\xe1\xbb\xad", "\xc3\x99", "\xc3\x9a", "\xe1\xbb\xb9", "\xe1\xbb\xb5", "\xc3\x9d", "\xe1\xbb\xa1", "\xc6\xb0", "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xe1\xba\xa3", "\xc4\x83", "\xe1\xbb\xaf", "\xe1\xba\xab", "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xe1\xba\xbb", "\xc3\xac", "\xc3\xad", "\xc4\xa9", "\xe1\xbb\x89", "\xc4\x91", "\xe1\xbb\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xe1\xbb\x8f", "\xe1\xbb\x8d", "\xe1\xbb\xa5", "\xc3\xb9", "\xc3\xba", "\xc5\xa9", "\xe1\xbb\xa7", "\xc3\xbd", "\xe1\xbb\xa3", "\xe1\xbb\xae", ); my %from_ucs4 = ( 0x00000000 => "\x00", 0x00000001 => "\x01", 0x00000003 => "\x03", 0x00000004 => "\x04", 0x00000007 => "\x07", 0x00000008 => "\x08", 0x00000009 => "\x09", 0x0000000a => "\x0a", 0x0000000b => "\x0b", 0x0000000c => "\x0c", 0x0000000d => "\x0d", 0x0000000e => "\x0e", 0x0000000f => "\x0f", 0x00000010 => "\x10", 0x00000011 => "\x11", 0x00000012 => "\x12", 0x00000013 => "\x13", 0x00000015 => "\x15", 0x00000016 => "\x16", 0x00000017 => "\x17", 0x00000018 => "\x18", 0x0000001a => "\x1a", 0x0000001b => "\x1b", 0x0000001c => "\x1c", 0x0000001d => "\x1d", 0x0000001f => "\x1f", 0x00000020 => "\x20", 0x00000021 => "\x21", 0x00000022 => "\x22", 0x00000023 => "\x23", 0x00000024 => "\x24", 0x00000025 => "\x25", 0x00000026 => "\x26", 0x00000027 => "\x27", 0x00000028 => "\x28", 0x00000029 => "\x29", 0x0000002a => "\x2a", 0x0000002b => "\x2b", 0x0000002c => "\x2c", 0x0000002d => "\x2d", 0x0000002e => "\x2e", 0x0000002f => "\x2f", 0x00000030 => "\x30", 0x00000031 => "\x31", 0x00000032 => "\x32", 0x00000033 => "\x33", 0x00000034 => "\x34", 0x00000035 => "\x35", 0x00000036 => "\x36", 0x00000037 => "\x37", 0x00000038 => "\x38", 0x00000039 => "\x39", 0x0000003a => "\x3a", 0x0000003b => "\x3b", 0x0000003c => "\x3c", 0x0000003d => "\x3d", 0x0000003e => "\x3e", 0x0000003f => "\x3f", 0x00000040 => "\x40", 0x00000041 => "\x41", 0x00000042 => "\x42", 0x00000043 => "\x43", 0x00000044 => "\x44", 0x00000045 => "\x45", 0x00000046 => "\x46", 0x00000047 => "\x47", 0x00000048 => "\x48", 0x00000049 => "\x49", 0x0000004a => "\x4a", 0x0000004b => "\x4b", 0x0000004c => "\x4c", 0x0000004d => "\x4d", 0x0000004e => "\x4e", 0x0000004f => "\x4f", 0x00000050 => "\x50", 0x00000051 => "\x51", 0x00000052 => "\x52", 0x00000053 => "\x53", 0x00000054 => "\x54", 0x00000055 => "\x55", 0x00000056 => "\x56", 0x00000057 => "\x57", 0x00000058 => "\x58", 0x00000059 => "\x59", 0x0000005a => "\x5a", 0x0000005b => "\x5b", 0x0000005c => "\x5c", 0x0000005d => "\x5d", 0x0000005e => "\x5e", 0x0000005f => "\x5f", 0x00000060 => "\x60", 0x00000061 => "\x61", 0x00000062 => "\x62", 0x00000063 => "\x63", 0x00000064 => "\x64", 0x00000065 => "\x65", 0x00000066 => "\x66", 0x00000067 => "\x67", 0x00000068 => "\x68", 0x00000069 => "\x69", 0x0000006a => "\x6a", 0x0000006b => "\x6b", 0x0000006c => "\x6c", 0x0000006d => "\x6d", 0x0000006e => "\x6e", 0x0000006f => "\x6f", 0x00000070 => "\x70", 0x00000071 => "\x71", 0x00000072 => "\x72", 0x00000073 => "\x73", 0x00000074 => "\x74", 0x00000075 => "\x75", 0x00000076 => "\x76", 0x00000077 => "\x77", 0x00000078 => "\x78", 0x00000079 => "\x79", 0x0000007a => "\x7a", 0x0000007b => "\x7b", 0x0000007c => "\x7c", 0x0000007d => "\x7d", 0x0000007e => "\x7e", 0x0000007f => "\x7f", 0x000000c0 => "\xc0", 0x000000c1 => "\xc1", 0x000000c2 => "\xc2", 0x000000c3 => "\xc3", 0x000000c8 => "\xc8", 0x000000c9 => "\xc9", 0x000000ca => "\xca", 0x000000cc => "\xcc", 0x000000cd => "\xcd", 0x000000d2 => "\xd2", 0x000000d3 => "\xd3", 0x000000d4 => "\xd4", 0x000000d5 => "\xa0", 0x000000d9 => "\xd9", 0x000000da => "\xda", 0x000000dd => "\xdd", 0x000000e0 => "\xe0", 0x000000e1 => "\xe1", 0x000000e2 => "\xe2", 0x000000e3 => "\xe3", 0x000000e8 => "\xe8", 0x000000e9 => "\xe9", 0x000000ea => "\xea", 0x000000ec => "\xec", 0x000000ed => "\xed", 0x000000f2 => "\xf2", 0x000000f3 => "\xf3", 0x000000f4 => "\xf4", 0x000000f5 => "\xf5", 0x000000f9 => "\xf9", 0x000000fa => "\xfa", 0x000000fd => "\xfd", 0x00000102 => "\xc5", 0x00000103 => "\xe5", 0x00000110 => "\xd0", 0x00000111 => "\xf0", 0x00000128 => "\xce", 0x00000129 => "\xee", 0x00000168 => "\x9d", 0x00000169 => "\xfb", 0x000001a0 => "\xb4", 0x000001a1 => "\xbd", 0x000001af => "\xbf", 0x000001b0 => "\xdf", 0x00001ea0 => "\x80", 0x00001ea1 => "\xd5", 0x00001ea2 => "\xc4", 0x00001ea3 => "\xe4", 0x00001ea4 => "\x84", 0x00001ea5 => "\xa4", 0x00001ea6 => "\x85", 0x00001ea7 => "\xa5", 0x00001ea8 => "\x86", 0x00001ea9 => "\xa6", 0x00001eaa => "\x06", 0x00001eab => "\xe7", 0x00001eac => "\x87", 0x00001ead => "\xa7", 0x00001eae => "\x81", 0x00001eaf => "\xa1", 0x00001eb0 => "\x82", 0x00001eb1 => "\xa2", 0x00001eb2 => "\x02", 0x00001eb3 => "\xc6", 0x00001eb4 => "\x05", 0x00001eb5 => "\xc7", 0x00001eb6 => "\x83", 0x00001eb7 => "\xa3", 0x00001eb8 => "\x89", 0x00001eb9 => "\xa9", 0x00001eba => "\xcb", 0x00001ebb => "\xeb", 0x00001ebc => "\x88", 0x00001ebd => "\xa8", 0x00001ebe => "\x8a", 0x00001ebf => "\xaa", 0x00001ec0 => "\x8b", 0x00001ec1 => "\xab", 0x00001ec2 => "\x8c", 0x00001ec3 => "\xac", 0x00001ec4 => "\x8d", 0x00001ec5 => "\xad", 0x00001ec6 => "\x8e", 0x00001ec7 => "\xae", 0x00001ec8 => "\x9b", 0x00001ec9 => "\xef", 0x00001eca => "\x98", 0x00001ecb => "\xb8", 0x00001ecc => "\x9a", 0x00001ecd => "\xf7", 0x00001ece => "\x99", 0x00001ecf => "\xf6", 0x00001ed0 => "\x8f", 0x00001ed1 => "\xaf", 0x00001ed2 => "\x90", 0x00001ed3 => "\xb0", 0x00001ed4 => "\x91", 0x00001ed5 => "\xb1", 0x00001ed6 => "\x92", 0x00001ed7 => "\xb2", 0x00001ed8 => "\x93", 0x00001ed9 => "\xb5", 0x00001eda => "\x95", 0x00001edb => "\xbe", 0x00001edc => "\x96", 0x00001edd => "\xb6", 0x00001ede => "\x97", 0x00001edf => "\xb7", 0x00001ee0 => "\xb3", 0x00001ee1 => "\xde", 0x00001ee2 => "\x94", 0x00001ee3 => "\xfe", 0x00001ee4 => "\x9e", 0x00001ee5 => "\xf8", 0x00001ee6 => "\x9c", 0x00001ee7 => "\xfc", 0x00001ee8 => "\xba", 0x00001ee9 => "\xd1", 0x00001eea => "\xbb", 0x00001eeb => "\xd7", 0x00001eec => "\xbc", 0x00001eed => "\xd8", 0x00001eee => "\xff", 0x00001eef => "\xe6", 0x00001ef0 => "\xb9", 0x00001ef1 => "\xf1", 0x00001ef2 => "\x9f", 0x00001ef3 => "\xcf", 0x00001ef4 => "\x1e", 0x00001ef5 => "\xdc", 0x00001ef6 => "\x14", 0x00001ef7 => "\xd6", 0x00001ef8 => "\x19", 0x00001ef9 => "\xdb", ); sub _recode { if ($_[0]->{_from} eq 'INTERNAL') { $_[1] = join '', map $from_ucs4{$_} || (defined $from_ucs4{$_} ? $from_ucs4{$_} : "\x3f"), @{$_[1]}; } elsif ($_[0]->{_to} eq 'UTF-8',) { $_[1] = join '', map $to_utf8[$_], unpack 'C*', $_[1]; } else { $_[1] = [ map $to_ucs4[$_], unpack 'C*', $_[1] ]; } return 1; } 1; __END__ =head1 NAME Locale::RecodeData::VISCII - Conversion routines for VISCII =head1 SYNOPSIS This module is internal to libintl. Do not use directly! =head1 DESCRIPTION This module is generated and contains the conversion tables and routines for VISCII. =head1 CHARACTER TABLE The following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. Please read 'ISO-10646' as 'ISO-10646-UCS4'. Local | ISO-10646 | Description -------+-----------+------------------------------------------------- 00 | 00000000 | NULL (NUL) 01 | 00000001 | START OF HEADING (SOH) 02 | 00001EB2 | LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE 03 | 00000003 | END OF TEXT (ETX) 04 | 00000004 | END OF TRANSMISSION (EOT) 05 | 00001EB4 | LATIN CAPITAL LETTER A WITH BREVE AND TILDE 06 | 00001EAA | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE 07 | 00000007 | BELL (BEL) 08 | 00000008 | BACKSPACE (BS) 09 | 00000009 | CHARACTER TABULATION (HT) 0A | 0000000A | LINE FEED (LF) 0B | 0000000B | LINE TABULATION (VT) 0C | 0000000C | FORM FEED (FF) 0D | 0000000D | CARRIAGE RETURN (CR) 0E | 0000000E | SHIFT OUT (SO) 0F | 0000000F | SHIFT IN (SI) 10 | 00000010 | DATALINK ESCAPE (DLE) 11 | 00000011 | DEVICE CONTROL ONE (DC1) 12 | 00000012 | DEVICE CONTROL TWO (DC2) 13 | 00000013 | DEVICE CONTROL THREE (DC3) 14 | 00001EF6 | LATIN CAPITAL LETTER Y WITH HOOK ABOVE 15 | 00000015 | NEGATIVE ACKNOWLEDGE (NAK) 16 | 00000016 | SYNCHRONOUS IDLE (SYN) 17 | 00000017 | END OF TRANSMISSION BLOCK (ETB) 18 | 00000018 | CANCEL (CAN) 19 | 00001EF8 | LATIN CAPITAL LETTER Y WITH TILDE 1A | 0000001A | SUBSTITUTE (SUB) 1B | 0000001B | ESCAPE (ESC) 1C | 0000001C | FILE SEPARATOR (IS4) 1D | 0000001D | GROUP SEPARATOR (IS3) 1E | 00001EF4 | LATIN CAPITAL LETTER Y WITH DOT BELOW 1F | 0000001F | UNIT SEPARATOR (IS1) 20 | 00000020 | SPACE 21 | 00000021 | EXCLAMATION MARK 22 | 00000022 | QUOTATION MARK 23 | 00000023 | NUMBER SIGN 24 | 00000024 | DOLLAR SIGN 25 | 00000025 | PERCENT SIGN 26 | 00000026 | AMPERSAND 27 | 00000027 | APOSTROPHE 28 | 00000028 | LEFT PARENTHESIS 29 | 00000029 | RIGHT PARENTHESIS 2A | 0000002A | ASTERISK 2B | 0000002B | PLUS SIGN 2C | 0000002C | COMMA 2D | 0000002D | HYPHEN-MINUS 2E | 0000002E | FULL STOP 2F | 0000002F | SOLIDUS 30 | 00000030 | DIGIT ZERO 31 | 00000031 | DIGIT ONE 32 | 00000032 | DIGIT TWO 33 | 00000033 | DIGIT THREE 34 | 00000034 | DIGIT FOUR 35 | 00000035 | DIGIT FIVE 36 | 00000036 | DIGIT SIX 37 | 00000037 | DIGIT SEVEN 38 | 00000038 | DIGIT EIGHT 39 | 00000039 | DIGIT NINE 3A | 0000003A | COLON 3B | 0000003B | SEMICOLON 3C | 0000003C | LESS-THAN SIGN 3D | 0000003D | EQUALS SIGN 3E | 0000003E | GREATER-THAN SIGN 3F | 0000003F | QUESTION MARK 40 | 00000040 | COMMERCIAL AT 41 | 00000041 | LATIN CAPITAL LETTER A 42 | 00000042 | LATIN CAPITAL LETTER B 43 | 00000043 | LATIN CAPITAL LETTER C 44 | 00000044 | LATIN CAPITAL LETTER D 45 | 00000045 | LATIN CAPITAL LETTER E 46 | 00000046 | LATIN CAPITAL LETTER F 47 | 00000047 | LATIN CAPITAL LETTER G 48 | 00000048 | LATIN CAPITAL LETTER H 49 | 00000049 | LATIN CAPITAL LETTER I 4A | 0000004A | LATIN CAPITAL LETTER J 4B | 0000004B | LATIN CAPITAL LETTER K 4C | 0000004C | LATIN CAPITAL LETTER L 4D | 0000004D | LATIN CAPITAL LETTER M 4E | 0000004E | LATIN CAPITAL LETTER N 4F | 0000004F | LATIN CAPITAL LETTER O 50 | 00000050 | LATIN CAPITAL LETTER P 51 | 00000051 | LATIN CAPITAL LETTER Q 52 | 00000052 | LATIN CAPITAL LETTER R 53 | 00000053 | LATIN CAPITAL LETTER S 54 | 00000054 | LATIN CAPITAL LETTER T 55 | 00000055 | LATIN CAPITAL LETTER U 56 | 00000056 | LATIN CAPITAL LETTER V 57 | 00000057 | LATIN CAPITAL LETTER W 58 | 00000058 | LATIN CAPITAL LETTER X 59 | 00000059 | LATIN CAPITAL LETTER Y 5A | 0000005A | LATIN CAPITAL LETTER Z 5B | 0000005B | LEFT SQUARE BRACKET 5C | 0000005C | REVERSE SOLIDUS 5D | 0000005D | RIGHT SQUARE BRACKET 5E | 0000005E | CIRCUMFLEX ACCENT 5F | 0000005F | LOW LINE 60 | 00000060 | GRAVE ACCENT 61 | 00000061 | LATIN SMALL LETTER A 62 | 00000062 | LATIN SMALL LETTER B 63 | 00000063 | LATIN SMALL LETTER C 64 | 00000064 | LATIN SMALL LETTER D 65 | 00000065 | LATIN SMALL LETTER E 66 | 00000066 | LATIN SMALL LETTER F 67 | 00000067 | LATIN SMALL LETTER G 68 | 00000068 | LATIN SMALL LETTER H 69 | 00000069 | LATIN SMALL LETTER I 6A | 0000006A | LATIN SMALL LETTER J 6B | 0000006B | LATIN SMALL LETTER K 6C | 0000006C | LATIN SMALL LETTER L 6D | 0000006D | LATIN SMALL LETTER M 6E | 0000006E | LATIN SMALL LETTER N 6F | 0000006F | LATIN SMALL LETTER O 70 | 00000070 | LATIN SMALL LETTER P 71 | 00000071 | LATIN SMALL LETTER Q 72 | 00000072 | LATIN SMALL LETTER R 73 | 00000073 | LATIN SMALL LETTER S 74 | 00000074 | LATIN SMALL LETTER T 75 | 00000075 | LATIN SMALL LETTER U 76 | 00000076 | LATIN SMALL LETTER V 77 | 00000077 | LATIN SMALL LETTER W 78 | 00000078 | LATIN SMALL LETTER X 79 | 00000079 | LATIN SMALL LETTER Y 7A | 0000007A | LATIN SMALL LETTER Z 7B | 0000007B | LEFT CURLY BRACKET 7C | 0000007C | VERTICAL LINE 7D | 0000007D | RIGHT CURLY BRACKET 7E | 0000007E | TILDE 7F | 0000007F | DELETE (DEL) 80 | 00001EA0 | LATIN CAPITAL LETTER A WITH DOT BELOW 81 | 00001EAE | LATIN CAPITAL LETTER A WITH BREVE AND ACUTE 82 | 00001EB0 | LATIN CAPITAL LETTER A WITH BREVE AND GRAVE 83 | 00001EB6 | LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW 84 | 00001EA4 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE 85 | 00001EA6 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE 86 | 00001EA8 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 87 | 00001EAC | LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW 88 | 00001EBC | LATIN CAPITAL LETTER E WITH TILDE 89 | 00001EB8 | LATIN CAPITAL LETTER E WITH DOT BELOW 8A | 00001EBE | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE 8B | 00001EC0 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE 8C | 00001EC2 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 8D | 00001EC4 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE 8E | 00001EC6 | LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW 8F | 00001ED0 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE 90 | 00001ED2 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE 91 | 00001ED4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 92 | 00001ED6 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE 93 | 00001ED8 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW 94 | 00001EE2 | LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW 95 | 00001EDA | LATIN CAPITAL LETTER O WITH HORN AND ACUTE 96 | 00001EDC | LATIN CAPITAL LETTER O WITH HORN AND GRAVE 97 | 00001EDE | LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE 98 | 00001ECA | LATIN CAPITAL LETTER I WITH DOT BELOW 99 | 00001ECE | LATIN CAPITAL LETTER O WITH HOOK ABOVE 9A | 00001ECC | LATIN CAPITAL LETTER O WITH DOT BELOW 9B | 00001EC8 | LATIN CAPITAL LETTER I WITH HOOK ABOVE 9C | 00001EE6 | LATIN CAPITAL LETTER U WITH HOOK ABOVE 9D | 00000168 | LATIN CAPITAL LETTER U WITH TILDE 9E | 00001EE4 | LATIN CAPITAL LETTER U WITH DOT BELOW 9F | 00001EF2 | LATIN CAPITAL LETTER Y WITH GRAVE A0 | 000000D5 | LATIN CAPITAL LETTER O WITH TILDE A1 | 00001EAF | LATIN SMALL LETTER A WITH BREVE AND ACUTE A2 | 00001EB1 | LATIN SMALL LETTER A WITH BREVE AND GRAVE A3 | 00001EB7 | LATIN SMALL LETTER A WITH BREVE AND DOT BELOW A4 | 00001EA5 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE A5 | 00001EA7 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE A6 | 00001EA9 | LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE A7 | 00001EAD | LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW A8 | 00001EBD | LATIN SMALL LETTER E WITH TILDE A9 | 00001EB9 | LATIN SMALL LETTER E WITH DOT BELOW AA | 00001EBF | LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE AB | 00001EC1 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE AC | 00001EC3 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE AD | 00001EC5 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE AE | 00001EC7 | LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW AF | 00001ED1 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE B0 | 00001ED3 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE B1 | 00001ED5 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE B2 | 00001ED7 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE B3 | 00001EE0 | LATIN CAPITAL LETTER O WITH HORN AND TILDE B4 | 000001A0 | LATIN CAPITAL LETTER O WITH HORN B5 | 00001ED9 | LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW B6 | 00001EDD | LATIN SMALL LETTER O WITH HORN AND GRAVE B7 | 00001EDF | LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE B8 | 00001ECB | LATIN SMALL LETTER I WITH DOT BELOW B9 | 00001EF0 | LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW BA | 00001EE8 | LATIN CAPITAL LETTER U WITH HORN AND ACUTE BB | 00001EEA | LATIN CAPITAL LETTER U WITH HORN AND GRAVE BC | 00001EEC | LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE BD | 000001A1 | LATIN SMALL LETTER O WITH HORN BE | 00001EDB | LATIN SMALL LETTER O WITH HORN AND ACUTE BF | 000001AF | LATIN CAPITAL LETTER U WITH HORN C0 | 000000C0 | LATIN CAPITAL LETTER A WITH GRAVE C1 | 000000C1 | LATIN CAPITAL LETTER A WITH ACUTE C2 | 000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX C3 | 000000C3 | LATIN CAPITAL LETTER A WITH TILDE C4 | 00001EA2 | LATIN CAPITAL LETTER A WITH HOOK ABOVE C5 | 00000102 | LATIN CAPITAL LETTER A WITH BREVE C6 | 00001EB3 | LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE C7 | 00001EB5 | LATIN SMALL LETTER A WITH BREVE AND TILDE C8 | 000000C8 | LATIN CAPITAL LETTER E WITH GRAVE C9 | 000000C9 | LATIN CAPITAL LETTER E WITH ACUTE CA | 000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX CB | 00001EBA | LATIN CAPITAL LETTER E WITH HOOK ABOVE CC | 000000CC | LATIN CAPITAL LETTER I WITH GRAVE CD | 000000CD | LATIN CAPITAL LETTER I WITH ACUTE CE | 00000128 | LATIN CAPITAL LETTER I WITH TILDE CF | 00001EF3 | LATIN SMALL LETTER Y WITH GRAVE D0 | 00000110 | LATIN CAPITAL LETTER D WITH STROKE D1 | 00001EE9 | LATIN SMALL LETTER U WITH HORN AND ACUTE D2 | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE D3 | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE D4 | 000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX D5 | 00001EA1 | LATIN SMALL LETTER A WITH DOT BELOW D6 | 00001EF7 | LATIN SMALL LETTER Y WITH HOOK ABOVE D7 | 00001EEB | LATIN SMALL LETTER U WITH HORN AND GRAVE D8 | 00001EED | LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE D9 | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE DA | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE DB | 00001EF9 | LATIN SMALL LETTER Y WITH TILDE DC | 00001EF5 | LATIN SMALL LETTER Y WITH DOT BELOW DD | 000000DD | LATIN CAPITAL LETTER Y WITH ACUTE DE | 00001EE1 | LATIN SMALL LETTER O WITH HORN AND TILDE DF | 000001B0 | LATIN SMALL LETTER U WITH HORN E0 | 000000E0 | LATIN SMALL LETTER A WITH GRAVE E1 | 000000E1 | LATIN SMALL LETTER A WITH ACUTE E2 | 000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX E3 | 000000E3 | LATIN SMALL LETTER A WITH TILDE E4 | 00001EA3 | LATIN SMALL LETTER A WITH HOOK ABOVE E5 | 00000103 | LATIN SMALL LETTER A WITH BREVE E6 | 00001EEF | LATIN SMALL LETTER U WITH HORN AND TILDE E7 | 00001EAB | LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE E8 | 000000E8 | LATIN SMALL LETTER E WITH GRAVE E9 | 000000E9 | LATIN SMALL LETTER E WITH ACUTE EA | 000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX EB | 00001EBB | LATIN SMALL LETTER E WITH HOOK ABOVE EC | 000000EC | LATIN SMALL LETTER I WITH GRAVE ED | 000000ED | LATIN SMALL LETTER I WITH ACUTE EE | 00000129 | LATIN SMALL LETTER I WITH TILDE EF | 00001EC9 | LATIN SMALL LETTER I WITH HOOK ABOVE F0 | 00000111 | LATIN SMALL LETTER D WITH STROKE F1 | 00001EF1 | LATIN SMALL LETTER U WITH HORN AND DOT BELOW F2 | 000000F2 | LATIN SMALL LETTER O WITH GRAVE F3 | 000000F3 | LATIN SMALL LETTER O WITH ACUTE F4 | 000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX F5 | 000000F5 | LATIN SMALL LETTER O WITH TILDE F6 | 00001ECF | LATIN SMALL LETTER O WITH HOOK ABOVE F7 | 00001ECD | LATIN SMALL LETTER O WITH DOT BELOW F8 | 00001EE5 | LATIN SMALL LETTER U WITH DOT BELOW F9 | 000000F9 | LATIN SMALL LETTER U WITH GRAVE FA | 000000FA | LATIN SMALL LETTER U WITH ACUTE FB | 00000169 | LATIN SMALL LETTER U WITH TILDE FC | 00001EE7 | LATIN SMALL LETTER U WITH HOOK ABOVE FD | 000000FD | LATIN SMALL LETTER Y WITH ACUTE FE | 00001EE3 | LATIN SMALL LETTER O WITH HORN AND DOT BELOW FF | 00001EEE | LATIN CAPITAL LETTER U WITH HORN AND TILDE =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::RecodeData(3), Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/Recode/_Aliases.pm000644 000765 000024 00000056765 12716422333 021563 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # Internally known aliases for charsets. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::Recode::_Aliases; use constant ALIASES => { '1047' => 'IBM1047', '437' => 'IBM437', '850' => 'IBM850', '851' => 'IBM851', '852' => 'IBM852', '855' => 'IBM855', '857' => 'IBM857', '860' => 'IBM860', '861' => 'IBM861', '862' => 'IBM862', '863' => 'IBM863', '865' => 'IBM865', '866' => 'IBM866', '869' => 'IBM869', '904' => 'IBM904', 'ANSI_X3.4-1968' => 'US-ASCII', 'ANSI_X3.4-1986' => 'US-ASCII', 'ARABIC' => 'ISO-8859-6', 'ARABIC7' => 'ASMO_449', 'ASCII' => 'US-ASCII', 'ASMO-708' => 'ISO-8859-6', 'ATARIST' => 'ATARI-ST', 'ATARIST-EURO' => 'ATARI-ST-EURO', 'BIG-5' => 'BIG5', 'BIG-FIVE' => 'BIG5', 'BIG5-ETEN' => 'BIG5', 'BIG5HKSCS' => 'BIG5-HKSCS', 'BIGFIVE' => 'BIG5', 'CA' => 'CSA_Z243.4-1985-1', 'CCSID00924' => 'IBM00924', 'CCSID01140' => 'IBM01140', 'CCSID01141' => 'IBM01141', 'CCSID01142' => 'IBM01142', 'CCSID01143' => 'IBM01143', 'CCSID01144' => 'IBM01144', 'CCSID01145' => 'IBM01145', 'CCSID01146' => 'IBM01146', 'CCSID01147' => 'IBM01147', 'CCSID01148' => 'IBM01148', 'CCSID01149' => 'IBM01149', 'CHINESE' => 'GB_2312-80', 'CN' => 'GB_1988-80', 'CN-BIG5' => 'BIG5', 'CP-AR' => 'IBM868', 'CP-GR' => 'IBM869', 'CP-HU' => 'CWI', 'CP-IS' => 'IBM861', 'CP00924' => 'IBM00924', 'CP01140' => 'IBM01140', 'CP01141' => 'IBM01141', 'CP01142' => 'IBM01142', 'CP01143' => 'IBM01143', 'CP01144' => 'IBM01144', 'CP01145' => 'IBM01145', 'CP01146' => 'IBM01146', 'CP01147' => 'IBM01147', 'CP01148' => 'IBM01148', 'CP01149' => 'IBM01149', 'CP037' => 'IBM037', 'CP038' => 'IBM038', 'CP1004' => 'IBM1004', 'CP1026' => 'IBM1026', 'CP1047' => 'IBM1047', 'CP1250' => 'WINDOWS-1250', 'CP1251' => 'WINDOWS-1251', 'CP1252' => 'WINDOWS-1252', 'CP1253' => 'WINDOWS-1253', 'CP1254' => 'WINDOWS-1254', 'CP1255' => 'WINDOWS-1255', 'CP1256' => 'WINDOWS-1256', 'CP1257' => 'WINDOWS-1257', 'CP1258' => 'WINDOWS-1258', 'CP154' => 'PTCP154', 'CP273' => 'IBM273', 'CP274' => 'IBM274', 'CP275' => 'IBM275', 'CP278' => 'IBM278', 'CP280' => 'IBM280', 'CP281' => 'IBM281', 'CP284' => 'IBM284', 'CP285' => 'IBM285', 'CP290' => 'IBM290', 'CP297' => 'IBM297', 'CP367' => 'US-ASCII', 'CP420' => 'IBM420', 'CP423' => 'IBM423', 'CP424' => 'IBM424', 'CP437' => 'IBM437', 'CP500' => 'IBM500', 'CP775' => 'IBM775', 'CP819' => 'ISO-8859-1', 'CP850' => 'IBM850', 'CP851' => 'IBM851', 'CP852' => 'IBM852', 'CP855' => 'IBM855', 'CP857' => 'IBM857', 'CP860' => 'IBM860', 'CP861' => 'IBM861', 'CP862' => 'IBM862', 'CP863' => 'IBM863', 'CP864' => 'IBM864', 'CP865' => 'IBM865', 'CP866' => 'IBM866', 'CP868' => 'IBM868', 'CP869' => 'IBM869', 'CP870' => 'IBM870', 'CP871' => 'IBM871', 'CP874' => 'IBM874', 'CP875' => 'IBM875', 'CP880' => 'IBM880', 'CP891' => 'IBM891', 'CP903' => 'IBM903', 'CP904' => 'IBM904', 'CP905' => 'IBM905', 'CP918' => 'IBM918', 'CP936' => 'GBK', 'CSA7-1' => 'CSA_Z243.4-1985-1', 'CSA7-2' => 'CSA_Z243.4-1985-2', 'CSADOBESTANDARDENCODING' => 'ADOBE-STANDARD-ENCODING', 'CSASCII' => 'US-ASCII', 'CSA_T500-1983' => 'ANSI_X3.110-1983', 'CSBIG5' => 'BIG5', 'CSBOCU-1' => 'BOCU-1', 'CSCESU-8' => 'CESU-8', 'CSDECMCS' => 'DEC-MCS', 'CSDKUS' => 'DK-US', 'CSEBCDICATDEA' => 'EBCDIC-AT-DE-A', 'CSEBCDICCAFR' => 'EBCDIC-CA-FR', 'CSEBCDICDKNO' => 'EBCDIC-DK-NO', 'CSEBCDICDKNOA' => 'EBCDIC-DK-NO-A', 'CSEBCDICES' => 'EBCDIC-ES', 'CSEBCDICESA' => 'EBCDIC-ES-A', 'CSEBCDICESS' => 'EBCDIC-ES-S', 'CSEBCDICFISE' => 'EBCDIC-FI-SE', 'CSEBCDICFISEA' => 'EBCDIC-FI-SE-A', 'CSEBCDICFR' => 'EBCDIC-FR', 'CSEBCDICIT' => 'EBCDIC-IT', 'CSEBCDICPT' => 'EBCDIC-PT', 'CSEBCDICUK' => 'EBCDIC-UK', 'CSEBCDICUS' => 'EBCDIC-US', 'CSEUCFIXWIDJAPANESE' => 'EXTENDED_UNIX_CODE_FIXED_WIDTH_FOR_JAPANESE', 'CSEUCKR' => 'EUC-KR', 'CSEUCPKDFMTJAPANESE' => 'EUC-JP', 'CSEUCTW' => 'EUC-TW', 'CSGB2312' => 'GB2312', 'CSHALFWIDTHKATAKANA' => 'JIS_X0201', 'CSHPDESKTOP' => 'HP-DESKTOP', 'CSHPLEGAL' => 'HP-LEGAL', 'CSHPMATH8' => 'HP-MATH8', 'CSHPPIFONT' => 'HP-PI-FONT', 'CSHPPSMATH' => 'ADOBE-SYMBOL-ENCODING', 'CSHPROMAN8' => 'HP-ROMAN8', 'CSIBBM904' => 'IBM904', 'CSIBM037' => 'IBM037', 'CSIBM038' => 'IBM038', 'CSIBM1026' => 'IBM1026', 'CSIBM273' => 'IBM273', 'CSIBM274' => 'IBM274', 'CSIBM275' => 'IBM275', 'CSIBM277' => 'IBM277', 'CSIBM278' => 'IBM278', 'CSIBM280' => 'IBM280', 'CSIBM281' => 'IBM281', 'CSIBM284' => 'IBM284', 'CSIBM285' => 'IBM285', 'CSIBM290' => 'IBM290', 'CSIBM297' => 'IBM297', 'CSIBM420' => 'IBM420', 'CSIBM423' => 'IBM423', 'CSIBM424' => 'IBM424', 'CSIBM500' => 'IBM500', 'CSIBM851' => 'IBM851', 'CSIBM855' => 'IBM855', 'CSIBM857' => 'IBM857', 'CSIBM860' => 'IBM860', 'CSIBM861' => 'IBM861', 'CSIBM863' => 'IBM863', 'CSIBM864' => 'IBM864', 'CSIBM865' => 'IBM865', 'CSIBM866' => 'IBM866', 'CSIBM868' => 'IBM868', 'CSIBM869' => 'IBM869', 'CSIBM870' => 'IBM870', 'CSIBM871' => 'IBM871', 'CSIBM880' => 'IBM880', 'CSIBM891' => 'IBM891', 'CSIBM903' => 'IBM903', 'CSIBM905' => 'IBM905', 'CSIBM918' => 'IBM918', 'CSIBMEBCDICATDE' => 'EBCDIC-AT-DE', 'CSIBMSYMBOLS' => 'IBM-SYMBOLS', 'CSIBMTHAI' => 'IBM-THAI', 'CSINVARIANT' => 'INVARIANT', 'CSISO102T617BIT' => 'T.61-7BIT', 'CSISO10367BOX' => 'ISO_10367-BOX', 'CSISO10646UTF1' => 'ISO-10646-UTF-1', 'CSISO10SWEDISH' => 'SEN_850200_B', 'CSISO111ECMACYRILLIC' => 'ECMA-CYRILLIC', 'CSISO11SWEDISHFORNAMES' => 'SEN_850200_C', 'CSISO121CANADIAN1' => 'CSA_Z243.4-1985-1', 'CSISO122CANADIAN2' => 'CSA_Z243.4-1985-2', 'CSISO123CSAZ24341985GR' => 'CSA_Z243.4-1985-GR', 'CSISO128T101G2' => 'T.101-G2', 'CSISO139CSN369103' => 'CSN_369103', 'CSISO13JISC6220JP' => 'JIS_C6220-1969-JP', 'CSISO141JUSIB1002' => 'JUS_I.B1.002', 'CSISO143IECP271' => 'IEC_P27-1', 'CSISO146SERBIAN' => 'JUS_I.B1.003-SERB', 'CSISO147MACEDONIAN' => 'JUS_I.B1.003-MAC', 'CSISO14JISC6220RO' => 'JIS_C6220-1969-RO', 'CSISO150' => 'GREEK-CCITT', 'CSISO150GREEKCCITT' => 'GREEK-CCITT', 'CSISO151CUBA' => 'NC_NC00-10:81', 'CSISO153GOST1976874' => 'GOST_19768-74', 'CSISO158LAP' => 'LATIN-LAP', 'CSISO159JISX02121990' => 'JIS_X0212-1990', 'CSISO15ITALIAN' => 'IT', 'CSISO16PORTUGUESE' => 'PT', 'CSISO17SPANISH' => 'ES', 'CSISO18GREEK7OLD' => 'GREEK7-OLD', 'CSISO19LATINGREEK' => 'LATIN-GREEK', 'CSISO2022JP' => 'ISO-2022-JP', 'CSISO2022JP2' => 'ISO-2022-JP-2', 'CSISO2022KR' => 'ISO-2022-KR', 'CSISO2033' => 'ISO_2033-1983', 'CSISO21GERMAN' => 'DIN_66003', 'CSISO25FRENCH' => 'NF_Z_62-010_(1973)', 'CSISO27LATINGREEK1' => 'LATIN-GREEK-1', 'CSISO2INTLREFVERSION' => 'ISO_646.IRV:1983', 'CSISO42JISC62261978' => 'JIS_C6226-1978', 'CSISO47BSVIEWDATA' => 'BS_VIEWDATA', 'CSISO49INIS' => 'INIS', 'CSISO4UNITEDKINGDOM' => 'BS_4730', 'CSISO50INIS8' => 'INIS-8', 'CSISO51INISCYRILLIC' => 'INIS-CYRILLIC', 'CSISO5427CYRILLIC' => 'ISO_5427', 'CSISO5428GREEK' => 'ISO_5428:1980', 'CSISO57GB1988' => 'GB_1988-80', 'CSISO58GB231280' => 'GB_2312-80', 'CSISO60DANISHNORWEGIAN' => 'NS_4551-1', 'CSISO60NORWEGIAN1' => 'NS_4551-1', 'CSISO61NORWEGIAN2' => 'NS_4551-2', 'CSISO646BASIC1983' => 'ISO_646.BASIC:1983', 'CSISO646DANISH' => 'DS_2089', 'CSISO6937ADD' => 'ISO_6937-2-25', 'CSISO69FRENCH' => 'NF_Z_62-010', 'CSISO70VIDEOTEXSUPP1' => 'VIDEOTEX-SUPPL', 'CSISO84PORTUGUESE2' => 'PT2', 'CSISO85SPANISH2' => 'ES2', 'CSISO86HUNGARIAN' => 'MSZ_7795.3', 'CSISO87JISX0208' => 'JIS_C6226-1983', 'CSISO88596E' => 'ISO-8859-6-E', 'CSISO88596I' => 'ISO-8859-6-I', 'CSISO88598E' => 'ISO-8859-8-E', 'CSISO88598I' => 'ISO-8859-8-I', 'CSISO8859SUPP' => 'ISO_8859-SUPP', 'CSISO88GREEK7' => 'GREEK7', 'CSISO89ASMO449' => 'ASMO_449', 'CSISO90' => 'ISO-IR-90', 'CSISO91JISC62291984A' => 'JIS_C6229-1984-A', 'CSISO92JISC62991984B' => 'JIS_C6229-1984-B', 'CSISO93JIS62291984BADD' => 'JIS_C6229-1984-B-ADD', 'CSISO94JIS62291984HAND' => 'JIS_C6229-1984-HAND', 'CSISO95JIS62291984HANDADD' => 'JIS_C6229-1984-HAND-ADD', 'CSISO96JISC62291984KANA' => 'JIS_C6229-1984-KANA', 'CSISO99NAPLPS' => 'ANSI_X3.110-1983', 'CSISOLATIN1' => 'ISO-8859-1', 'CSISOLATIN2' => 'ISO-8859-2', 'CSISOLATIN3' => 'ISO-8859-3', 'CSISOLATIN4' => 'ISO-8859-4', 'CSISOLATIN5' => 'ISO-8859-9', 'CSISOLATIN6' => 'ISO-8859-10', 'CSISOLATINARABIC' => 'ISO-8859-6', 'CSISOLATINCYRILLIC' => 'ISO-8859-5', 'CSISOLATINGREEK' => 'ISO-8859-7', 'CSISOLATINHEBREW' => 'ISO-8859-8', 'CSISOTEXTCOMM' => 'ISO_6937-2-ADD', 'CSJISENCODING' => 'JIS_ENCODING', 'CSKOI8R' => 'KOI8-R', 'CSKSC56011987' => 'KS_C_5601-1987', 'CSKSC5636' => 'KSC5636', 'CSMACINTOSH' => 'MACINTOSH', 'CSMICROSOFTPUBLISHING' => 'MICROSOFT-PUBLISHING', 'CSMNEM' => 'MNEM', 'CSMNEMONIC' => 'MNEMONIC', 'CSNATSDANO' => 'NATS-DANO', 'CSNATSDANOADD' => 'NATS-DANO-ADD', 'CSNATSSEFI' => 'NATS-SEFI', 'CSNATSSEFIADD' => 'NATS-SEFI-ADD', 'CSPC775BALTIC' => 'IBM775', 'CSPC850MULTILINGUAL' => 'IBM850', 'CSPC862LATINHEBREW' => 'IBM862', 'CSPC8CODEPAGE437' => 'IBM437', 'CSPC8DANISHNORWEGIAN' => 'PC8-DANISH-NORWEGIAN', 'CSPC8TURKISH' => 'PC8-TURKISH', 'CSPCP852' => 'IBM852', 'CSPTCP154' => 'PTCP154', 'CSSHIFTJIS' => 'SHIFT_JIS', 'CSUCS4' => 'ISO-10646-UCS-4', 'CSUNICODE' => 'ISO-10646-UCS-2', 'CSUNICODE11' => 'UNICODE-1-1', 'CSUNICODE11UTF7' => 'UNICODE-1-1-UTF-7', 'CSUNICODEASCII' => 'ISO-10646-UCS-BASIC', 'CSUNICODEIBM1264' => 'ISO-UNICODE-IBM-1264', 'CSUNICODEIBM1265' => 'ISO-UNICODE-IBM-1265', 'CSUNICODEIBM1268' => 'ISO-UNICODE-IBM-1268', 'CSUNICODEIBM1276' => 'ISO-UNICODE-IBM-1276', 'CSUNICODELATIN1' => 'ISO-10646-UNICODE-LATIN1', 'CSUNKNOWN8BIT' => 'UNKNOWN-8BIT', 'CSUSDK' => 'US-DK', 'CSVENTURAINTERNATIONAL' => 'VENTURA-INTERNATIONAL', 'CSVENTURAMATH' => 'VENTURA-MATH', 'CSVENTURAUS' => 'VENTURA-US', 'CSVIQR' => 'VIQR', 'CSVISCII' => 'VISCII', 'CSWINDOWS30LATIN1' => 'ISO-8859-1-WINDOWS-3.0-LATIN-1', 'CSWINDOWS31J' => 'WINDOWS-31J', 'CSWINDOWS31LATIN1' => 'ISO-8859-1-WINDOWS-3.1-LATIN-1', 'CSWINDOWS31LATIN2' => 'ISO-8859-2-WINDOWS-LATIN-2', 'CSWINDOWS31LATIN5' => 'ISO-8859-9-WINDOWS-LATIN-5', 'CUBA' => 'NC_NC00-10:81', 'CWI-2' => 'CWI', 'CYRILLIC' => 'ISO-8859-5', 'CYRILLIC-ASIAN' => 'PTCP154', 'DE' => 'DIN_66003', 'DEC' => 'DEC-MCS', 'DK' => 'DS_2089', 'DS2089' => 'DS_2089', 'E13B' => 'ISO_2033-1983', 'EBCDIC-BE' => 'IBM274', 'EBCDIC-BR' => 'IBM275', 'EBCDIC-CP-AR1' => 'IBM420', 'EBCDIC-CP-AR2' => 'IBM918', 'EBCDIC-CP-BE' => 'IBM500', 'EBCDIC-CP-CA' => 'IBM037', 'EBCDIC-CP-CH' => 'IBM500', 'EBCDIC-CP-DK' => 'IBM277', 'EBCDIC-CP-ES' => 'IBM284', 'EBCDIC-CP-FI' => 'IBM278', 'EBCDIC-CP-FR' => 'IBM297', 'EBCDIC-CP-GB' => 'IBM285', 'EBCDIC-CP-GR' => 'IBM423', 'EBCDIC-CP-HE' => 'IBM424', 'EBCDIC-CP-IS' => 'IBM871', 'EBCDIC-CP-IT' => 'IBM280', 'EBCDIC-CP-NL' => 'IBM037', 'EBCDIC-CP-NO' => 'IBM277', 'EBCDIC-CP-ROECE' => 'IBM870', 'EBCDIC-CP-SE' => 'IBM278', 'EBCDIC-CP-TR' => 'IBM905', 'EBCDIC-CP-US' => 'IBM037', 'EBCDIC-CP-WT' => 'IBM037', 'EBCDIC-CP-YU' => 'IBM870', 'EBCDIC-CYRILLIC' => 'IBM880', 'EBCDIC-DE-273+EURO' => 'IBM01141', 'EBCDIC-DK-277+EURO' => 'IBM01142', 'EBCDIC-ES-284+EURO' => 'IBM01145', 'EBCDIC-FI-278+EURO' => 'IBM01143', 'EBCDIC-FR-297+EURO' => 'IBM01147', 'EBCDIC-GB-285+EURO' => 'IBM01146', 'EBCDIC-GREEK' => 'IBM875', 'EBCDIC-INT' => 'IBM038', 'EBCDIC-INT1' => 'IBM256', 'EBCDIC-INTERNATIONAL-500+EURO' => 'IBM01148', 'EBCDIC-IS-871+EURO' => 'IBM01149', 'EBCDIC-IT-280+EURO' => 'IBM01144', 'EBCDIC-JP-E' => 'IBM281', 'EBCDIC-JP-KANA' => 'IBM290', 'EBCDIC-LATIN9--EURO' => 'IBM00924', 'EBCDIC-NO-277+EURO' => 'IBM01142', 'EBCDIC-SE-278+EURO' => 'IBM01143', 'EBCDIC-US-37+EURO' => 'IBM01140', 'ECMA-114' => 'ISO-8859-6', 'ECMA-118' => 'ISO-8859-7', 'ELOT_928' => 'ISO-8859-7', 'EUC-CN' => 'CN-GB', 'EUCCN' => 'CN-GB', 'EUCJP' => 'EUC-JP', 'EUCKR' => 'EUC-KR', 'EUCTW' => 'EUC-TW', 'EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE' => 'EUC-JP', 'FI' => 'SEN_850200_B', 'FR' => 'NF_Z_62-010', 'FRISS' => 'EBCDIC-IS-FRISS', 'GB' => 'BS_4730', 'GB2312' => 'CN-GB', 'GBK' => 'CP936', 'GREEK' => 'ISO-8859-7', 'GREEK8' => 'ISO-8859-7', 'HEBREW' => 'ISO-8859-8', 'HU' => 'MSZ_7795.3', 'HZ-GB-2312' => 'HZ', 'IBM367' => 'US-ASCII', 'IBM775' => 'CP775', 'IBM819' => 'ISO-8859-1', 'IRV' => 'ISO_646.IRV:1983', 'ISO-10646' => 'ISO-10646-UNICODE-LATIN1', 'ISO-CELTIC' => 'ISO-8859-14', 'ISO-IR-10' => 'SEN_850200_B', 'ISO-IR-100' => 'ISO-8859-1', 'ISO-IR-101' => 'ISO-8859-2', 'ISO-IR-102' => 'T.61-7BIT', 'ISO-IR-109' => 'ISO-8859-3', 'ISO-IR-11' => 'SEN_850200_C', 'ISO-IR-110' => 'ISO-8859-4', 'ISO-IR-111' => 'ECMA-CYRILLIC', 'ISO-IR-121' => 'CSA_Z243.4-1985-1', 'ISO-IR-122' => 'CSA_Z243.4-1985-2', 'ISO-IR-123' => 'CSA_Z243.4-1985-GR', 'ISO-IR-126' => 'ISO-8859-7', 'ISO-IR-127' => 'ISO-8859-6', 'ISO-IR-128' => 'T.101-G2', 'ISO-IR-13' => 'JIS_C6220-1969-JP', 'ISO-IR-138' => 'ISO-8859-8', 'ISO-IR-139' => 'CSN_369103', 'ISO-IR-14' => 'JIS_C6220-1969-RO', 'ISO-IR-141' => 'JUS_I.B1.002', 'ISO-IR-142' => 'ISO_6937-2-ADD', 'ISO-IR-143' => 'IEC_P27-1', 'ISO-IR-144' => 'ISO-8859-5', 'ISO-IR-146' => 'JUS_I.B1.003-SERB', 'ISO-IR-147' => 'JUS_I.B1.003-MAC', 'ISO-IR-148' => 'ISO-8859-9', 'ISO-IR-149' => 'KS_C_5601-1987', 'ISO-IR-15' => 'IT', 'ISO-IR-150' => 'GREEK-CCITT', 'ISO-IR-151' => 'NC_NC00-10:81', 'ISO-IR-152' => 'ISO_6937-2-25', 'ISO-IR-153' => 'GOST_19768-74', 'ISO-IR-154' => 'ISO_8859-SUPP', 'ISO-IR-155' => 'ISO_10367-BOX', 'ISO-IR-157' => 'ISO-8859-10', 'ISO-IR-158' => 'LATIN-LAP', 'ISO-IR-159' => 'JIS_X0212-1990', 'ISO-IR-16' => 'PT', 'ISO-IR-166' => 'TIS-620', 'ISO-IR-17' => 'ES', 'ISO-IR-179' => 'ISO-8859-13', 'ISO-IR-18' => 'GREEK7-OLD', 'ISO-IR-19' => 'LATIN-GREEK', 'ISO-IR-199' => 'ISO-8859-14', 'ISO-IR-2' => 'ISO_646.IRV:1983', 'ISO-IR-203' => 'ISO-8859-15', 'ISO-IR-21' => 'DIN_66003', 'ISO-IR-226' => 'ISO-8859-16', 'ISO-IR-25' => 'NF_Z_62-010_(1973)', 'ISO-IR-27' => 'LATIN-GREEK-1', 'ISO-IR-37' => 'ISO_5427', 'ISO-IR-4' => 'BS_4730', 'ISO-IR-42' => 'JIS_C6226-1978', 'ISO-IR-47' => 'BS_VIEWDATA', 'ISO-IR-49' => 'INIS', 'ISO-IR-50' => 'INIS-8', 'ISO-IR-51' => 'INIS-CYRILLIC', 'ISO-IR-54' => 'ISO_5427-EXT', 'ISO-IR-55' => 'ISO_5428', 'ISO-IR-57' => 'GB_1988-80', 'ISO-IR-58' => 'GB_2312-80', 'ISO-IR-6' => 'US-ASCII', 'ISO-IR-60' => 'NS_4551-1', 'ISO-IR-61' => 'NS_4551-2', 'ISO-IR-69' => 'NF_Z_62-010', 'ISO-IR-70' => 'VIDEOTEX-SUPPL', 'ISO-IR-79' => 'ISO-8859-13', 'ISO-IR-8-1' => 'NATS-SEFI', 'ISO-IR-8-2' => 'NATS-SEFI-ADD', 'ISO-IR-84' => 'PT2', 'ISO-IR-85' => 'ES2', 'ISO-IR-86' => 'MSZ_7795.3', 'ISO-IR-87' => 'JIS_C6226-1983', 'ISO-IR-88' => 'GREEK7', 'ISO-IR-89' => 'ASMO_449', 'ISO-IR-9-1' => 'NATS-DANO', 'ISO-IR-9-2' => 'NATS-DANO-ADD', 'ISO-IR-91' => 'JIS_C6229-1984-A', 'ISO-IR-92' => 'JIS_C6229-1984-B', 'ISO-IR-93' => 'JIS_C6229-1984-B-ADD', 'ISO-IR-94' => 'JIS_C6229-1984-HAND', 'ISO-IR-95' => 'JIS_C6229-1984-HAND-ADD', 'ISO-IR-96' => 'JIS_C6229-1984-KANA', 'ISO-IR-98' => 'ISO_2033-1983', 'ISO-IR-99' => 'ANSI_X3.110-1983', 'ISO5427CYRILLIC1981' => 'ISO_5427:1981', 'ISO646-CA' => 'CSA_Z243.4-1985-1', 'ISO646-CA2' => 'CSA_Z243.4-1985-2', 'ISO646-CN' => 'GB_1988-80', 'ISO646-CU' => 'NC_NC00-10:81', 'ISO646-DE' => 'DIN_66003', 'ISO646-DK' => 'DS_2089', 'ISO646-ES' => 'ES', 'ISO646-ES2' => 'ES2', 'ISO646-FI' => 'SEN_850200_B', 'ISO646-FR' => 'NF_Z_62-010', 'ISO646-FR1' => 'NF_Z_62-010_(1973)', 'ISO646-GB' => 'BS_4730', 'ISO646-HU' => 'MSZ_7795.3', 'ISO646-IT' => 'IT', 'ISO646-JP' => 'JIS_C6220-1969-RO', 'ISO646-JP-OCR-B' => 'JIS_C6229-1984-B', 'ISO646-KR' => 'KSC5636', 'ISO646-NO' => 'NS_4551-1', 'ISO646-NO2' => 'NS_4551-2', 'ISO646-PT' => 'PT', 'ISO646-PT2' => 'PT2', 'ISO646-SE' => 'SEN_850200_B', 'ISO646-SE2' => 'SEN_850200_C', 'ISO646-US' => 'US-ASCII', 'ISO646-YU' => 'JUS_I.B1.002', 'ISO_5427:1981' => 'ISO_5427-EXT', 'ISO_5428:1980' => 'ISO_5428', 'ISO_646.IRV:1991' => 'US-ASCII', 'ISO_8859-1' => 'ISO-8859-1', 'ISO_8859-1:1987' => 'ISO-8859-1', 'ISO_8859-10' => 'ISO-8859-10', 'ISO_8859-10:1992' => 'ISO-8859-10', 'ISO_8859-13' => 'ISO-8859-13', 'ISO_8859-14' => 'ISO-8859-14', 'ISO_8859-14:1998' => 'ISO-8859-14', 'ISO_8859-15' => 'ISO-8859-15', 'ISO_8859-15:1998' => 'ISO-8859-15', 'ISO_8859-16' => 'ISO-8859-16', 'ISO_8859-16:2001' => 'ISO-8859-16', 'ISO_8859-1:1987' => 'ISO-8859-1', 'ISO_8859-2' => 'ISO-8859-2', 'ISO_8859-2:1987' => 'ISO-8859-2', 'ISO_8859-3' => 'ISO-8859-3', 'ISO_8859-3:1988' => 'ISO-8859-3', 'ISO_8859-4' => 'ISO-8859-4', 'ISO_8859-4:1988' => 'ISO-8859-4', 'ISO_8859-5' => 'ISO-8859-5', 'ISO_8859-5:1988' => 'ISO-8859-5', 'ISO_8859-6' => 'ISO-8859-6', 'ISO_8859-6-E' => 'ISO-8859-6-E', 'ISO_8859-6-I' => 'ISO-8859-6-I', 'ISO_8859-6:1987' => 'ISO-8859-6', 'ISO_8859-7' => 'ISO-8859-7', 'ISO_8859-7:1987' => 'ISO-8859-7', 'ISO_8859-8' => 'ISO-8859-8', 'ISO_8859-8-E' => 'ISO-8859-8-E', 'ISO_8859-8-I' => 'ISO-8859-8-I', 'ISO_8859-8:1988' => 'ISO-8859-8', 'ISO_8859-9' => 'ISO-8859-9', 'ISO_8859-9:1989' => 'ISO-8859-9', 'ISO_9036' => 'ASMO_449', 'JIS_C6220-1969' => 'JIS_C6220-1969-JP', 'JIS_X0208-1983' => 'JIS_C6226-1983', 'JP' => 'JIS_C6220-1969-RO', 'JP-OCR-A' => 'JIS_C6229-1984-A', 'JP-OCR-B' => 'JIS_C6229-1984-B', 'JP-OCR-B-ADD' => 'JIS_C6229-1984-B-ADD', 'JP-OCR-HAND' => 'JIS_C6229-1984-HAND', 'JP-OCR-HAND-ADD' => 'JIS_C6229-1984-HAND-ADD', 'JS' => 'JUS_I.B1.002', 'KATAKANA' => 'JIS_C6220-1969-JP', 'KOREAN' => 'KS_C_5601-1987', 'KSC_5601' => 'KS_C_5601-1987', 'KS_C_5601-1989' => 'KS_C_5601-1987', 'L1' => 'ISO-8859-1', 'L10' => 'ISO-8859-16', 'L2' => 'ISO-8859-2', 'L3' => 'ISO-8859-3', 'L4' => 'ISO-8859-4', 'L5' => 'ISO-8859-9', 'L6' => 'ISO-8859-10', 'L7' => 'ISO-8859-13', 'L8' => 'ISO-8859-14', 'LAP' => 'LATIN-LAP', 'LATIN-9' => 'ISO-8859-15', 'LATIN1' => 'ISO-8859-1', 'LATIN1-2-5' => 'ISO_8859-SUPP', 'LATIN10' => 'ISO-8859-16', 'LATIN2' => 'ISO-8859-2', 'LATIN3' => 'ISO-8859-3', 'LATIN4' => 'ISO-8859-4', 'LATIN5' => 'ISO-8859-9', 'LATIN6' => 'ISO-8859-10', 'LATIN7' => 'ISO-8859-13', 'LATIN8' => 'ISO-8859-14', 'MAC' => 'MACINTOSH', 'MAC-ARABIC' => 'MACARABIC', 'MAC-CENTRALEUROPE' => 'MACCENTRALEUROPE', 'MAC-CROATIAN' => 'MACCROATIAN', 'MAC-CYRILLIC' => 'MACCYRILLIC', 'MAC-GREEK' => 'MACGREEK', 'MAC-HEBREW' => 'MACHEBREW', 'MAC-ICELAND' => 'MACICELAND', 'MAC-ROMANIA' => 'MACROMANIA', 'MAC-THAI' => 'MACTHAI', 'MAC-TURKISH' => 'MACTURKISH', 'MAC-UKRAINE' => 'MACUKRAINE', 'MACEDONIAN' => 'JUS_I.B1.003-MAC', 'MS-ARAB' => 'WINDOWS-1256', 'MS-ANSI' => 'WINDOWS-1252', 'MS-EE' => 'WINDOWS-1250', 'MS-CYRL' => 'WINDOWS-1251', 'MS-GREEK' => 'WINDOWS-1253', 'MS-HEBR' => 'WINDOWS-1255', 'MS-TURK' => 'WINDOWS-1254', 'MS936' => 'GBK', 'MS_KANJI' => 'SHIFT_JIS', 'NAPLPS' => 'ANSI_X3.110-1983', 'NO' => 'NS_4551-1', 'NO2' => 'NS_4551-2', 'OS2LATIN1' => 'IBM1004', 'PT154' => 'PTCP154', 'R8' => 'HP-ROMAN8', 'REF' => 'ISO_646.BASIC:1983', 'ROMAN8' => 'HP-ROMAN8', 'SE' => 'SEN_850200_B', 'SE2' => 'SEN_850200_C', 'SERBIAN' => 'JUS_I.B1.003-SERB', 'ST_SEV_358-88' => 'GOST_19768-74', 'T.61' => 'T.61-8BIT', 'TIS620' => 'TIS-620', 'TIS620-0' => 'TIS-620', 'TIS620.2529-1' => 'TIS-620', 'TIS620.2533-0' => 'TIS-620', 'TIS620.2533-1' => 'TIS-620', 'UHC' => 'CP949', 'UK' => 'BS_4730', 'US' => 'US-ASCII', 'VISCII1.1-1' => 'VISCII', 'WINBALTRIM' => 'WINDOWS-1257', 'WINDOWS-874' => 'CP874', 'WINDOWS-936' => 'GBK', 'WINDOWS-SAMI2' => 'WIN-SAMI-2', 'WS2' => 'WIN-SAMI-2', 'X0201' => 'JIS_X0201', 'X0201-7' => 'JIS_C6220-1969-JP', 'X0208' => 'JIS_C6226-1983', 'X0212' => 'JIS_X0212-1990', 'YU' => 'JUS_I.B1.002', 'X-ATARI-ST' => 'ATARI-ST', 'X-ATARIST' => 'ATARI-ST', 'X-ATARI-ST-EURO' => 'ATARI-ST-EURO', 'X-ATARIST-EURO' => 'ATARI-ST-EURO', 'X-MAC-ARABIC' => 'MACARABIC', 'X-MAC-CENTRALEUROPE' => 'MACCENTRALEUROPE', 'X-MAC-CROATIAN' => 'MACCROATIAN', 'X-MAC-CYRILLIC' => 'MACCYRILLIC', 'X-MAC-GREEK' => 'MACGREEK', 'X-MAC-HEBREW' => 'MACHEBREW', 'X-MAC-ICELAND' => 'MACICELAND', 'X-MAC-ROMANIA' => 'MACROMANIA', 'X-MAC-THAI' => 'MACTHAI', 'X-MAC-TURKISH' => 'MACTURKISH', 'X-MAC-UKRAINE' => 'MACUKRAINE', 'X-MACARABIC' => 'MACARABIC', 'X-MACCENTRALEUROPE' => 'MACCENTRALEUROPE', 'X-MACCROATIAN' => 'MACCROATIAN', 'X-MACCYRILLIC' => 'MACCYRILLIC', 'X-MACGREEK' => 'MACGREEK', 'X-MACHEBREW' => 'MACHEBREW', 'X-MACICELAND' => 'MACICELAND', 'X-MACROMANIA' => 'MACROMANIA', 'X-MACTHAI' => 'MACTHAI', 'X-MACTURKISH' => 'MACTURKISH', 'X-MACUKRAINE' => 'MACUKRAINE', }; 1; __END__ =head1 NAME Locale::Recode::_Aliases - Internal Charset Alias Database for libintl-perl =head1 SYNOPSIS use Locale::Recode::_Aliases die "This module is internal to libintl. Do not use it directly!\n"; =head1 DESCRIPTION Contains a list of codeset aliases that are known internally to libintl. =head1 CONSTANTS =over 4 =item ALIASES The constant B contains a hash reference the keys of which are internally known charset alias names all in uppercase. The corresponding value is the canonical name of the charset. =back =head1 BUGS The format of the lookup table will most probably change, do not rely on the current format! =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/lib/Locale/Recode/_Conversions.pm000644 000765 000024 00000025143 12716422333 022474 0ustar00guidostaff000000 000000 #! /bin/false # vim: set autoindent shiftwidth=4 tabstop=4: # List of internally known conversions. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::Recode::_Conversions; use strict; use integer; use vars qw ($conversions $optional_conversions); # These are the canonical names of the encodings always available. $conversions = { 'ASMO_449' => 'ASMO_449', 'ATARI-ST-EURO' => 'ATARI_ST_EURO', 'ATARI-ST' => 'ATARI_ST', 'CP10007' => 'CP10007', 'CSN_369103' => 'CSN_369103', 'CWI' => 'CWI', 'DEC-MCS' => 'DEC_MCS', 'EBCDIC-AT-DE-A' => 'EBCDIC_AT_DE_A', 'EBCDIC-AT-DE' => 'EBCDIC_AT_DE', 'EBCDIC-CA-FR' => 'EBCDIC_CA_FR', 'EBCDIC-DK-NO-A' => 'EBCDIC_DK_NO_A', 'EBCDIC-DK-NO' => 'EBCDIC_DK_NO', 'EBCDIC-ES-A' => 'EBCDIC_ES_A', 'EBCDIC-ES-S' => 'EBCDIC_ES_S', 'EBCDIC-ES' => 'EBCDIC_ES', 'EBCDIC-FI-SE-A' => 'EBCDIC_FI_SE_A', 'EBCDIC-FI-SE' => 'EBCDIC_FI_SE', 'EBCDIC-FR' => 'EBCDIC_FR', 'EBCDIC-IS-FRISS' => 'EBCDIC_IS_FRISS', 'EBCDIC-IT' => 'EBCDIC_IT', 'EBCDIC-PT' => 'EBCDIC_PT', 'EBCDIC-UK' => 'EBCDIC_UK', 'EBCDIC-US' => 'EBCDIC_US', 'ECMA-CYRILLIC' => 'ECMA_CYRILLIC', 'GEORGIAN-ACADEMY' => 'GEORGIAN_ACADEMY', 'GEORGIAN-PS' => 'GEORGIAN_PS', 'GOST_19768-74' => 'GOST_19768_74', 'GREEK-CCITT' => 'GREEK_CCITT', 'GREEK7-OLD' => 'GREEK7_OLD', 'GREEK7' => 'GREEK7', 'HP-ROMAN8' => 'HP_ROMAN8', 'IBM037' => 'IBM037', 'IBM038' => 'IBM038', 'IBM1004' => 'IBM1004', 'IBM1026' => 'IBM1026', 'IBM1047' => 'IBM1047', 'IBM256' => 'IBM256', 'IBM273' => 'IBM273', 'IBM274' => 'IBM274', 'IBM275' => 'IBM275', 'IBM277' => 'IBM277', 'IBM278' => 'IBM278', 'IBM280' => 'IBM280', 'IBM281' => 'IBM281', 'IBM284' => 'IBM284', 'IBM285' => 'IBM285', 'IBM290' => 'IBM290', 'IBM297' => 'IBM297', 'IBM420' => 'IBM420', 'IBM423' => 'IBM423', 'IBM424' => 'IBM424', 'IBM437' => 'IBM437', 'IBM500' => 'IBM500', 'IBM850' => 'IBM850', 'IBM851' => 'IBM851', 'IBM852' => 'IBM852', 'IBM855' => 'IBM855', 'IBM857' => 'IBM857', 'IBM860' => 'IBM860', 'IBM861' => 'IBM861', 'IBM862' => 'IBM862', 'IBM863' => 'IBM863', 'IBM864' => 'IBM864', 'IBM865' => 'IBM865', 'IBM866' => 'IBM866', 'IBM868' => 'IBM868', 'IBM869' => 'IBM869', 'IBM870' => 'IBM870', 'IBM871' => 'IBM871', 'IBM874' => 'IBM874', 'IBM875' => 'IBM875', 'IBM880' => 'IBM880', 'IBM891' => 'IBM891', 'IBM903' => 'IBM903', 'IBM904' => 'IBM904', 'IBM905' => 'IBM905', 'IBM918' => 'IBM918', 'IEC_P27-1' => 'IEC_P27_1', 'INIS-8' => 'INIS_8', 'INIS-CYRILLIC' => 'INIS_CYRILLIC', 'INIS' => 'INIS', 'ISO-8859-1' => 'ISO_8859_1', 'ISO-8859-10' => 'ISO_8859_10', 'ISO-8859-11' => 'ISO_8859_11', 'ISO-8859-13' => 'ISO_8859_13', 'ISO-8859-14' => 'ISO_8859_14', 'ISO-8859-15' => 'ISO_8859_15', 'ISO-8859-16' => 'ISO_8859_16', 'ISO-8859-2' => 'ISO_8859_2', 'ISO-8859-3' => 'ISO_8859_3', 'ISO-8859-4' => 'ISO_8859_4', 'ISO-8859-5' => 'ISO_8859_5', 'ISO-8859-6' => 'ISO_8859_6', 'ISO-8859-7' => 'ISO_8859_7', 'ISO-8859-8' => 'ISO_8859_8', 'ISO-8859-9' => 'ISO_8859_9', 'ISO_10367-BOX' => 'ISO_10367_BOX', 'ISO_2033-1983' => 'ISO_2033_1983', 'ISO_5427-EXT' => 'ISO_5427_EXT', 'ISO_5427' => 'ISO_5427', 'ISO_5428' => 'ISO_5428', 'KOI-8' => 'KOI_8', 'KOI8-R' => 'KOI8_R', 'KOI8-RU' => 'KOI8_RU', 'KOI8-T' => 'KOI8_T', 'KOI8-U' => 'KOI8_U', 'LATIN-GREEK-1' => 'LATIN_GREEK_1', 'LATIN-GREEK' => 'LATIN_GREEK', 'MACINTOSH' => 'MACINTOSH', 'MACARABIC' => 'MACARABIC', 'MACCYRILLIC' => 'MACCYRILLIC', 'MACCROATIAN' => 'MACCROATIAN', 'MACGREEK' => 'MACGREEK', 'MACHEBREW' => 'MACHEBREW', 'MACICELAND' => 'MACICELAND', 'MACROMANIA' => 'MACROMANIA', 'MACTHAI' => 'MACTHAI', 'MACTURKISH' => 'MACTURKISH', 'MACUKRAINE' => 'MACUKRAINE', 'MAC-IS' => 'MAC_IS', 'MAC-SAMI' => 'MAC_SAMI', 'MAC-UK' => 'MAC_UK', 'NATS-DANO' => 'NATS_DANO', 'NATS-SEFI' => 'NATS_SEFI', 'NEXTSTEP' => 'NEXTSTEP', 'TIS-620' => 'TIS_620', 'UTF-8' => 'UTF_8', 'VISCII' => 'VISCII', 'WIN-SAMI-2' => 'SAMI_WS2', 'WINDOWS-1250' => 'CP1250', 'WINDOWS-1251' => 'CP1251', 'WINDOWS-1252' => 'CP1252', 'WINDOWS-1253' => 'CP1253', 'WINDOWS-1254' => 'CP1254', 'WINDOWS-1256' => 'CP1256', 'WINDOWS-1257' => 'CP1257', 'US-ASCII' => 'US_ASCII', }; # These encodings are maybe available via Encode(3pm). $optional_conversions = { 'BIG5' => undef, 'BIG5-HKSCS' => undef, 'CN-GB' => undef, 'CN-GB-ISOIR165' => undef, 'CP1006' => undef, 'CP1026' => undef, 'CP1047' => undef, 'CP1361' => undef, 'CP949' => undef, 'CP37' => undef, 'CP424' => undef, 'CP500' => undef, 'CP737' => undef, 'CP775' => undef, 'CP856' => undef, 'CP874' => undef, 'CP875' => undef, 'CP932' => undef, 'CP936' => undef, 'CP950' => undef, 'EUC-JP' => undef, 'EUC-KR' => undef, 'EUC-TW' => undef, # mapping from 0xef to 0xff missing. # 'HP-ROMAN8' => undef, 'GB18030' => undef, 'HZ' => undef, 'IBM437' => undef, 'IBM850' => undef, 'IBM852' => undef, 'IBM855' => undef, 'IBM857' => undef, 'IBM860' => undef, 'IBM861' => undef, 'IBM862' => undef, 'IBM863' => undef, 'IBM864' => undef, 'IBM865' => undef, 'IBM866' => undef, 'IBM869' => undef, 'ISO-10646-UCS-2' => undef, 'ISO-10646-UCS-4' => undef, 'ISO-2022-JP' => undef, 'ISO-2022-JP-1' => undef, 'ISO-2022-KR' => undef, 'ISO-8859-1' => undef, 'ISO-8859-10' => undef, # This is broken in some versions of Encode. # 'ISO-8859-11' => undef, 'ISO-8859-13' => undef, 'ISO-8859-14' => undef, 'ISO-8859-15' => undef, # Errors at 0xa5 and 0xab. # 'ISO-8859-16' => undef, 'ISO-8859-2' => undef, 'ISO-8859-3' => undef, 'ISO-8859-4' => undef, 'ISO-8859-5' => undef, # Uses arabic digits in ascii range?! # 'ISO-8859-6' => undef, # 0xa1 and 0xa2 are incorrectly encoded. # 'ISO-8859-7' => undef, # 0xfd and 0xfe are missing. # 'ISO-8859-8' => undef, 'ISO-8859-9' => undef, 'ISO-IR-149' => undef, 'KOI8-R' => undef, # 0x95 is BULLET, not BULLET OPERATOR. # 'KOI8-U' => undef, # Seems to be messed up in certain Encode versions. # 'MACINTOSH' => undef, # TODO: Check other Mac encodings for correctness. # Nextstep is completely broken in my version of Encode. # 'NEXTSTEP' => undef, 'SHIFT_JIS' => undef, 'UCS-2BE' => undef, 'UCS-2LE' => undef, 'UCS-4BE' => undef, 'UCS-4LE' => undef, 'US-ASCII' => undef, 'UTF-16' => undef, 'UTF-16BE' => undef, 'UTF-16LE' => undef, 'UTF-32' => undef, 'UTF-32BE' => undef, 'UTF-32LE' => undef, 'UTF-8' => undef, # 0x86 is missing, 0xa6 is incorrectly encoded. # 'VISCII' => undef, 'WINDOWS-1250' => undef, 'WINDOWS-1251' => undef, 'WINDOWS-1252' => undef, 'WINDOWS-1253' => undef, 'WINDOWS-1254' => undef, 'WINDOWS-1255' => undef, 'WINDOWS-1256' => undef, 'WINDOWS-1257' => undef, 'WINDOWS-1258' => undef, }; my $has_encode; sub resolveAlias { my (undef, $encoding) = @_; $encoding = uc $encoding; return $encoding if exists $conversions->{$encoding}; return $encoding if exists $optional_conversions->{$encoding}; require Locale::Recode::_Aliases; my $resolved = Locale::Recode::_Aliases::ALIASES()->{$encoding}; return $resolved if $resolved; return; } sub isSupported { my ($class, $encoding) = @_; return unless defined $encoding && length $encoding; $encoding = uc $encoding; my $mimename = $class->resolveAlias ($encoding); return unless $mimename; # Determine the correct module. if (exists $optional_conversions->{$mimename}) { unless (defined $has_encode) { eval "require Encode"; $has_encode = !$@; if ($has_encode) { require Encode::Alias; # Add missing real names. Encode::Alias::define_alias (MS_KANJI => 'ShiftJIS'); Encode::Alias::define_alias ('CN-GB' => 'EUC-CN'); } } if ($has_encode) { # Now check whether Encode really supports that encoding. eval "Encode::encode ('$mimename', 'x')"; unless ($@) { $conversions->{$mimename} = '_Encode'; } delete $optional_conversions->{$mimename}; } } return $conversions->{$mimename} if exists $conversions->{$mimename}; return; } sub listSupported { my ($class) = @_; foreach my $opt (keys %$optional_conversions) { $class->isSupported ($opt); } my @list = keys %$conversions; return @list; } # Find a conversion path. sub findPath { my ($class, $from, $to) = @_; $from = 'INTERNAL' eq uc $from ? 'INTERNAL' : $class->resolveAlias ($from); $to = 'INTERNAL' eq uc $to ? 'INTERNAL' : $class->resolveAlias ($to); return unless $from && $to; return [] if $from eq $to; my $from_module = $class->isSupported ($from); my $to_module = $class->isSupported ($to); if (!$from_module) { if ('INTERNAL' eq $from) { $from_module = $to_module or return; } else { return; } } if (!$to_module) { if ('INTERNAL' eq $to) { $to_module = $from_module or return; } else { return; } } if ($from_module eq $to_module || $to eq 'INTERNAL' || $to eq 'UTF-8') { return [[ $from_module, $from, $to ]]; } elsif ($from eq 'INTERNAL') { return [[ $to_module, $from, $to ]]; } else { return [[ $from_module, $from, 'INTERNAL' ], [ $to_module, 'INTERNAL', $to ]]; } } # TODO: check for # 7bit-jis # AdobeStandardEncoding # AdobeSymbol # AdobeZdingbat # ascii-ctrl # big5ext # big5plus # cccii # cns11643-1 # cns11643-2 # cns11643-3 # cns11643-4 # cns11643-5 # cns11643-6 # cns11643-7 # cns11643-f # dingbats # gb12345-raw # gb2312-raw # gsm0338 # jis0201-raw # jis0208-raw # jis0212-raw # koi8-f # MIME-B # MIME-Header # MIME-Q # posix-bc # symbol # unisys 1; __END__ =head1 NAME Locale::Recode::_Conversions - Internal Table of Known Conversions =head1 SYNOPSIS use Locale::Recode::_Conversions This module is internal to libintl. Do not use it directly! =head1 AUTHOR Copyright (C) 2002-2016 L (L), all rights reserved. See the source code for details!code for details! =head1 SEE ALSO Locale::Recode(3), perl(1) =cut Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: =cut libintl-perl-1.26/gettext_xs/gettext_xs.pm000644 000765 000024 00000011612 12716420512 021244 0ustar00guidostaff000000 000000 #! /bin/false # vim: tabstop=4 # Perl XS implementation of Uniforum message translation. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . package Locale::gettext_xs; require DynaLoader; require Exporter; use vars qw (%EXPORT_TAGS @EXPORT_OK @ISA); %EXPORT_TAGS = (locale_h => [ qw ( gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset ) ], libintl_h => [ qw (LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL) ], ); @EXPORT_OK = qw (gettext dgettext dcgettext ngettext dngettext dcngettext pgettext dpgettext dcpgettext npgettext dnpgettext dcnpgettext textdomain bindtextdomain bind_textdomain_codeset nl_putenv setlocale LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_ALL); @ISA = qw (Exporter DynaLoader); bootstrap Locale::gettext_xs; require File::Spec; # Reimplement pgettext functions sub pgettext ($$) { my ($msgctxt, $msgid) = @_; my $msg_ctxt_id = join("\004", $msgctxt, $msgid); return Locale::gettext_xs::_pgettext_aux ("", $msg_ctxt_id, $msgid, Locale::gettext_xs::LC_MESSAGES()); } sub dpgettext ($$$) { my ($domain, $msgctxt, $msgid) = @_; my $msg_ctxt_id = join("\004", $msgctxt, $msgid); return Locale::gettext_xs::_pgettext_aux ($domain, $msg_ctxt_id, $msgid, Locale::gettext_xs::LC_MESSAGES()); } sub dcpgettext ($$$$) { my ($domain, $msgctxt, $msgid, $category) = @_; my $msg_ctxt_id = join("\004", $msgctxt, $msgid); return Locale::gettext_xs::_pgettext_aux ($domain, $msg_ctxt_id, $msgid, $category); } # Reimplement npgettext functions sub npgettext ($$$$) { my ($msgctxt, $msgid1, $msgid2, $n) = @_; my $msg_ctxt_id = join("\004", $msgctxt, $msgid1); return Locale::gettext_xs::_npgettext_aux ("", $msg_ctxt_id, $msgid1, $msgid2, $n, Locale::gettext_xs::LC_MESSAGES()); } sub dnpgettext ($$$$$) { my ($domain, $msgctxt, $msgid1, $msgid2, $n) = @_; my $msg_ctxt_id = join("\004", $msgctxt, $msgid1); return Locale::gettext_xs::_npgettext_aux ($domain, $msg_ctxt_id, $msgid1, $msgid2, $n, Locale::gettext_xs::LC_MESSAGES()); } sub dcnpgettext ($$$$$$) { my ($domain, $msgctxt, $msgid1, $msgid2, $n, $category) = @_; my $msg_ctxt_id = join("\004", $msgctxt, $msgid1); return Locale::gettext_xs::_npgettext_aux ($domain, $msg_ctxt_id, $msgid1, $msgid2, $n, $category); } # Wrapper function that converts Perl paths to OS paths. sub bindtextdomain ($;$) { my ($domain, $directory) = @_; if (defined $domain && length $domain && defined $directory && length $directory) { return Locale::gettext_xs::_bindtextdomain ($domain, File::Spec->catdir ($directory)); } else { return &Locale::gettext_xs::_bindtextdomain; } } # In the XS version, making the prototype optional, does not work. sub textdomain (;$) { my $domain = shift; if (defined $domain) { return Locale::gettext_xs::_textdomain ($domain); } else { return Locale::gettext_xs::_textdomain (""); } } sub nl_putenv ($) { my ($envspec) = @_; return unless defined $envspec; return unless length $envspec; return if substr ($envspec, 0, 1) eq '='; my ($var, $value) = split /=/, $envspec, 2; if ($^O eq 'MSWin32') { $value = '' unless defined $value; return unless Locale::gettext_xs::_nl_putenv ("$var=$value") == 0; if (length $value) { $ENV{$var} = $value; } else { delete $ENV{$var}; } } else { if (defined $value) { $ENV{$var} = $value; } else { delete $ENV{$var}; } } return 1; } 1; __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 tab-width: 4 End: libintl-perl-1.26/gettext_xs/gettext_xs.xs000644 000765 000024 00000014206 12716420527 021272 0ustar00guidostaff000000 000000 /* -*- C -*- */ /* # Perl binding for Uniforum message translation. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include #include #include /* Handle the case that we link against GNU libintl but include a non * GNU libintl.h. */ #ifndef __USE_GNU_GETTEXT # error " is not GNU gettext. Maybe you have to adjust your include path." #endif MODULE = Locale::gettext_xs PACKAGE = Locale::gettext_xs PROTOTYPES: ENABLE char* __gettext_xs_version () CODE: RETVAL = (VERSION); OUTPUT: RETVAL double LC_CTYPE () CODE: RETVAL = (double) LC_CTYPE; OUTPUT: RETVAL double LC_NUMERIC () CODE: RETVAL = (double) LC_NUMERIC; OUTPUT: RETVAL double LC_TIME () CODE: RETVAL = (double) LC_TIME; OUTPUT: RETVAL double LC_COLLATE () CODE: RETVAL = (double) LC_COLLATE; OUTPUT: RETVAL double LC_MONETARY () CODE: RETVAL = (double) LC_MONETARY; OUTPUT: RETVAL double LC_MESSAGES () CODE: RETVAL = (double) LC_MESSAGES; OUTPUT: RETVAL double LC_ALL () CODE: RETVAL = (double) LC_ALL; OUTPUT: RETVAL char* gettext (msgid) char* msgid PROTOTYPE: $ CODE: RETVAL = (char*) gettext (msgid); OUTPUT: RETVAL char* dgettext (domainname, msgid) char* domainname char* msgid PROTOTYPE: $$ CODE: RETVAL = (char*) dgettext (domainname, msgid); OUTPUT: RETVAL char* dcgettext (domainname, msgid, category) char* domainname char* msgid int category PROTOTYPE: $$$ CODE: RETVAL = (char*) dcgettext (domainname, msgid, category); OUTPUT: RETVAL char* ngettext (msgid1, msgid2, n) char* msgid1 char* msgid2 unsigned long n PROTOTYPE: $$$ CODE: RETVAL = (char*) ngettext (msgid1, msgid2, n); OUTPUT: RETVAL char* dngettext (domainname, msgid1, msgid2, n) char* domainname char* msgid1 char* msgid2 unsigned long n PROTOTYPE: $$$$ CODE: RETVAL = (char*) dngettext (domainname, msgid1, msgid2, n); OUTPUT: RETVAL char* dcngettext (domainname, msgid1, msgid2, n, category) char* domainname char* msgid1 char* msgid2 unsigned long n int category PROTOTYPE: $$$$$ CODE: RETVAL = (char*) dcngettext (domainname, msgid1, msgid2, n, category); OUTPUT: RETVAL char* _pgettext_aux (domain, msg_ctxt_id, msgid, category) char* domain char* msg_ctxt_id char* msgid int category PROTOTYPE: $$$$ PREINIT: char* translation; CODE: /* Treat empty or undefined strings as NULL. */ if (!domain || domain[0] == '\000') domain = NULL; /* Treat -1 as null, and default to LC_MESSAGES */ if (category == -1) category = LC_MESSAGES; /* reimplemented from gettext-0.17 */ translation = (char*) dcgettext (domain, msg_ctxt_id, category); if (translation == msg_ctxt_id) RETVAL = msgid; else RETVAL = translation; OUTPUT: RETVAL char* _npgettext_aux (domain, msg_ctxt_id, msgid1, msgid2, n, category) char* domain char* msg_ctxt_id char* msgid1 char* msgid2 unsigned long n int category PROTOTYPE: $$$$$$ PREINIT: char* translation; CODE: /* Treat empty or undefined strings as NULL. */ if (!domain || domain[0] == '\000') domain = NULL; /* Treat -1 as null, and default to LC_MESSAGES */ if (category == -1) category = LC_MESSAGES; translation = (char*) dcngettext (domain, msg_ctxt_id, msgid2, n, category); if (translation == msg_ctxt_id || translation == msgid2) RETVAL = (n == 1 ? msgid1 : msgid2); else RETVAL = translation; OUTPUT: RETVAL # FIXME: The prototype should actually be ';$' but it doesn't work # as expected. Passing no argument results in an error. char* _textdomain (domain) char* domain PROTOTYPE: $ CODE: /* Treat empty or undefined strings as NULL. */ if (!domain || domain[0] == '\000') domain = NULL; RETVAL = (char*) textdomain (domain); if (!RETVAL || RETVAL[0] == '\000') { XSRETURN_UNDEF; } OUTPUT: RETVAL # This function is a no-op except for MS-DOS with its completely # brain-damaged environment interface. int _nl_putenv (str) char* str PROTOTYPE: $ CODE: #if defined (WIN32) RETVAL = _putenv (str); #else RETVAL = 0; #endif OUTPUT: RETVAL char* _bindtextdomain (domain = NULL, dirname = NULL) char* domain char* dirname PROTOTYPE: $;$ CODE: /* Treat empty or undefined strings as NULL. */ if (!domain || domain[0] == '\000') XSRETURN_UNDEF; if (!dirname || dirname[0] == '\000') dirname = NULL; RETVAL = (char*) bindtextdomain (domain, dirname); if (!RETVAL || RETVAL[0] == '\000') { XSRETURN_UNDEF; } OUTPUT: RETVAL char* bind_textdomain_codeset (domainname, codeset) char* domainname char* codeset PROTOTYPE: $;$ CODE: /* Treat empty or undefined strings as NULL. */ if (!domainname || domainname[0] == '\000') domainname = NULL; if (!codeset || codeset[0] == '\000') codeset = NULL; RETVAL = (char*) bind_textdomain_codeset (domainname, codeset); if (!RETVAL || RETVAL[0] == '\000') { XSRETURN_UNDEF; } OUTPUT: RETVAL char* setlocale (category, locale = NULL) int category char *locale PROTOTYPE: $;$ CODE: RETVAL = (char*) setlocale (category, locale); OUTPUT: RETVAL libintl-perl-1.26/gettext_xs/Makefile.PL000644 000765 000024 00000003203 12716420465 020466 0ustar00guidostaff000000 000000 #! /usr/local/bin/perl -w # -*- perl -*- # vim: tabstop=4 # Makefile generator for libintl-perl. # Copyright (C) 2002-2016 Guido Flohr , # all rights reserved. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA.use ExtUtils::MakeMaker; use 5.004; use ExtUtils::MakeMaker; #$ExtUtils::MakeMaker::Verbose = 2; #@ExtUtils::MakeMaker::Parent = (); WriteMakefile ( NAME => 'Locale::gettext_xs', VERSION_FROM => '../lib/Locale/Messages.pm', ($] >= 5.005 ? (ABSTRACT => 'XS Interface to Uniforum Message Translation', AUTHOR => 'Guido Flohr ', ) : (), ), PREREQ_PM => { File::Spec => 0 }, PL_FILES => {}, LIBS => ['-lintl -liconv'], ); __END__ Local Variables: mode: perl perl-indent-level: 4 perl-continued-statement-offset: 4 perl-continued-brace-offset: 0 perl-brace-offset: -4 perl-brace-imaginary-offset: 0 perl-label-offset: -4 cperl-indent-level: 4 cperl-continued-statement-offset: 2 tab-width: 4 End: