initial commit
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
"""Record of phased-in incompatible language changes.
|
||||
|
||||
Each line is of the form:
|
||||
|
||||
FeatureName = "_Feature(" OptionalRelease "," MandatoryRelease ","
|
||||
CompilerFlag ")"
|
||||
|
||||
where, normally, OptionalRelease < MandatoryRelease, and both are 5-tuples
|
||||
of the same form as sys.version_info:
|
||||
|
||||
(PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int
|
||||
PY_MINOR_VERSION, # the 1; an int
|
||||
PY_MICRO_VERSION, # the 0; an int
|
||||
PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string
|
||||
PY_RELEASE_SERIAL # the 3; an int
|
||||
)
|
||||
|
||||
OptionalRelease records the first release in which
|
||||
|
||||
from __future__ import FeatureName
|
||||
|
||||
was accepted.
|
||||
|
||||
In the case of MandatoryReleases that have not yet occurred,
|
||||
MandatoryRelease predicts the release in which the feature will become part
|
||||
of the language.
|
||||
|
||||
Else MandatoryRelease records when the feature became part of the language;
|
||||
in releases at or after that, modules no longer need
|
||||
|
||||
from __future__ import FeatureName
|
||||
|
||||
to use the feature in question, but may continue to use such imports.
|
||||
|
||||
MandatoryRelease may also be None, meaning that a planned feature got
|
||||
dropped.
|
||||
|
||||
Instances of class _Feature have two corresponding methods,
|
||||
.getOptionalRelease() and .getMandatoryRelease().
|
||||
|
||||
CompilerFlag is the (bitfield) flag that should be passed in the fourth
|
||||
argument to the builtin function compile() to enable the feature in
|
||||
dynamically compiled code. This flag is stored in the .compiler_flag
|
||||
attribute on _Future instances. These values must match the appropriate
|
||||
#defines of CO_xxx flags in Include/compile.h.
|
||||
|
||||
No feature line is ever to be deleted from this file.
|
||||
"""
|
||||
|
||||
all_feature_names = [
|
||||
"nested_scopes",
|
||||
"generators",
|
||||
"division",
|
||||
"absolute_import",
|
||||
"with_statement",
|
||||
"print_function",
|
||||
"unicode_literals",
|
||||
"barry_as_FLUFL",
|
||||
"generator_stop",
|
||||
]
|
||||
|
||||
__all__ = ["all_feature_names"] + all_feature_names
|
||||
|
||||
# The CO_xxx symbols are defined here under the same names used by
|
||||
# compile.h, so that an editor search will find them here. However,
|
||||
# they're not exported in __all__, because they don't really belong to
|
||||
# this module.
|
||||
CO_NESTED = 0x0010 # nested_scopes
|
||||
CO_GENERATOR_ALLOWED = 0 # generators (obsolete, was 0x1000)
|
||||
CO_FUTURE_DIVISION = 0x2000 # division
|
||||
CO_FUTURE_ABSOLUTE_IMPORT = 0x4000 # perform absolute imports by default
|
||||
CO_FUTURE_WITH_STATEMENT = 0x8000 # with statement
|
||||
CO_FUTURE_PRINT_FUNCTION = 0x10000 # print function
|
||||
CO_FUTURE_UNICODE_LITERALS = 0x20000 # unicode string literals
|
||||
CO_FUTURE_BARRY_AS_BDFL = 0x40000
|
||||
CO_FUTURE_GENERATOR_STOP = 0x80000 # StopIteration becomes RuntimeError in generators
|
||||
|
||||
class _Feature:
|
||||
def __init__(self, optionalRelease, mandatoryRelease, compiler_flag):
|
||||
self.optional = optionalRelease
|
||||
self.mandatory = mandatoryRelease
|
||||
self.compiler_flag = compiler_flag
|
||||
|
||||
def getOptionalRelease(self):
|
||||
"""Return first release in which this feature was recognized.
|
||||
|
||||
This is a 5-tuple, of the same form as sys.version_info.
|
||||
"""
|
||||
|
||||
return self.optional
|
||||
|
||||
def getMandatoryRelease(self):
|
||||
"""Return release in which this feature will become mandatory.
|
||||
|
||||
This is a 5-tuple, of the same form as sys.version_info, or, if
|
||||
the feature was dropped, is None.
|
||||
"""
|
||||
|
||||
return self.mandatory
|
||||
|
||||
def __repr__(self):
|
||||
return "_Feature" + repr((self.optional,
|
||||
self.mandatory,
|
||||
self.compiler_flag))
|
||||
|
||||
nested_scopes = _Feature((2, 1, 0, "beta", 1),
|
||||
(2, 2, 0, "alpha", 0),
|
||||
CO_NESTED)
|
||||
|
||||
generators = _Feature((2, 2, 0, "alpha", 1),
|
||||
(2, 3, 0, "final", 0),
|
||||
CO_GENERATOR_ALLOWED)
|
||||
|
||||
division = _Feature((2, 2, 0, "alpha", 2),
|
||||
(3, 0, 0, "alpha", 0),
|
||||
CO_FUTURE_DIVISION)
|
||||
|
||||
absolute_import = _Feature((2, 5, 0, "alpha", 1),
|
||||
(3, 0, 0, "alpha", 0),
|
||||
CO_FUTURE_ABSOLUTE_IMPORT)
|
||||
|
||||
with_statement = _Feature((2, 5, 0, "alpha", 1),
|
||||
(2, 6, 0, "alpha", 0),
|
||||
CO_FUTURE_WITH_STATEMENT)
|
||||
|
||||
print_function = _Feature((2, 6, 0, "alpha", 2),
|
||||
(3, 0, 0, "alpha", 0),
|
||||
CO_FUTURE_PRINT_FUNCTION)
|
||||
|
||||
unicode_literals = _Feature((2, 6, 0, "alpha", 2),
|
||||
(3, 0, 0, "alpha", 0),
|
||||
CO_FUTURE_UNICODE_LITERALS)
|
||||
|
||||
barry_as_FLUFL = _Feature((3, 1, 0, "alpha", 2),
|
||||
(3, 9, 0, "alpha", 0),
|
||||
CO_FUTURE_BARRY_AS_BDFL)
|
||||
|
||||
generator_stop = _Feature((3, 5, 0, "beta", 1),
|
||||
(3, 7, 0, "alpha", 0),
|
||||
CO_FUTURE_GENERATOR_STOP)
|
||||
@@ -0,0 +1,34 @@
|
||||
"""A minimal subset of the locale module used at interpreter startup
|
||||
(imported by the _io module), in order to reduce startup time.
|
||||
|
||||
Don't import directly from third-party code; use the `locale` module instead!
|
||||
"""
|
||||
|
||||
import sys
|
||||
import _locale
|
||||
|
||||
if sys.platform.startswith("win"):
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
return _locale._getdefaultlocale()[1]
|
||||
else:
|
||||
try:
|
||||
_locale.CODESET
|
||||
except AttributeError:
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
# This path for legacy systems needs the more complex
|
||||
# getdefaultlocale() function, import the full locale module.
|
||||
import locale
|
||||
return locale.getpreferredencoding(do_setlocale)
|
||||
else:
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
assert not do_setlocale
|
||||
result = _locale.nl_langinfo(_locale.CODESET)
|
||||
if not result and sys.platform == 'darwin':
|
||||
# nl_langinfo can return an empty string
|
||||
# when the setting has an invalid value.
|
||||
# Default to UTF-8 in that case because
|
||||
# UTF-8 is the default charset on OSX and
|
||||
# returning nothing will crash the
|
||||
# interpreter.
|
||||
result = 'UTF-8'
|
||||
return result
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,163 @@
|
||||
"""Drop-in replacement for the thread module.
|
||||
|
||||
Meant to be used as a brain-dead substitute so that threaded code does
|
||||
not need to be rewritten for when the thread module is not present.
|
||||
|
||||
Suggested usage is::
|
||||
|
||||
try:
|
||||
import _thread
|
||||
except ImportError:
|
||||
import _dummy_thread as _thread
|
||||
|
||||
"""
|
||||
# Exports only things specified by thread documentation;
|
||||
# skipping obsolete synonyms allocate(), start_new(), exit_thread().
|
||||
__all__ = ['error', 'start_new_thread', 'exit', 'get_ident', 'allocate_lock',
|
||||
'interrupt_main', 'LockType']
|
||||
|
||||
# A dummy value
|
||||
TIMEOUT_MAX = 2**31
|
||||
|
||||
# NOTE: this module can be imported early in the extension building process,
|
||||
# and so top level imports of other modules should be avoided. Instead, all
|
||||
# imports are done when needed on a function-by-function basis. Since threads
|
||||
# are disabled, the import lock should not be an issue anyway (??).
|
||||
|
||||
error = RuntimeError
|
||||
|
||||
def start_new_thread(function, args, kwargs={}):
|
||||
"""Dummy implementation of _thread.start_new_thread().
|
||||
|
||||
Compatibility is maintained by making sure that ``args`` is a
|
||||
tuple and ``kwargs`` is a dictionary. If an exception is raised
|
||||
and it is SystemExit (which can be done by _thread.exit()) it is
|
||||
caught and nothing is done; all other exceptions are printed out
|
||||
by using traceback.print_exc().
|
||||
|
||||
If the executed function calls interrupt_main the KeyboardInterrupt will be
|
||||
raised when the function returns.
|
||||
|
||||
"""
|
||||
if type(args) != type(tuple()):
|
||||
raise TypeError("2nd arg must be a tuple")
|
||||
if type(kwargs) != type(dict()):
|
||||
raise TypeError("3rd arg must be a dict")
|
||||
global _main
|
||||
_main = False
|
||||
try:
|
||||
function(*args, **kwargs)
|
||||
except SystemExit:
|
||||
pass
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
_main = True
|
||||
global _interrupt
|
||||
if _interrupt:
|
||||
_interrupt = False
|
||||
raise KeyboardInterrupt
|
||||
|
||||
def exit():
|
||||
"""Dummy implementation of _thread.exit()."""
|
||||
raise SystemExit
|
||||
|
||||
def get_ident():
|
||||
"""Dummy implementation of _thread.get_ident().
|
||||
|
||||
Since this module should only be used when _threadmodule is not
|
||||
available, it is safe to assume that the current process is the
|
||||
only thread. Thus a constant can be safely returned.
|
||||
"""
|
||||
return -1
|
||||
|
||||
def allocate_lock():
|
||||
"""Dummy implementation of _thread.allocate_lock()."""
|
||||
return LockType()
|
||||
|
||||
def stack_size(size=None):
|
||||
"""Dummy implementation of _thread.stack_size()."""
|
||||
if size is not None:
|
||||
raise error("setting thread stack size not supported")
|
||||
return 0
|
||||
|
||||
def _set_sentinel():
|
||||
"""Dummy implementation of _thread._set_sentinel()."""
|
||||
return LockType()
|
||||
|
||||
class LockType(object):
|
||||
"""Class implementing dummy implementation of _thread.LockType.
|
||||
|
||||
Compatibility is maintained by maintaining self.locked_status
|
||||
which is a boolean that stores the state of the lock. Pickling of
|
||||
the lock, though, should not be done since if the _thread module is
|
||||
then used with an unpickled ``lock()`` from here problems could
|
||||
occur from this class not having atomic methods.
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.locked_status = False
|
||||
|
||||
def acquire(self, waitflag=None, timeout=-1):
|
||||
"""Dummy implementation of acquire().
|
||||
|
||||
For blocking calls, self.locked_status is automatically set to
|
||||
True and returned appropriately based on value of
|
||||
``waitflag``. If it is non-blocking, then the value is
|
||||
actually checked and not set if it is already acquired. This
|
||||
is all done so that threading.Condition's assert statements
|
||||
aren't triggered and throw a little fit.
|
||||
|
||||
"""
|
||||
if waitflag is None or waitflag:
|
||||
self.locked_status = True
|
||||
return True
|
||||
else:
|
||||
if not self.locked_status:
|
||||
self.locked_status = True
|
||||
return True
|
||||
else:
|
||||
if timeout > 0:
|
||||
import time
|
||||
time.sleep(timeout)
|
||||
return False
|
||||
|
||||
__enter__ = acquire
|
||||
|
||||
def __exit__(self, typ, val, tb):
|
||||
self.release()
|
||||
|
||||
def release(self):
|
||||
"""Release the dummy lock."""
|
||||
# XXX Perhaps shouldn't actually bother to test? Could lead
|
||||
# to problems for complex, threaded code.
|
||||
if not self.locked_status:
|
||||
raise error
|
||||
self.locked_status = False
|
||||
return True
|
||||
|
||||
def locked(self):
|
||||
return self.locked_status
|
||||
|
||||
def __repr__(self):
|
||||
return "<%s %s.%s object at %s>" % (
|
||||
"locked" if self.locked_status else "unlocked",
|
||||
self.__class__.__module__,
|
||||
self.__class__.__qualname__,
|
||||
hex(id(self))
|
||||
)
|
||||
|
||||
# Used to signal that interrupt_main was called in a "thread"
|
||||
_interrupt = False
|
||||
# True when not executing in a "thread"
|
||||
_main = True
|
||||
|
||||
def interrupt_main():
|
||||
"""Set _interrupt flag to True to have start_new_thread raise
|
||||
KeyboardInterrupt upon exiting."""
|
||||
if _main:
|
||||
raise KeyboardInterrupt
|
||||
else:
|
||||
global _interrupt
|
||||
_interrupt = True
|
||||
@@ -0,0 +1,196 @@
|
||||
# Access WeakSet through the weakref module.
|
||||
# This code is separated-out because it is needed
|
||||
# by abc.py to load everything else at startup.
|
||||
|
||||
from _weakref import ref
|
||||
|
||||
__all__ = ['WeakSet']
|
||||
|
||||
|
||||
class _IterationGuard:
|
||||
# This context manager registers itself in the current iterators of the
|
||||
# weak container, such as to delay all removals until the context manager
|
||||
# exits.
|
||||
# This technique should be relatively thread-safe (since sets are).
|
||||
|
||||
def __init__(self, weakcontainer):
|
||||
# Don't create cycles
|
||||
self.weakcontainer = ref(weakcontainer)
|
||||
|
||||
def __enter__(self):
|
||||
w = self.weakcontainer()
|
||||
if w is not None:
|
||||
w._iterating.add(self)
|
||||
return self
|
||||
|
||||
def __exit__(self, e, t, b):
|
||||
w = self.weakcontainer()
|
||||
if w is not None:
|
||||
s = w._iterating
|
||||
s.remove(self)
|
||||
if not s:
|
||||
w._commit_removals()
|
||||
|
||||
|
||||
class WeakSet:
|
||||
def __init__(self, data=None):
|
||||
self.data = set()
|
||||
def _remove(item, selfref=ref(self)):
|
||||
self = selfref()
|
||||
if self is not None:
|
||||
if self._iterating:
|
||||
self._pending_removals.append(item)
|
||||
else:
|
||||
self.data.discard(item)
|
||||
self._remove = _remove
|
||||
# A list of keys to be removed
|
||||
self._pending_removals = []
|
||||
self._iterating = set()
|
||||
if data is not None:
|
||||
self.update(data)
|
||||
|
||||
def _commit_removals(self):
|
||||
l = self._pending_removals
|
||||
discard = self.data.discard
|
||||
while l:
|
||||
discard(l.pop())
|
||||
|
||||
def __iter__(self):
|
||||
with _IterationGuard(self):
|
||||
for itemref in self.data:
|
||||
item = itemref()
|
||||
if item is not None:
|
||||
# Caveat: the iterator will keep a strong reference to
|
||||
# `item` until it is resumed or closed.
|
||||
yield item
|
||||
|
||||
def __len__(self):
|
||||
return len(self.data) - len(self._pending_removals)
|
||||
|
||||
def __contains__(self, item):
|
||||
try:
|
||||
wr = ref(item)
|
||||
except TypeError:
|
||||
return False
|
||||
return wr in self.data
|
||||
|
||||
def __reduce__(self):
|
||||
return (self.__class__, (list(self),),
|
||||
getattr(self, '__dict__', None))
|
||||
|
||||
def add(self, item):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
self.data.add(ref(item, self._remove))
|
||||
|
||||
def clear(self):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
self.data.clear()
|
||||
|
||||
def copy(self):
|
||||
return self.__class__(self)
|
||||
|
||||
def pop(self):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
while True:
|
||||
try:
|
||||
itemref = self.data.pop()
|
||||
except KeyError:
|
||||
raise KeyError('pop from empty WeakSet')
|
||||
item = itemref()
|
||||
if item is not None:
|
||||
return item
|
||||
|
||||
def remove(self, item):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
self.data.remove(ref(item))
|
||||
|
||||
def discard(self, item):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
self.data.discard(ref(item))
|
||||
|
||||
def update(self, other):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
for element in other:
|
||||
self.add(element)
|
||||
|
||||
def __ior__(self, other):
|
||||
self.update(other)
|
||||
return self
|
||||
|
||||
def difference(self, other):
|
||||
newset = self.copy()
|
||||
newset.difference_update(other)
|
||||
return newset
|
||||
__sub__ = difference
|
||||
|
||||
def difference_update(self, other):
|
||||
self.__isub__(other)
|
||||
def __isub__(self, other):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
if self is other:
|
||||
self.data.clear()
|
||||
else:
|
||||
self.data.difference_update(ref(item) for item in other)
|
||||
return self
|
||||
|
||||
def intersection(self, other):
|
||||
return self.__class__(item for item in other if item in self)
|
||||
__and__ = intersection
|
||||
|
||||
def intersection_update(self, other):
|
||||
self.__iand__(other)
|
||||
def __iand__(self, other):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
self.data.intersection_update(ref(item) for item in other)
|
||||
return self
|
||||
|
||||
def issubset(self, other):
|
||||
return self.data.issubset(ref(item) for item in other)
|
||||
__le__ = issubset
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.data < set(ref(item) for item in other)
|
||||
|
||||
def issuperset(self, other):
|
||||
return self.data.issuperset(ref(item) for item in other)
|
||||
__ge__ = issuperset
|
||||
|
||||
def __gt__(self, other):
|
||||
return self.data > set(ref(item) for item in other)
|
||||
|
||||
def __eq__(self, other):
|
||||
if not isinstance(other, self.__class__):
|
||||
return NotImplemented
|
||||
return self.data == set(ref(item) for item in other)
|
||||
|
||||
def symmetric_difference(self, other):
|
||||
newset = self.copy()
|
||||
newset.symmetric_difference_update(other)
|
||||
return newset
|
||||
__xor__ = symmetric_difference
|
||||
|
||||
def symmetric_difference_update(self, other):
|
||||
self.__ixor__(other)
|
||||
def __ixor__(self, other):
|
||||
if self._pending_removals:
|
||||
self._commit_removals()
|
||||
if self is other:
|
||||
self.data.clear()
|
||||
else:
|
||||
self.data.symmetric_difference_update(ref(item, self._remove) for item in other)
|
||||
return self
|
||||
|
||||
def union(self, other):
|
||||
return self.__class__(e for s in (self, other) for e in s)
|
||||
__or__ = union
|
||||
|
||||
def isdisjoint(self, other):
|
||||
return len(self.intersection(other)) == 0
|
||||
@@ -0,0 +1,250 @@
|
||||
# Copyright 2007 Google, Inc. All Rights Reserved.
|
||||
# Licensed to PSF under a Contributor Agreement.
|
||||
|
||||
"""Abstract Base Classes (ABCs) according to PEP 3119."""
|
||||
|
||||
from _weakrefset import WeakSet
|
||||
|
||||
|
||||
def abstractmethod(funcobj):
|
||||
"""A decorator indicating abstract methods.
|
||||
|
||||
Requires that the metaclass is ABCMeta or derived from it. A
|
||||
class that has a metaclass derived from ABCMeta cannot be
|
||||
instantiated unless all of its abstract methods are overridden.
|
||||
The abstract methods can be called using any of the normal
|
||||
'super' call mechanisms.
|
||||
|
||||
Usage:
|
||||
|
||||
class C(metaclass=ABCMeta):
|
||||
@abstractmethod
|
||||
def my_abstract_method(self, ...):
|
||||
...
|
||||
"""
|
||||
funcobj.__isabstractmethod__ = True
|
||||
return funcobj
|
||||
|
||||
|
||||
class abstractclassmethod(classmethod):
|
||||
"""
|
||||
A decorator indicating abstract classmethods.
|
||||
|
||||
Similar to abstractmethod.
|
||||
|
||||
Usage:
|
||||
|
||||
class C(metaclass=ABCMeta):
|
||||
@abstractclassmethod
|
||||
def my_abstract_classmethod(cls, ...):
|
||||
...
|
||||
|
||||
'abstractclassmethod' is deprecated. Use 'classmethod' with
|
||||
'abstractmethod' instead.
|
||||
"""
|
||||
|
||||
__isabstractmethod__ = True
|
||||
|
||||
def __init__(self, callable):
|
||||
callable.__isabstractmethod__ = True
|
||||
super().__init__(callable)
|
||||
|
||||
|
||||
class abstractstaticmethod(staticmethod):
|
||||
"""
|
||||
A decorator indicating abstract staticmethods.
|
||||
|
||||
Similar to abstractmethod.
|
||||
|
||||
Usage:
|
||||
|
||||
class C(metaclass=ABCMeta):
|
||||
@abstractstaticmethod
|
||||
def my_abstract_staticmethod(...):
|
||||
...
|
||||
|
||||
'abstractstaticmethod' is deprecated. Use 'staticmethod' with
|
||||
'abstractmethod' instead.
|
||||
"""
|
||||
|
||||
__isabstractmethod__ = True
|
||||
|
||||
def __init__(self, callable):
|
||||
callable.__isabstractmethod__ = True
|
||||
super().__init__(callable)
|
||||
|
||||
|
||||
class abstractproperty(property):
|
||||
"""
|
||||
A decorator indicating abstract properties.
|
||||
|
||||
Requires that the metaclass is ABCMeta or derived from it. A
|
||||
class that has a metaclass derived from ABCMeta cannot be
|
||||
instantiated unless all of its abstract properties are overridden.
|
||||
The abstract properties can be called using any of the normal
|
||||
'super' call mechanisms.
|
||||
|
||||
Usage:
|
||||
|
||||
class C(metaclass=ABCMeta):
|
||||
@abstractproperty
|
||||
def my_abstract_property(self):
|
||||
...
|
||||
|
||||
This defines a read-only property; you can also define a read-write
|
||||
abstract property using the 'long' form of property declaration:
|
||||
|
||||
class C(metaclass=ABCMeta):
|
||||
def getx(self): ...
|
||||
def setx(self, value): ...
|
||||
x = abstractproperty(getx, setx)
|
||||
|
||||
'abstractproperty' is deprecated. Use 'property' with 'abstractmethod'
|
||||
instead.
|
||||
"""
|
||||
|
||||
__isabstractmethod__ = True
|
||||
|
||||
|
||||
class ABCMeta(type):
|
||||
|
||||
"""Metaclass for defining Abstract Base Classes (ABCs).
|
||||
|
||||
Use this metaclass to create an ABC. An ABC can be subclassed
|
||||
directly, and then acts as a mix-in class. You can also register
|
||||
unrelated concrete classes (even built-in classes) and unrelated
|
||||
ABCs as 'virtual subclasses' -- these and their descendants will
|
||||
be considered subclasses of the registering ABC by the built-in
|
||||
issubclass() function, but the registering ABC won't show up in
|
||||
their MRO (Method Resolution Order) nor will method
|
||||
implementations defined by the registering ABC be callable (not
|
||||
even via super()).
|
||||
|
||||
"""
|
||||
|
||||
# A global counter that is incremented each time a class is
|
||||
# registered as a virtual subclass of anything. It forces the
|
||||
# negative cache to be cleared before its next use.
|
||||
# Note: this counter is private. Use `abc.get_cache_token()` for
|
||||
# external code.
|
||||
_abc_invalidation_counter = 0
|
||||
|
||||
def __new__(mcls, name, bases, namespace, **kwargs):
|
||||
cls = super().__new__(mcls, name, bases, namespace, **kwargs)
|
||||
# Compute set of abstract method names
|
||||
abstracts = {name
|
||||
for name, value in namespace.items()
|
||||
if getattr(value, "__isabstractmethod__", False)}
|
||||
for base in bases:
|
||||
for name in getattr(base, "__abstractmethods__", set()):
|
||||
value = getattr(cls, name, None)
|
||||
if getattr(value, "__isabstractmethod__", False):
|
||||
abstracts.add(name)
|
||||
cls.__abstractmethods__ = frozenset(abstracts)
|
||||
# Set up inheritance registry
|
||||
cls._abc_registry = WeakSet()
|
||||
cls._abc_cache = WeakSet()
|
||||
cls._abc_negative_cache = WeakSet()
|
||||
cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
|
||||
return cls
|
||||
|
||||
def register(cls, subclass):
|
||||
"""Register a virtual subclass of an ABC.
|
||||
|
||||
Returns the subclass, to allow usage as a class decorator.
|
||||
"""
|
||||
if not isinstance(subclass, type):
|
||||
raise TypeError("Can only register classes")
|
||||
if issubclass(subclass, cls):
|
||||
return subclass # Already a subclass
|
||||
# Subtle: test for cycles *after* testing for "already a subclass";
|
||||
# this means we allow X.register(X) and interpret it as a no-op.
|
||||
if issubclass(cls, subclass):
|
||||
# This would create a cycle, which is bad for the algorithm below
|
||||
raise RuntimeError("Refusing to create an inheritance cycle")
|
||||
cls._abc_registry.add(subclass)
|
||||
ABCMeta._abc_invalidation_counter += 1 # Invalidate negative cache
|
||||
return subclass
|
||||
|
||||
def _dump_registry(cls, file=None):
|
||||
"""Debug helper to print the ABC registry."""
|
||||
print("Class: %s.%s" % (cls.__module__, cls.__qualname__), file=file)
|
||||
print("Inv.counter: %s" % ABCMeta._abc_invalidation_counter, file=file)
|
||||
for name in sorted(cls.__dict__):
|
||||
if name.startswith("_abc_"):
|
||||
value = getattr(cls, name)
|
||||
if isinstance(value, WeakSet):
|
||||
value = set(value)
|
||||
print("%s: %r" % (name, value), file=file)
|
||||
|
||||
def __instancecheck__(cls, instance):
|
||||
"""Override for isinstance(instance, cls)."""
|
||||
# Inline the cache checking
|
||||
subclass = instance.__class__
|
||||
if subclass in cls._abc_cache:
|
||||
return True
|
||||
subtype = type(instance)
|
||||
if subtype is subclass:
|
||||
if (cls._abc_negative_cache_version ==
|
||||
ABCMeta._abc_invalidation_counter and
|
||||
subclass in cls._abc_negative_cache):
|
||||
return False
|
||||
# Fall back to the subclass check.
|
||||
return cls.__subclasscheck__(subclass)
|
||||
return any(cls.__subclasscheck__(c) for c in {subclass, subtype})
|
||||
|
||||
def __subclasscheck__(cls, subclass):
|
||||
"""Override for issubclass(subclass, cls)."""
|
||||
# Check cache
|
||||
if subclass in cls._abc_cache:
|
||||
return True
|
||||
# Check negative cache; may have to invalidate
|
||||
if cls._abc_negative_cache_version < ABCMeta._abc_invalidation_counter:
|
||||
# Invalidate the negative cache
|
||||
cls._abc_negative_cache = WeakSet()
|
||||
cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
|
||||
elif subclass in cls._abc_negative_cache:
|
||||
return False
|
||||
# Check the subclass hook
|
||||
ok = cls.__subclasshook__(subclass)
|
||||
if ok is not NotImplemented:
|
||||
assert isinstance(ok, bool)
|
||||
if ok:
|
||||
cls._abc_cache.add(subclass)
|
||||
else:
|
||||
cls._abc_negative_cache.add(subclass)
|
||||
return ok
|
||||
# Check if it's a direct subclass
|
||||
if cls in getattr(subclass, '__mro__', ()):
|
||||
cls._abc_cache.add(subclass)
|
||||
return True
|
||||
# Check if it's a subclass of a registered class (recursive)
|
||||
for rcls in cls._abc_registry:
|
||||
if issubclass(subclass, rcls):
|
||||
cls._abc_cache.add(subclass)
|
||||
return True
|
||||
# Check if it's a subclass of a subclass (recursive)
|
||||
for scls in cls.__subclasses__():
|
||||
if issubclass(subclass, scls):
|
||||
cls._abc_cache.add(subclass)
|
||||
return True
|
||||
# No dice; update negative cache
|
||||
cls._abc_negative_cache.add(subclass)
|
||||
return False
|
||||
|
||||
|
||||
class ABC(metaclass=ABCMeta):
|
||||
"""Helper class that provides a standard way to create an ABC using
|
||||
inheritance.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def get_cache_token():
|
||||
"""Returns the current ABC cache token.
|
||||
|
||||
The token is an opaque object (supporting equality testing) identifying the
|
||||
current version of the ABC cache for virtual subclasses. The token changes
|
||||
with every call to ``register()`` on any ABC.
|
||||
"""
|
||||
return ABCMeta._abc_invalidation_counter
|
||||
@@ -0,0 +1,602 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
"""Base16, Base32, Base64 (RFC 3548), Base85 and Ascii85 data encodings"""
|
||||
|
||||
# Modified 04-Oct-1995 by Jack Jansen to use binascii module
|
||||
# Modified 30-Dec-2003 by Barry Warsaw to add full RFC 3548 support
|
||||
# Modified 22-May-2007 by Guido van Rossum to use bytes everywhere
|
||||
|
||||
import re
|
||||
import struct
|
||||
import binascii
|
||||
|
||||
|
||||
__all__ = [
|
||||
# Legacy interface exports traditional RFC 2045 Base64 encodings
|
||||
'encode', 'decode', 'encodebytes', 'decodebytes',
|
||||
# Generalized interface for other encodings
|
||||
'b64encode', 'b64decode', 'b32encode', 'b32decode',
|
||||
'b16encode', 'b16decode',
|
||||
# Base85 and Ascii85 encodings
|
||||
'b85encode', 'b85decode', 'a85encode', 'a85decode',
|
||||
# Standard Base64 encoding
|
||||
'standard_b64encode', 'standard_b64decode',
|
||||
# Some common Base64 alternatives. As referenced by RFC 3458, see thread
|
||||
# starting at:
|
||||
#
|
||||
# http://zgp.org/pipermail/p2p-hackers/2001-September/000316.html
|
||||
'urlsafe_b64encode', 'urlsafe_b64decode',
|
||||
]
|
||||
|
||||
|
||||
bytes_types = (bytes, bytearray) # Types acceptable as binary data
|
||||
|
||||
def _bytes_from_decode_data(s):
|
||||
if isinstance(s, str):
|
||||
try:
|
||||
return s.encode('ascii')
|
||||
except UnicodeEncodeError:
|
||||
raise ValueError('string argument should contain only ASCII characters')
|
||||
if isinstance(s, bytes_types):
|
||||
return s
|
||||
try:
|
||||
return memoryview(s).tobytes()
|
||||
except TypeError:
|
||||
raise TypeError("argument should be a bytes-like object or ASCII "
|
||||
"string, not %r" % s.__class__.__name__) from None
|
||||
|
||||
|
||||
# Base64 encoding/decoding uses binascii
|
||||
|
||||
def b64encode(s, altchars=None):
|
||||
"""Encode the bytes-like object s using Base64 and return a bytes object.
|
||||
|
||||
Optional altchars should be a byte string of length 2 which specifies an
|
||||
alternative alphabet for the '+' and '/' characters. This allows an
|
||||
application to e.g. generate url or filesystem safe Base64 strings.
|
||||
"""
|
||||
encoded = binascii.b2a_base64(s, newline=False)
|
||||
if altchars is not None:
|
||||
assert len(altchars) == 2, repr(altchars)
|
||||
return encoded.translate(bytes.maketrans(b'+/', altchars))
|
||||
return encoded
|
||||
|
||||
|
||||
def b64decode(s, altchars=None, validate=False):
|
||||
"""Decode the Base64 encoded bytes-like object or ASCII string s.
|
||||
|
||||
Optional altchars must be a bytes-like object or ASCII string of length 2
|
||||
which specifies the alternative alphabet used instead of the '+' and '/'
|
||||
characters.
|
||||
|
||||
The result is returned as a bytes object. A binascii.Error is raised if
|
||||
s is incorrectly padded.
|
||||
|
||||
If validate is False (the default), characters that are neither in the
|
||||
normal base-64 alphabet nor the alternative alphabet are discarded prior
|
||||
to the padding check. If validate is True, these non-alphabet characters
|
||||
in the input result in a binascii.Error.
|
||||
"""
|
||||
s = _bytes_from_decode_data(s)
|
||||
if altchars is not None:
|
||||
altchars = _bytes_from_decode_data(altchars)
|
||||
assert len(altchars) == 2, repr(altchars)
|
||||
s = s.translate(bytes.maketrans(altchars, b'+/'))
|
||||
if validate and not re.match(b'^[A-Za-z0-9+/]*={0,2}$', s):
|
||||
raise binascii.Error('Non-base64 digit found')
|
||||
return binascii.a2b_base64(s)
|
||||
|
||||
|
||||
def standard_b64encode(s):
|
||||
"""Encode bytes-like object s using the standard Base64 alphabet.
|
||||
|
||||
The result is returned as a bytes object.
|
||||
"""
|
||||
return b64encode(s)
|
||||
|
||||
def standard_b64decode(s):
|
||||
"""Decode bytes encoded with the standard Base64 alphabet.
|
||||
|
||||
Argument s is a bytes-like object or ASCII string to decode. The result
|
||||
is returned as a bytes object. A binascii.Error is raised if the input
|
||||
is incorrectly padded. Characters that are not in the standard alphabet
|
||||
are discarded prior to the padding check.
|
||||
"""
|
||||
return b64decode(s)
|
||||
|
||||
|
||||
_urlsafe_encode_translation = bytes.maketrans(b'+/', b'-_')
|
||||
_urlsafe_decode_translation = bytes.maketrans(b'-_', b'+/')
|
||||
|
||||
def urlsafe_b64encode(s):
|
||||
"""Encode bytes using the URL- and filesystem-safe Base64 alphabet.
|
||||
|
||||
Argument s is a bytes-like object to encode. The result is returned as a
|
||||
bytes object. The alphabet uses '-' instead of '+' and '_' instead of
|
||||
'/'.
|
||||
"""
|
||||
return b64encode(s).translate(_urlsafe_encode_translation)
|
||||
|
||||
def urlsafe_b64decode(s):
|
||||
"""Decode bytes using the URL- and filesystem-safe Base64 alphabet.
|
||||
|
||||
Argument s is a bytes-like object or ASCII string to decode. The result
|
||||
is returned as a bytes object. A binascii.Error is raised if the input
|
||||
is incorrectly padded. Characters that are not in the URL-safe base-64
|
||||
alphabet, and are not a plus '+' or slash '/', are discarded prior to the
|
||||
padding check.
|
||||
|
||||
The alphabet uses '-' instead of '+' and '_' instead of '/'.
|
||||
"""
|
||||
s = _bytes_from_decode_data(s)
|
||||
s = s.translate(_urlsafe_decode_translation)
|
||||
return b64decode(s)
|
||||
|
||||
|
||||
|
||||
# Base32 encoding/decoding must be done in Python
|
||||
_b32alphabet = b'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'
|
||||
_b32tab2 = None
|
||||
_b32rev = None
|
||||
|
||||
def b32encode(s):
|
||||
"""Encode the bytes-like object s using Base32 and return a bytes object.
|
||||
"""
|
||||
global _b32tab2
|
||||
# Delay the initialization of the table to not waste memory
|
||||
# if the function is never called
|
||||
if _b32tab2 is None:
|
||||
b32tab = [bytes((i,)) for i in _b32alphabet]
|
||||
_b32tab2 = [a + b for a in b32tab for b in b32tab]
|
||||
b32tab = None
|
||||
|
||||
if not isinstance(s, bytes_types):
|
||||
s = memoryview(s).tobytes()
|
||||
leftover = len(s) % 5
|
||||
# Pad the last quantum with zero bits if necessary
|
||||
if leftover:
|
||||
s = s + b'\0' * (5 - leftover) # Don't use += !
|
||||
encoded = bytearray()
|
||||
from_bytes = int.from_bytes
|
||||
b32tab2 = _b32tab2
|
||||
for i in range(0, len(s), 5):
|
||||
c = from_bytes(s[i: i + 5], 'big')
|
||||
encoded += (b32tab2[c >> 30] + # bits 1 - 10
|
||||
b32tab2[(c >> 20) & 0x3ff] + # bits 11 - 20
|
||||
b32tab2[(c >> 10) & 0x3ff] + # bits 21 - 30
|
||||
b32tab2[c & 0x3ff] # bits 31 - 40
|
||||
)
|
||||
# Adjust for any leftover partial quanta
|
||||
if leftover == 1:
|
||||
encoded[-6:] = b'======'
|
||||
elif leftover == 2:
|
||||
encoded[-4:] = b'===='
|
||||
elif leftover == 3:
|
||||
encoded[-3:] = b'==='
|
||||
elif leftover == 4:
|
||||
encoded[-1:] = b'='
|
||||
return bytes(encoded)
|
||||
|
||||
def b32decode(s, casefold=False, map01=None):
|
||||
"""Decode the Base32 encoded bytes-like object or ASCII string s.
|
||||
|
||||
Optional casefold is a flag specifying whether a lowercase alphabet is
|
||||
acceptable as input. For security purposes, the default is False.
|
||||
|
||||
RFC 3548 allows for optional mapping of the digit 0 (zero) to the
|
||||
letter O (oh), and for optional mapping of the digit 1 (one) to
|
||||
either the letter I (eye) or letter L (el). The optional argument
|
||||
map01 when not None, specifies which letter the digit 1 should be
|
||||
mapped to (when map01 is not None, the digit 0 is always mapped to
|
||||
the letter O). For security purposes the default is None, so that
|
||||
0 and 1 are not allowed in the input.
|
||||
|
||||
The result is returned as a bytes object. A binascii.Error is raised if
|
||||
the input is incorrectly padded or if there are non-alphabet
|
||||
characters present in the input.
|
||||
"""
|
||||
global _b32rev
|
||||
# Delay the initialization of the table to not waste memory
|
||||
# if the function is never called
|
||||
if _b32rev is None:
|
||||
_b32rev = {v: k for k, v in enumerate(_b32alphabet)}
|
||||
s = _bytes_from_decode_data(s)
|
||||
if len(s) % 8:
|
||||
raise binascii.Error('Incorrect padding')
|
||||
# Handle section 2.4 zero and one mapping. The flag map01 will be either
|
||||
# False, or the character to map the digit 1 (one) to. It should be
|
||||
# either L (el) or I (eye).
|
||||
if map01 is not None:
|
||||
map01 = _bytes_from_decode_data(map01)
|
||||
assert len(map01) == 1, repr(map01)
|
||||
s = s.translate(bytes.maketrans(b'01', b'O' + map01))
|
||||
if casefold:
|
||||
s = s.upper()
|
||||
# Strip off pad characters from the right. We need to count the pad
|
||||
# characters because this will tell us how many null bytes to remove from
|
||||
# the end of the decoded string.
|
||||
l = len(s)
|
||||
s = s.rstrip(b'=')
|
||||
padchars = l - len(s)
|
||||
# Now decode the full quanta
|
||||
decoded = bytearray()
|
||||
b32rev = _b32rev
|
||||
for i in range(0, len(s), 8):
|
||||
quanta = s[i: i + 8]
|
||||
acc = 0
|
||||
try:
|
||||
for c in quanta:
|
||||
acc = (acc << 5) + b32rev[c]
|
||||
except KeyError:
|
||||
raise binascii.Error('Non-base32 digit found') from None
|
||||
decoded += acc.to_bytes(5, 'big')
|
||||
# Process the last, partial quanta
|
||||
if padchars:
|
||||
acc <<= 5 * padchars
|
||||
last = acc.to_bytes(5, 'big')
|
||||
if padchars == 1:
|
||||
decoded[-5:] = last[:-1]
|
||||
elif padchars == 3:
|
||||
decoded[-5:] = last[:-2]
|
||||
elif padchars == 4:
|
||||
decoded[-5:] = last[:-3]
|
||||
elif padchars == 6:
|
||||
decoded[-5:] = last[:-4]
|
||||
else:
|
||||
raise binascii.Error('Incorrect padding')
|
||||
return bytes(decoded)
|
||||
|
||||
|
||||
|
||||
# RFC 3548, Base 16 Alphabet specifies uppercase, but hexlify() returns
|
||||
# lowercase. The RFC also recommends against accepting input case
|
||||
# insensitively.
|
||||
def b16encode(s):
|
||||
"""Encode the bytes-like object s using Base16 and return a bytes object.
|
||||
"""
|
||||
return binascii.hexlify(s).upper()
|
||||
|
||||
|
||||
def b16decode(s, casefold=False):
|
||||
"""Decode the Base16 encoded bytes-like object or ASCII string s.
|
||||
|
||||
Optional casefold is a flag specifying whether a lowercase alphabet is
|
||||
acceptable as input. For security purposes, the default is False.
|
||||
|
||||
The result is returned as a bytes object. A binascii.Error is raised if
|
||||
s is incorrectly padded or if there are non-alphabet characters present
|
||||
in the input.
|
||||
"""
|
||||
s = _bytes_from_decode_data(s)
|
||||
if casefold:
|
||||
s = s.upper()
|
||||
if re.search(b'[^0-9A-F]', s):
|
||||
raise binascii.Error('Non-base16 digit found')
|
||||
return binascii.unhexlify(s)
|
||||
|
||||
#
|
||||
# Ascii85 encoding/decoding
|
||||
#
|
||||
|
||||
_a85chars = None
|
||||
_a85chars2 = None
|
||||
_A85START = b"<~"
|
||||
_A85END = b"~>"
|
||||
|
||||
def _85encode(b, chars, chars2, pad=False, foldnuls=False, foldspaces=False):
|
||||
# Helper function for a85encode and b85encode
|
||||
if not isinstance(b, bytes_types):
|
||||
b = memoryview(b).tobytes()
|
||||
|
||||
padding = (-len(b)) % 4
|
||||
if padding:
|
||||
b = b + b'\0' * padding
|
||||
words = struct.Struct('!%dI' % (len(b) // 4)).unpack(b)
|
||||
|
||||
chunks = [b'z' if foldnuls and not word else
|
||||
b'y' if foldspaces and word == 0x20202020 else
|
||||
(chars2[word // 614125] +
|
||||
chars2[word // 85 % 7225] +
|
||||
chars[word % 85])
|
||||
for word in words]
|
||||
|
||||
if padding and not pad:
|
||||
if chunks[-1] == b'z':
|
||||
chunks[-1] = chars[0] * 5
|
||||
chunks[-1] = chunks[-1][:-padding]
|
||||
|
||||
return b''.join(chunks)
|
||||
|
||||
def a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False):
|
||||
"""Encode bytes-like object b using Ascii85 and return a bytes object.
|
||||
|
||||
foldspaces is an optional flag that uses the special short sequence 'y'
|
||||
instead of 4 consecutive spaces (ASCII 0x20) as supported by 'btoa'. This
|
||||
feature is not supported by the "standard" Adobe encoding.
|
||||
|
||||
wrapcol controls whether the output should have newline (b'\\n') characters
|
||||
added to it. If this is non-zero, each output line will be at most this
|
||||
many characters long.
|
||||
|
||||
pad controls whether the input is padded to a multiple of 4 before
|
||||
encoding. Note that the btoa implementation always pads.
|
||||
|
||||
adobe controls whether the encoded byte sequence is framed with <~ and ~>,
|
||||
which is used by the Adobe implementation.
|
||||
"""
|
||||
global _a85chars, _a85chars2
|
||||
# Delay the initialization of tables to not waste memory
|
||||
# if the function is never called
|
||||
if _a85chars is None:
|
||||
_a85chars = [bytes((i,)) for i in range(33, 118)]
|
||||
_a85chars2 = [(a + b) for a in _a85chars for b in _a85chars]
|
||||
|
||||
result = _85encode(b, _a85chars, _a85chars2, pad, True, foldspaces)
|
||||
|
||||
if adobe:
|
||||
result = _A85START + result
|
||||
if wrapcol:
|
||||
wrapcol = max(2 if adobe else 1, wrapcol)
|
||||
chunks = [result[i: i + wrapcol]
|
||||
for i in range(0, len(result), wrapcol)]
|
||||
if adobe:
|
||||
if len(chunks[-1]) + 2 > wrapcol:
|
||||
chunks.append(b'')
|
||||
result = b'\n'.join(chunks)
|
||||
if adobe:
|
||||
result += _A85END
|
||||
|
||||
return result
|
||||
|
||||
def a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v'):
|
||||
"""Decode the Ascii85 encoded bytes-like object or ASCII string b.
|
||||
|
||||
foldspaces is a flag that specifies whether the 'y' short sequence should be
|
||||
accepted as shorthand for 4 consecutive spaces (ASCII 0x20). This feature is
|
||||
not supported by the "standard" Adobe encoding.
|
||||
|
||||
adobe controls whether the input sequence is in Adobe Ascii85 format (i.e.
|
||||
is framed with <~ and ~>).
|
||||
|
||||
ignorechars should be a byte string containing characters to ignore from the
|
||||
input. This should only contain whitespace characters, and by default
|
||||
contains all whitespace characters in ASCII.
|
||||
|
||||
The result is returned as a bytes object.
|
||||
"""
|
||||
b = _bytes_from_decode_data(b)
|
||||
if adobe:
|
||||
if not b.endswith(_A85END):
|
||||
raise ValueError(
|
||||
"Ascii85 encoded byte sequences must end "
|
||||
"with {!r}".format(_A85END)
|
||||
)
|
||||
if b.startswith(_A85START):
|
||||
b = b[2:-2] # Strip off start/end markers
|
||||
else:
|
||||
b = b[:-2]
|
||||
#
|
||||
# We have to go through this stepwise, so as to ignore spaces and handle
|
||||
# special short sequences
|
||||
#
|
||||
packI = struct.Struct('!I').pack
|
||||
decoded = []
|
||||
decoded_append = decoded.append
|
||||
curr = []
|
||||
curr_append = curr.append
|
||||
curr_clear = curr.clear
|
||||
for x in b + b'u' * 4:
|
||||
if b'!'[0] <= x <= b'u'[0]:
|
||||
curr_append(x)
|
||||
if len(curr) == 5:
|
||||
acc = 0
|
||||
for x in curr:
|
||||
acc = 85 * acc + (x - 33)
|
||||
try:
|
||||
decoded_append(packI(acc))
|
||||
except struct.error:
|
||||
raise ValueError('Ascii85 overflow') from None
|
||||
curr_clear()
|
||||
elif x == b'z'[0]:
|
||||
if curr:
|
||||
raise ValueError('z inside Ascii85 5-tuple')
|
||||
decoded_append(b'\0\0\0\0')
|
||||
elif foldspaces and x == b'y'[0]:
|
||||
if curr:
|
||||
raise ValueError('y inside Ascii85 5-tuple')
|
||||
decoded_append(b'\x20\x20\x20\x20')
|
||||
elif x in ignorechars:
|
||||
# Skip whitespace
|
||||
continue
|
||||
else:
|
||||
raise ValueError('Non-Ascii85 digit found: %c' % x)
|
||||
|
||||
result = b''.join(decoded)
|
||||
padding = 4 - len(curr)
|
||||
if padding:
|
||||
# Throw away the extra padding
|
||||
result = result[:-padding]
|
||||
return result
|
||||
|
||||
# The following code is originally taken (with permission) from Mercurial
|
||||
|
||||
_b85alphabet = (b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
b"abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~")
|
||||
_b85chars = None
|
||||
_b85chars2 = None
|
||||
_b85dec = None
|
||||
|
||||
def b85encode(b, pad=False):
|
||||
"""Encode bytes-like object b in base85 format and return a bytes object.
|
||||
|
||||
If pad is true, the input is padded with b'\\0' so its length is a multiple of
|
||||
4 bytes before encoding.
|
||||
"""
|
||||
global _b85chars, _b85chars2
|
||||
# Delay the initialization of tables to not waste memory
|
||||
# if the function is never called
|
||||
if _b85chars is None:
|
||||
_b85chars = [bytes((i,)) for i in _b85alphabet]
|
||||
_b85chars2 = [(a + b) for a in _b85chars for b in _b85chars]
|
||||
return _85encode(b, _b85chars, _b85chars2, pad)
|
||||
|
||||
def b85decode(b):
|
||||
"""Decode the base85-encoded bytes-like object or ASCII string b
|
||||
|
||||
The result is returned as a bytes object.
|
||||
"""
|
||||
global _b85dec
|
||||
# Delay the initialization of tables to not waste memory
|
||||
# if the function is never called
|
||||
if _b85dec is None:
|
||||
_b85dec = [None] * 256
|
||||
for i, c in enumerate(_b85alphabet):
|
||||
_b85dec[c] = i
|
||||
|
||||
b = _bytes_from_decode_data(b)
|
||||
padding = (-len(b)) % 5
|
||||
b = b + b'~' * padding
|
||||
out = []
|
||||
packI = struct.Struct('!I').pack
|
||||
for i in range(0, len(b), 5):
|
||||
chunk = b[i:i + 5]
|
||||
acc = 0
|
||||
try:
|
||||
for c in chunk:
|
||||
acc = acc * 85 + _b85dec[c]
|
||||
except TypeError:
|
||||
for j, c in enumerate(chunk):
|
||||
if _b85dec[c] is None:
|
||||
raise ValueError('bad base85 character at position %d'
|
||||
% (i + j)) from None
|
||||
raise
|
||||
try:
|
||||
out.append(packI(acc))
|
||||
except struct.error:
|
||||
raise ValueError('base85 overflow in hunk starting at byte %d'
|
||||
% i) from None
|
||||
|
||||
result = b''.join(out)
|
||||
if padding:
|
||||
result = result[:-padding]
|
||||
return result
|
||||
|
||||
# Legacy interface. This code could be cleaned up since I don't believe
|
||||
# binascii has any line length limitations. It just doesn't seem worth it
|
||||
# though. The files should be opened in binary mode.
|
||||
|
||||
MAXLINESIZE = 76 # Excluding the CRLF
|
||||
MAXBINSIZE = (MAXLINESIZE//4)*3
|
||||
|
||||
def encode(input, output):
|
||||
"""Encode a file; input and output are binary files."""
|
||||
while True:
|
||||
s = input.read(MAXBINSIZE)
|
||||
if not s:
|
||||
break
|
||||
while len(s) < MAXBINSIZE:
|
||||
ns = input.read(MAXBINSIZE-len(s))
|
||||
if not ns:
|
||||
break
|
||||
s += ns
|
||||
line = binascii.b2a_base64(s)
|
||||
output.write(line)
|
||||
|
||||
|
||||
def decode(input, output):
|
||||
"""Decode a file; input and output are binary files."""
|
||||
while True:
|
||||
line = input.readline()
|
||||
if not line:
|
||||
break
|
||||
s = binascii.a2b_base64(line)
|
||||
output.write(s)
|
||||
|
||||
def _input_type_check(s):
|
||||
try:
|
||||
m = memoryview(s)
|
||||
except TypeError as err:
|
||||
msg = "expected bytes-like object, not %s" % s.__class__.__name__
|
||||
raise TypeError(msg) from err
|
||||
if m.format not in ('c', 'b', 'B'):
|
||||
msg = ("expected single byte elements, not %r from %s" %
|
||||
(m.format, s.__class__.__name__))
|
||||
raise TypeError(msg)
|
||||
if m.ndim != 1:
|
||||
msg = ("expected 1-D data, not %d-D data from %s" %
|
||||
(m.ndim, s.__class__.__name__))
|
||||
raise TypeError(msg)
|
||||
|
||||
|
||||
def encodebytes(s):
|
||||
"""Encode a bytestring into a bytes object containing multiple lines
|
||||
of base-64 data."""
|
||||
_input_type_check(s)
|
||||
pieces = []
|
||||
for i in range(0, len(s), MAXBINSIZE):
|
||||
chunk = s[i : i + MAXBINSIZE]
|
||||
pieces.append(binascii.b2a_base64(chunk))
|
||||
return b"".join(pieces)
|
||||
|
||||
def encodestring(s):
|
||||
"""Legacy alias of encodebytes()."""
|
||||
import warnings
|
||||
warnings.warn("encodestring() is a deprecated alias since 3.1, "
|
||||
"use encodebytes()",
|
||||
DeprecationWarning, 2)
|
||||
return encodebytes(s)
|
||||
|
||||
|
||||
def decodebytes(s):
|
||||
"""Decode a bytestring of base-64 data into a bytes object."""
|
||||
_input_type_check(s)
|
||||
return binascii.a2b_base64(s)
|
||||
|
||||
def decodestring(s):
|
||||
"""Legacy alias of decodebytes()."""
|
||||
import warnings
|
||||
warnings.warn("decodestring() is a deprecated alias since Python 3.1, "
|
||||
"use decodebytes()",
|
||||
DeprecationWarning, 2)
|
||||
return decodebytes(s)
|
||||
|
||||
|
||||
# Usable as a script...
|
||||
def main():
|
||||
"""Small main program"""
|
||||
import sys, getopt
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'deut')
|
||||
except getopt.error as msg:
|
||||
sys.stdout = sys.stderr
|
||||
print(msg)
|
||||
print("""usage: %s [-d|-e|-u|-t] [file|-]
|
||||
-d, -u: decode
|
||||
-e: encode (default)
|
||||
-t: encode and decode string 'Aladdin:open sesame'"""%sys.argv[0])
|
||||
sys.exit(2)
|
||||
func = encode
|
||||
for o, a in opts:
|
||||
if o == '-e': func = encode
|
||||
if o == '-d': func = decode
|
||||
if o == '-u': func = decode
|
||||
if o == '-t': test(); return
|
||||
if args and args[0] != '-':
|
||||
with open(args[0], 'rb') as f:
|
||||
func(f, sys.stdout.buffer)
|
||||
else:
|
||||
func(sys.stdin.buffer, sys.stdout.buffer)
|
||||
|
||||
|
||||
def test():
|
||||
s0 = b"Aladdin:open sesame"
|
||||
print(repr(s0))
|
||||
s1 = encodebytes(s0)
|
||||
print(repr(s1))
|
||||
s2 = decodebytes(s1)
|
||||
print(repr(s2))
|
||||
assert s0 == s2
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,92 @@
|
||||
"""Bisection algorithms."""
|
||||
|
||||
def insort_right(a, x, lo=0, hi=None):
|
||||
"""Insert item x in list a, and keep it sorted assuming a is sorted.
|
||||
|
||||
If x is already in a, insert it to the right of the rightmost x.
|
||||
|
||||
Optional args lo (default 0) and hi (default len(a)) bound the
|
||||
slice of a to be searched.
|
||||
"""
|
||||
|
||||
if lo < 0:
|
||||
raise ValueError('lo must be non-negative')
|
||||
if hi is None:
|
||||
hi = len(a)
|
||||
while lo < hi:
|
||||
mid = (lo+hi)//2
|
||||
if x < a[mid]: hi = mid
|
||||
else: lo = mid+1
|
||||
a.insert(lo, x)
|
||||
|
||||
insort = insort_right # backward compatibility
|
||||
|
||||
def bisect_right(a, x, lo=0, hi=None):
|
||||
"""Return the index where to insert item x in list a, assuming a is sorted.
|
||||
|
||||
The return value i is such that all e in a[:i] have e <= x, and all e in
|
||||
a[i:] have e > x. So if x already appears in the list, a.insert(x) will
|
||||
insert just after the rightmost x already there.
|
||||
|
||||
Optional args lo (default 0) and hi (default len(a)) bound the
|
||||
slice of a to be searched.
|
||||
"""
|
||||
|
||||
if lo < 0:
|
||||
raise ValueError('lo must be non-negative')
|
||||
if hi is None:
|
||||
hi = len(a)
|
||||
while lo < hi:
|
||||
mid = (lo+hi)//2
|
||||
if x < a[mid]: hi = mid
|
||||
else: lo = mid+1
|
||||
return lo
|
||||
|
||||
bisect = bisect_right # backward compatibility
|
||||
|
||||
def insort_left(a, x, lo=0, hi=None):
|
||||
"""Insert item x in list a, and keep it sorted assuming a is sorted.
|
||||
|
||||
If x is already in a, insert it to the left of the leftmost x.
|
||||
|
||||
Optional args lo (default 0) and hi (default len(a)) bound the
|
||||
slice of a to be searched.
|
||||
"""
|
||||
|
||||
if lo < 0:
|
||||
raise ValueError('lo must be non-negative')
|
||||
if hi is None:
|
||||
hi = len(a)
|
||||
while lo < hi:
|
||||
mid = (lo+hi)//2
|
||||
if a[mid] < x: lo = mid+1
|
||||
else: hi = mid
|
||||
a.insert(lo, x)
|
||||
|
||||
|
||||
def bisect_left(a, x, lo=0, hi=None):
|
||||
"""Return the index where to insert item x in list a, assuming a is sorted.
|
||||
|
||||
The return value i is such that all e in a[:i] have e < x, and all e in
|
||||
a[i:] have e >= x. So if x already appears in the list, a.insert(x) will
|
||||
insert just before the leftmost x already there.
|
||||
|
||||
Optional args lo (default 0) and hi (default len(a)) bound the
|
||||
slice of a to be searched.
|
||||
"""
|
||||
|
||||
if lo < 0:
|
||||
raise ValueError('lo must be non-negative')
|
||||
if hi is None:
|
||||
hi = len(a)
|
||||
while lo < hi:
|
||||
mid = (lo+hi)//2
|
||||
if a[mid] < x: lo = mid+1
|
||||
else: hi = mid
|
||||
return lo
|
||||
|
||||
# Overwrite above definitions with a fast C implementation
|
||||
try:
|
||||
from _bisect import *
|
||||
except ImportError:
|
||||
pass
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
from _collections_abc import *
|
||||
from _collections_abc import __all__
|
||||
@@ -0,0 +1,313 @@
|
||||
"""Generic (shallow and deep) copying operations.
|
||||
|
||||
Interface summary:
|
||||
|
||||
import copy
|
||||
|
||||
x = copy.copy(y) # make a shallow copy of y
|
||||
x = copy.deepcopy(y) # make a deep copy of y
|
||||
|
||||
For module specific errors, copy.Error is raised.
|
||||
|
||||
The difference between shallow and deep copying is only relevant for
|
||||
compound objects (objects that contain other objects, like lists or
|
||||
class instances).
|
||||
|
||||
- A shallow copy constructs a new compound object and then (to the
|
||||
extent possible) inserts *the same objects* into it that the
|
||||
original contains.
|
||||
|
||||
- A deep copy constructs a new compound object and then, recursively,
|
||||
inserts *copies* into it of the objects found in the original.
|
||||
|
||||
Two problems often exist with deep copy operations that don't exist
|
||||
with shallow copy operations:
|
||||
|
||||
a) recursive objects (compound objects that, directly or indirectly,
|
||||
contain a reference to themselves) may cause a recursive loop
|
||||
|
||||
b) because deep copy copies *everything* it may copy too much, e.g.
|
||||
administrative data structures that should be shared even between
|
||||
copies
|
||||
|
||||
Python's deep copy operation avoids these problems by:
|
||||
|
||||
a) keeping a table of objects already copied during the current
|
||||
copying pass
|
||||
|
||||
b) letting user-defined classes override the copying operation or the
|
||||
set of components copied
|
||||
|
||||
This version does not copy types like module, class, function, method,
|
||||
nor stack trace, stack frame, nor file, socket, window, nor array, nor
|
||||
any similar types.
|
||||
|
||||
Classes can use the same interfaces to control copying that they use
|
||||
to control pickling: they can define methods called __getinitargs__(),
|
||||
__getstate__() and __setstate__(). See the documentation for module
|
||||
"pickle" for information on these methods.
|
||||
"""
|
||||
|
||||
import types
|
||||
import weakref
|
||||
from copyreg import dispatch_table
|
||||
|
||||
class Error(Exception):
|
||||
pass
|
||||
error = Error # backward compatibility
|
||||
|
||||
try:
|
||||
from org.python.core import PyStringMap
|
||||
except ImportError:
|
||||
PyStringMap = None
|
||||
|
||||
__all__ = ["Error", "copy", "deepcopy"]
|
||||
|
||||
def copy(x):
|
||||
"""Shallow copy operation on arbitrary Python objects.
|
||||
|
||||
See the module's __doc__ string for more info.
|
||||
"""
|
||||
|
||||
cls = type(x)
|
||||
|
||||
copier = _copy_dispatch.get(cls)
|
||||
if copier:
|
||||
return copier(x)
|
||||
|
||||
try:
|
||||
issc = issubclass(cls, type)
|
||||
except TypeError: # cls is not a class
|
||||
issc = False
|
||||
if issc:
|
||||
# treat it as a regular class:
|
||||
return _copy_immutable(x)
|
||||
|
||||
copier = getattr(cls, "__copy__", None)
|
||||
if copier:
|
||||
return copier(x)
|
||||
|
||||
reductor = dispatch_table.get(cls)
|
||||
if reductor:
|
||||
rv = reductor(x)
|
||||
else:
|
||||
reductor = getattr(x, "__reduce_ex__", None)
|
||||
if reductor:
|
||||
rv = reductor(4)
|
||||
else:
|
||||
reductor = getattr(x, "__reduce__", None)
|
||||
if reductor:
|
||||
rv = reductor()
|
||||
else:
|
||||
raise Error("un(shallow)copyable object of type %s" % cls)
|
||||
|
||||
if isinstance(rv, str):
|
||||
return x
|
||||
return _reconstruct(x, None, *rv)
|
||||
|
||||
|
||||
_copy_dispatch = d = {}
|
||||
|
||||
def _copy_immutable(x):
|
||||
return x
|
||||
for t in (type(None), int, float, bool, complex, str, tuple,
|
||||
bytes, frozenset, type, range, slice,
|
||||
types.BuiltinFunctionType, type(Ellipsis), type(NotImplemented),
|
||||
types.FunctionType, weakref.ref):
|
||||
d[t] = _copy_immutable
|
||||
t = getattr(types, "CodeType", None)
|
||||
if t is not None:
|
||||
d[t] = _copy_immutable
|
||||
|
||||
d[list] = list.copy
|
||||
d[dict] = dict.copy
|
||||
d[set] = set.copy
|
||||
d[bytearray] = bytearray.copy
|
||||
|
||||
if PyStringMap is not None:
|
||||
d[PyStringMap] = PyStringMap.copy
|
||||
|
||||
del d, t
|
||||
|
||||
def deepcopy(x, memo=None, _nil=[]):
|
||||
"""Deep copy operation on arbitrary Python objects.
|
||||
|
||||
See the module's __doc__ string for more info.
|
||||
"""
|
||||
|
||||
if memo is None:
|
||||
memo = {}
|
||||
|
||||
d = id(x)
|
||||
y = memo.get(d, _nil)
|
||||
if y is not _nil:
|
||||
return y
|
||||
|
||||
cls = type(x)
|
||||
|
||||
copier = _deepcopy_dispatch.get(cls)
|
||||
if copier:
|
||||
y = copier(x, memo)
|
||||
else:
|
||||
try:
|
||||
issc = issubclass(cls, type)
|
||||
except TypeError: # cls is not a class (old Boost; see SF #502085)
|
||||
issc = 0
|
||||
if issc:
|
||||
y = _deepcopy_atomic(x, memo)
|
||||
else:
|
||||
copier = getattr(x, "__deepcopy__", None)
|
||||
if copier:
|
||||
y = copier(memo)
|
||||
else:
|
||||
reductor = dispatch_table.get(cls)
|
||||
if reductor:
|
||||
rv = reductor(x)
|
||||
else:
|
||||
reductor = getattr(x, "__reduce_ex__", None)
|
||||
if reductor:
|
||||
rv = reductor(4)
|
||||
else:
|
||||
reductor = getattr(x, "__reduce__", None)
|
||||
if reductor:
|
||||
rv = reductor()
|
||||
else:
|
||||
raise Error(
|
||||
"un(deep)copyable object of type %s" % cls)
|
||||
if isinstance(rv, str):
|
||||
y = x
|
||||
else:
|
||||
y = _reconstruct(x, memo, *rv)
|
||||
|
||||
# If is its own copy, don't memoize.
|
||||
if y is not x:
|
||||
memo[d] = y
|
||||
_keep_alive(x, memo) # Make sure x lives at least as long as d
|
||||
return y
|
||||
|
||||
_deepcopy_dispatch = d = {}
|
||||
|
||||
def _deepcopy_atomic(x, memo):
|
||||
return x
|
||||
d[type(None)] = _deepcopy_atomic
|
||||
d[type(Ellipsis)] = _deepcopy_atomic
|
||||
d[type(NotImplemented)] = _deepcopy_atomic
|
||||
d[int] = _deepcopy_atomic
|
||||
d[float] = _deepcopy_atomic
|
||||
d[bool] = _deepcopy_atomic
|
||||
d[complex] = _deepcopy_atomic
|
||||
d[bytes] = _deepcopy_atomic
|
||||
d[str] = _deepcopy_atomic
|
||||
try:
|
||||
d[types.CodeType] = _deepcopy_atomic
|
||||
except AttributeError:
|
||||
pass
|
||||
d[type] = _deepcopy_atomic
|
||||
d[types.BuiltinFunctionType] = _deepcopy_atomic
|
||||
d[types.FunctionType] = _deepcopy_atomic
|
||||
d[weakref.ref] = _deepcopy_atomic
|
||||
|
||||
def _deepcopy_list(x, memo, deepcopy=deepcopy):
|
||||
y = []
|
||||
memo[id(x)] = y
|
||||
append = y.append
|
||||
for a in x:
|
||||
append(deepcopy(a, memo))
|
||||
return y
|
||||
d[list] = _deepcopy_list
|
||||
|
||||
def _deepcopy_tuple(x, memo, deepcopy=deepcopy):
|
||||
y = [deepcopy(a, memo) for a in x]
|
||||
# We're not going to put the tuple in the memo, but it's still important we
|
||||
# check for it, in case the tuple contains recursive mutable structures.
|
||||
try:
|
||||
return memo[id(x)]
|
||||
except KeyError:
|
||||
pass
|
||||
for k, j in zip(x, y):
|
||||
if k is not j:
|
||||
y = tuple(y)
|
||||
break
|
||||
else:
|
||||
y = x
|
||||
return y
|
||||
d[tuple] = _deepcopy_tuple
|
||||
|
||||
def _deepcopy_dict(x, memo, deepcopy=deepcopy):
|
||||
y = {}
|
||||
memo[id(x)] = y
|
||||
for key, value in x.items():
|
||||
y[deepcopy(key, memo)] = deepcopy(value, memo)
|
||||
return y
|
||||
d[dict] = _deepcopy_dict
|
||||
if PyStringMap is not None:
|
||||
d[PyStringMap] = _deepcopy_dict
|
||||
|
||||
def _deepcopy_method(x, memo): # Copy instance methods
|
||||
return type(x)(x.__func__, deepcopy(x.__self__, memo))
|
||||
d[types.MethodType] = _deepcopy_method
|
||||
|
||||
del d
|
||||
|
||||
def _keep_alive(x, memo):
|
||||
"""Keeps a reference to the object x in the memo.
|
||||
|
||||
Because we remember objects by their id, we have
|
||||
to assure that possibly temporary objects are kept
|
||||
alive by referencing them.
|
||||
We store a reference at the id of the memo, which should
|
||||
normally not be used unless someone tries to deepcopy
|
||||
the memo itself...
|
||||
"""
|
||||
try:
|
||||
memo[id(memo)].append(x)
|
||||
except KeyError:
|
||||
# aha, this is the first one :-)
|
||||
memo[id(memo)]=[x]
|
||||
|
||||
def _reconstruct(x, memo, func, args,
|
||||
state=None, listiter=None, dictiter=None,
|
||||
deepcopy=deepcopy):
|
||||
deep = memo is not None
|
||||
if deep and args:
|
||||
args = (deepcopy(arg, memo) for arg in args)
|
||||
y = func(*args)
|
||||
if deep:
|
||||
memo[id(x)] = y
|
||||
|
||||
if state is not None:
|
||||
if deep:
|
||||
state = deepcopy(state, memo)
|
||||
if hasattr(y, '__setstate__'):
|
||||
y.__setstate__(state)
|
||||
else:
|
||||
if isinstance(state, tuple) and len(state) == 2:
|
||||
state, slotstate = state
|
||||
else:
|
||||
slotstate = None
|
||||
if state is not None:
|
||||
y.__dict__.update(state)
|
||||
if slotstate is not None:
|
||||
for key, value in slotstate.items():
|
||||
setattr(y, key, value)
|
||||
|
||||
if listiter is not None:
|
||||
if deep:
|
||||
for item in listiter:
|
||||
item = deepcopy(item, memo)
|
||||
y.append(item)
|
||||
else:
|
||||
for item in listiter:
|
||||
y.append(item)
|
||||
if dictiter is not None:
|
||||
if deep:
|
||||
for key, value in dictiter:
|
||||
key = deepcopy(key, memo)
|
||||
value = deepcopy(value, memo)
|
||||
y[key] = value
|
||||
else:
|
||||
for key, value in dictiter:
|
||||
y[key] = value
|
||||
return y
|
||||
|
||||
del types, weakref, PyStringMap
|
||||
@@ -0,0 +1,206 @@
|
||||
"""Helper to provide extensibility for pickle.
|
||||
|
||||
This is only useful to add pickle support for extension types defined in
|
||||
C, not for instances of user-defined classes.
|
||||
"""
|
||||
|
||||
__all__ = ["pickle", "constructor",
|
||||
"add_extension", "remove_extension", "clear_extension_cache"]
|
||||
|
||||
dispatch_table = {}
|
||||
|
||||
def pickle(ob_type, pickle_function, constructor_ob=None):
|
||||
if not callable(pickle_function):
|
||||
raise TypeError("reduction functions must be callable")
|
||||
dispatch_table[ob_type] = pickle_function
|
||||
|
||||
# The constructor_ob function is a vestige of safe for unpickling.
|
||||
# There is no reason for the caller to pass it anymore.
|
||||
if constructor_ob is not None:
|
||||
constructor(constructor_ob)
|
||||
|
||||
def constructor(object):
|
||||
if not callable(object):
|
||||
raise TypeError("constructors must be callable")
|
||||
|
||||
# Example: provide pickling support for complex numbers.
|
||||
|
||||
try:
|
||||
complex
|
||||
except NameError:
|
||||
pass
|
||||
else:
|
||||
|
||||
def pickle_complex(c):
|
||||
return complex, (c.real, c.imag)
|
||||
|
||||
pickle(complex, pickle_complex, complex)
|
||||
|
||||
# Support for pickling new-style objects
|
||||
|
||||
def _reconstructor(cls, base, state):
|
||||
if base is object:
|
||||
obj = object.__new__(cls)
|
||||
else:
|
||||
obj = base.__new__(cls, state)
|
||||
if base.__init__ != object.__init__:
|
||||
base.__init__(obj, state)
|
||||
return obj
|
||||
|
||||
_HEAPTYPE = 1<<9
|
||||
|
||||
# Python code for object.__reduce_ex__ for protocols 0 and 1
|
||||
|
||||
def _reduce_ex(self, proto):
|
||||
assert proto < 2
|
||||
for base in self.__class__.__mro__:
|
||||
if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE:
|
||||
break
|
||||
else:
|
||||
base = object # not really reachable
|
||||
if base is object:
|
||||
state = None
|
||||
else:
|
||||
if base is self.__class__:
|
||||
raise TypeError("can't pickle %s objects" % base.__name__)
|
||||
state = base(self)
|
||||
args = (self.__class__, base, state)
|
||||
try:
|
||||
getstate = self.__getstate__
|
||||
except AttributeError:
|
||||
if getattr(self, "__slots__", None):
|
||||
raise TypeError("a class that defines __slots__ without "
|
||||
"defining __getstate__ cannot be pickled")
|
||||
try:
|
||||
dict = self.__dict__
|
||||
except AttributeError:
|
||||
dict = None
|
||||
else:
|
||||
dict = getstate()
|
||||
if dict:
|
||||
return _reconstructor, args, dict
|
||||
else:
|
||||
return _reconstructor, args
|
||||
|
||||
# Helper for __reduce_ex__ protocol 2
|
||||
|
||||
def __newobj__(cls, *args):
|
||||
return cls.__new__(cls, *args)
|
||||
|
||||
def __newobj_ex__(cls, args, kwargs):
|
||||
"""Used by pickle protocol 4, instead of __newobj__ to allow classes with
|
||||
keyword-only arguments to be pickled correctly.
|
||||
"""
|
||||
return cls.__new__(cls, *args, **kwargs)
|
||||
|
||||
def _slotnames(cls):
|
||||
"""Return a list of slot names for a given class.
|
||||
|
||||
This needs to find slots defined by the class and its bases, so we
|
||||
can't simply return the __slots__ attribute. We must walk down
|
||||
the Method Resolution Order and concatenate the __slots__ of each
|
||||
class found there. (This assumes classes don't modify their
|
||||
__slots__ attribute to misrepresent their slots after the class is
|
||||
defined.)
|
||||
"""
|
||||
|
||||
# Get the value from a cache in the class if possible
|
||||
names = cls.__dict__.get("__slotnames__")
|
||||
if names is not None:
|
||||
return names
|
||||
|
||||
# Not cached -- calculate the value
|
||||
names = []
|
||||
if not hasattr(cls, "__slots__"):
|
||||
# This class has no slots
|
||||
pass
|
||||
else:
|
||||
# Slots found -- gather slot names from all base classes
|
||||
for c in cls.__mro__:
|
||||
if "__slots__" in c.__dict__:
|
||||
slots = c.__dict__['__slots__']
|
||||
# if class has a single slot, it can be given as a string
|
||||
if isinstance(slots, str):
|
||||
slots = (slots,)
|
||||
for name in slots:
|
||||
# special descriptors
|
||||
if name in ("__dict__", "__weakref__"):
|
||||
continue
|
||||
# mangled names
|
||||
elif name.startswith('__') and not name.endswith('__'):
|
||||
stripped = c.__name__.lstrip('_')
|
||||
if stripped:
|
||||
names.append('_%s%s' % (stripped, name))
|
||||
else:
|
||||
names.append(name)
|
||||
else:
|
||||
names.append(name)
|
||||
|
||||
# Cache the outcome in the class if at all possible
|
||||
try:
|
||||
cls.__slotnames__ = names
|
||||
except:
|
||||
pass # But don't die if we can't
|
||||
|
||||
return names
|
||||
|
||||
# A registry of extension codes. This is an ad-hoc compression
|
||||
# mechanism. Whenever a global reference to <module>, <name> is about
|
||||
# to be pickled, the (<module>, <name>) tuple is looked up here to see
|
||||
# if it is a registered extension code for it. Extension codes are
|
||||
# universal, so that the meaning of a pickle does not depend on
|
||||
# context. (There are also some codes reserved for local use that
|
||||
# don't have this restriction.) Codes are positive ints; 0 is
|
||||
# reserved.
|
||||
|
||||
_extension_registry = {} # key -> code
|
||||
_inverted_registry = {} # code -> key
|
||||
_extension_cache = {} # code -> object
|
||||
# Don't ever rebind those names: pickling grabs a reference to them when
|
||||
# it's initialized, and won't see a rebinding.
|
||||
|
||||
def add_extension(module, name, code):
|
||||
"""Register an extension code."""
|
||||
code = int(code)
|
||||
if not 1 <= code <= 0x7fffffff:
|
||||
raise ValueError("code out of range")
|
||||
key = (module, name)
|
||||
if (_extension_registry.get(key) == code and
|
||||
_inverted_registry.get(code) == key):
|
||||
return # Redundant registrations are benign
|
||||
if key in _extension_registry:
|
||||
raise ValueError("key %s is already registered with code %s" %
|
||||
(key, _extension_registry[key]))
|
||||
if code in _inverted_registry:
|
||||
raise ValueError("code %s is already in use for key %s" %
|
||||
(code, _inverted_registry[code]))
|
||||
_extension_registry[key] = code
|
||||
_inverted_registry[code] = key
|
||||
|
||||
def remove_extension(module, name, code):
|
||||
"""Unregister an extension code. For testing only."""
|
||||
key = (module, name)
|
||||
if (_extension_registry.get(key) != code or
|
||||
_inverted_registry.get(code) != key):
|
||||
raise ValueError("key %s is not registered with code %s" %
|
||||
(key, code))
|
||||
del _extension_registry[key]
|
||||
del _inverted_registry[code]
|
||||
if code in _extension_cache:
|
||||
del _extension_cache[code]
|
||||
|
||||
def clear_extension_cache():
|
||||
_extension_cache.clear()
|
||||
|
||||
# Standard extension code assignments
|
||||
|
||||
# Reserved ranges
|
||||
|
||||
# First Last Count Purpose
|
||||
# 1 127 127 Reserved for Python standard library
|
||||
# 128 191 64 Reserved for Zope
|
||||
# 192 239 48 Reserved for 3rd parties
|
||||
# 240 255 16 Reserved for private use (will never be assigned)
|
||||
# 256 Inf Inf Reserved for future assignment
|
||||
|
||||
# Extension codes are assigned by the Python Software Foundation.
|
||||
@@ -0,0 +1,116 @@
|
||||
import imp
|
||||
import os
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
# opcode is not a virtualenv module, so we can use it to find the stdlib
|
||||
# Important! To work on pypy, this must be a module that resides in the
|
||||
# lib-python/modified-x.y.z directory
|
||||
import opcode
|
||||
|
||||
dirname = os.path.dirname
|
||||
|
||||
distutils_path = os.path.join(os.path.dirname(opcode.__file__), "distutils")
|
||||
if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
|
||||
warnings.warn("The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
|
||||
else:
|
||||
__path__.insert(0, distutils_path) # noqa: F821
|
||||
real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ("", "", imp.PKG_DIRECTORY))
|
||||
# Copy the relevant attributes
|
||||
try:
|
||||
__revision__ = real_distutils.__revision__
|
||||
except AttributeError:
|
||||
pass
|
||||
__version__ = real_distutils.__version__
|
||||
|
||||
from distutils import dist, sysconfig # isort:skip
|
||||
|
||||
try:
|
||||
basestring
|
||||
except NameError:
|
||||
basestring = str
|
||||
|
||||
# patch build_ext (distutils doesn't know how to get the libs directory
|
||||
# path on windows - it hardcodes the paths around the patched sys.prefix)
|
||||
|
||||
if sys.platform == "win32":
|
||||
from distutils.command.build_ext import build_ext as old_build_ext
|
||||
|
||||
class build_ext(old_build_ext):
|
||||
def finalize_options(self):
|
||||
if self.library_dirs is None:
|
||||
self.library_dirs = []
|
||||
elif isinstance(self.library_dirs, basestring):
|
||||
self.library_dirs = self.library_dirs.split(os.pathsep)
|
||||
|
||||
self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs"))
|
||||
old_build_ext.finalize_options(self)
|
||||
|
||||
from distutils.command import build_ext as build_ext_module
|
||||
|
||||
build_ext_module.build_ext = build_ext
|
||||
|
||||
# distutils.dist patches:
|
||||
|
||||
old_find_config_files = dist.Distribution.find_config_files
|
||||
|
||||
|
||||
def find_config_files(self):
|
||||
found = old_find_config_files(self)
|
||||
if os.name == "posix":
|
||||
user_filename = ".pydistutils.cfg"
|
||||
else:
|
||||
user_filename = "pydistutils.cfg"
|
||||
user_filename = os.path.join(sys.prefix, user_filename)
|
||||
if os.path.isfile(user_filename):
|
||||
for item in list(found):
|
||||
if item.endswith("pydistutils.cfg"):
|
||||
found.remove(item)
|
||||
found.append(user_filename)
|
||||
return found
|
||||
|
||||
|
||||
dist.Distribution.find_config_files = find_config_files
|
||||
|
||||
# distutils.sysconfig patches:
|
||||
|
||||
old_get_python_inc = sysconfig.get_python_inc
|
||||
|
||||
|
||||
def sysconfig_get_python_inc(plat_specific=0, prefix=None):
|
||||
if prefix is None:
|
||||
prefix = sys.real_prefix
|
||||
return old_get_python_inc(plat_specific, prefix)
|
||||
|
||||
|
||||
sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__
|
||||
sysconfig.get_python_inc = sysconfig_get_python_inc
|
||||
|
||||
old_get_python_lib = sysconfig.get_python_lib
|
||||
|
||||
|
||||
def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
|
||||
if standard_lib and prefix is None:
|
||||
prefix = sys.real_prefix
|
||||
return old_get_python_lib(plat_specific, standard_lib, prefix)
|
||||
|
||||
|
||||
sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__
|
||||
sysconfig.get_python_lib = sysconfig_get_python_lib
|
||||
|
||||
old_get_config_vars = sysconfig.get_config_vars
|
||||
|
||||
|
||||
def sysconfig_get_config_vars(*args):
|
||||
real_vars = old_get_config_vars(*args)
|
||||
if sys.platform == "win32":
|
||||
lib_dir = os.path.join(sys.real_prefix, "libs")
|
||||
if isinstance(real_vars, dict) and "LIBDIR" not in real_vars:
|
||||
real_vars["LIBDIR"] = lib_dir # asked for all
|
||||
elif isinstance(real_vars, list) and "LIBDIR" in args:
|
||||
real_vars = real_vars + [lib_dir] # asked for list
|
||||
return real_vars
|
||||
|
||||
|
||||
sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__
|
||||
sysconfig.get_config_vars = sysconfig_get_config_vars
|
||||
@@ -0,0 +1,6 @@
|
||||
# This is a config file local to this virtualenv installation
|
||||
# You may include options that will be used by all distutils commands,
|
||||
# and by easy_install. For instance:
|
||||
#
|
||||
# [easy_install]
|
||||
# find_links = http://mylocalsite
|
||||
@@ -0,0 +1,169 @@
|
||||
""" Standard "encodings" Package
|
||||
|
||||
Standard Python encoding modules are stored in this package
|
||||
directory.
|
||||
|
||||
Codec modules must have names corresponding to normalized encoding
|
||||
names as defined in the normalize_encoding() function below, e.g.
|
||||
'utf-8' must be implemented by the module 'utf_8.py'.
|
||||
|
||||
Each codec module must export the following interface:
|
||||
|
||||
* getregentry() -> codecs.CodecInfo object
|
||||
The getregentry() API must return a CodecInfo object with encoder, decoder,
|
||||
incrementalencoder, incrementaldecoder, streamwriter and streamreader
|
||||
atttributes which adhere to the Python Codec Interface Standard.
|
||||
|
||||
In addition, a module may optionally also define the following
|
||||
APIs which are then used by the package's codec search function:
|
||||
|
||||
* getaliases() -> sequence of encoding name strings to use as aliases
|
||||
|
||||
Alias names returned by getaliases() must be normalized encoding
|
||||
names as defined by normalize_encoding().
|
||||
|
||||
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
|
||||
(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
import sys
|
||||
from . import aliases
|
||||
|
||||
_cache = {}
|
||||
_unknown = '--unknown--'
|
||||
_import_tail = ['*']
|
||||
_aliases = aliases.aliases
|
||||
|
||||
class CodecRegistryError(LookupError, SystemError):
|
||||
pass
|
||||
|
||||
def normalize_encoding(encoding):
|
||||
|
||||
""" Normalize an encoding name.
|
||||
|
||||
Normalization works as follows: all non-alphanumeric
|
||||
characters except the dot used for Python package names are
|
||||
collapsed and replaced with a single underscore, e.g. ' -;#'
|
||||
becomes '_'. Leading and trailing underscores are removed.
|
||||
|
||||
Note that encoding names should be ASCII only; if they do use
|
||||
non-ASCII characters, these must be Latin-1 compatible.
|
||||
|
||||
"""
|
||||
if isinstance(encoding, bytes):
|
||||
encoding = str(encoding, "ascii")
|
||||
|
||||
chars = []
|
||||
punct = False
|
||||
for c in encoding:
|
||||
if c.isalnum() or c == '.':
|
||||
if punct and chars:
|
||||
chars.append('_')
|
||||
chars.append(c)
|
||||
punct = False
|
||||
else:
|
||||
punct = True
|
||||
return ''.join(chars)
|
||||
|
||||
def search_function(encoding):
|
||||
|
||||
# Cache lookup
|
||||
entry = _cache.get(encoding, _unknown)
|
||||
if entry is not _unknown:
|
||||
return entry
|
||||
|
||||
# Import the module:
|
||||
#
|
||||
# First try to find an alias for the normalized encoding
|
||||
# name and lookup the module using the aliased name, then try to
|
||||
# lookup the module using the standard import scheme, i.e. first
|
||||
# try in the encodings package, then at top-level.
|
||||
#
|
||||
norm_encoding = normalize_encoding(encoding)
|
||||
aliased_encoding = _aliases.get(norm_encoding) or \
|
||||
_aliases.get(norm_encoding.replace('.', '_'))
|
||||
if aliased_encoding is not None:
|
||||
modnames = [aliased_encoding,
|
||||
norm_encoding]
|
||||
else:
|
||||
modnames = [norm_encoding]
|
||||
for modname in modnames:
|
||||
if not modname or '.' in modname:
|
||||
continue
|
||||
try:
|
||||
# Import is absolute to prevent the possibly malicious import of a
|
||||
# module with side-effects that is not in the 'encodings' package.
|
||||
mod = __import__('encodings.' + modname, fromlist=_import_tail,
|
||||
level=0)
|
||||
except ImportError:
|
||||
# ImportError may occur because 'encodings.(modname)' does not exist,
|
||||
# or because it imports a name that does not exist (see mbcs and oem)
|
||||
pass
|
||||
else:
|
||||
break
|
||||
else:
|
||||
mod = None
|
||||
|
||||
try:
|
||||
getregentry = mod.getregentry
|
||||
except AttributeError:
|
||||
# Not a codec module
|
||||
mod = None
|
||||
|
||||
if mod is None:
|
||||
# Cache misses
|
||||
_cache[encoding] = None
|
||||
return None
|
||||
|
||||
# Now ask the module for the registry entry
|
||||
entry = getregentry()
|
||||
if not isinstance(entry, codecs.CodecInfo):
|
||||
if not 4 <= len(entry) <= 7:
|
||||
raise CodecRegistryError('module "%s" (%s) failed to register'
|
||||
% (mod.__name__, mod.__file__))
|
||||
if not callable(entry[0]) or not callable(entry[1]) or \
|
||||
(entry[2] is not None and not callable(entry[2])) or \
|
||||
(entry[3] is not None and not callable(entry[3])) or \
|
||||
(len(entry) > 4 and entry[4] is not None and not callable(entry[4])) or \
|
||||
(len(entry) > 5 and entry[5] is not None and not callable(entry[5])):
|
||||
raise CodecRegistryError('incompatible codecs in module "%s" (%s)'
|
||||
% (mod.__name__, mod.__file__))
|
||||
if len(entry)<7 or entry[6] is None:
|
||||
entry += (None,)*(6-len(entry)) + (mod.__name__.split(".", 1)[1],)
|
||||
entry = codecs.CodecInfo(*entry)
|
||||
|
||||
# Cache the codec registry entry
|
||||
_cache[encoding] = entry
|
||||
|
||||
# Register its aliases (without overwriting previously registered
|
||||
# aliases)
|
||||
try:
|
||||
codecaliases = mod.getaliases()
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
for alias in codecaliases:
|
||||
if alias not in _aliases:
|
||||
_aliases[alias] = modname
|
||||
|
||||
# Return the registry entry
|
||||
return entry
|
||||
|
||||
# Register the search_function in the Python codec registry
|
||||
codecs.register(search_function)
|
||||
|
||||
if sys.platform == 'win32':
|
||||
def _alias_mbcs(encoding):
|
||||
try:
|
||||
import _bootlocale
|
||||
if encoding == _bootlocale.getpreferredencoding(False):
|
||||
import encodings.mbcs
|
||||
return encodings.mbcs.getregentry()
|
||||
except ImportError:
|
||||
# Imports may fail while we are shutting down
|
||||
pass
|
||||
|
||||
codecs.register(_alias_mbcs)
|
||||
@@ -0,0 +1,550 @@
|
||||
""" Encoding Aliases Support
|
||||
|
||||
This module is used by the encodings package search function to
|
||||
map encodings names to module names.
|
||||
|
||||
Note that the search function normalizes the encoding names before
|
||||
doing the lookup, so the mapping will have to map normalized
|
||||
encoding names to module names.
|
||||
|
||||
Contents:
|
||||
|
||||
The following aliases dictionary contains mappings of all IANA
|
||||
character set names for which the Python core library provides
|
||||
codecs. In addition to these, a few Python specific codec
|
||||
aliases have also been added.
|
||||
|
||||
"""
|
||||
aliases = {
|
||||
|
||||
# Please keep this list sorted alphabetically by value !
|
||||
|
||||
# ascii codec
|
||||
'646' : 'ascii',
|
||||
'ansi_x3.4_1968' : 'ascii',
|
||||
'ansi_x3_4_1968' : 'ascii', # some email headers use this non-standard name
|
||||
'ansi_x3.4_1986' : 'ascii',
|
||||
'cp367' : 'ascii',
|
||||
'csascii' : 'ascii',
|
||||
'ibm367' : 'ascii',
|
||||
'iso646_us' : 'ascii',
|
||||
'iso_646.irv_1991' : 'ascii',
|
||||
'iso_ir_6' : 'ascii',
|
||||
'us' : 'ascii',
|
||||
'us_ascii' : 'ascii',
|
||||
|
||||
# base64_codec codec
|
||||
'base64' : 'base64_codec',
|
||||
'base_64' : 'base64_codec',
|
||||
|
||||
# big5 codec
|
||||
'big5_tw' : 'big5',
|
||||
'csbig5' : 'big5',
|
||||
|
||||
# big5hkscs codec
|
||||
'big5_hkscs' : 'big5hkscs',
|
||||
'hkscs' : 'big5hkscs',
|
||||
|
||||
# bz2_codec codec
|
||||
'bz2' : 'bz2_codec',
|
||||
|
||||
# cp037 codec
|
||||
'037' : 'cp037',
|
||||
'csibm037' : 'cp037',
|
||||
'ebcdic_cp_ca' : 'cp037',
|
||||
'ebcdic_cp_nl' : 'cp037',
|
||||
'ebcdic_cp_us' : 'cp037',
|
||||
'ebcdic_cp_wt' : 'cp037',
|
||||
'ibm037' : 'cp037',
|
||||
'ibm039' : 'cp037',
|
||||
|
||||
# cp1026 codec
|
||||
'1026' : 'cp1026',
|
||||
'csibm1026' : 'cp1026',
|
||||
'ibm1026' : 'cp1026',
|
||||
|
||||
# cp1125 codec
|
||||
'1125' : 'cp1125',
|
||||
'ibm1125' : 'cp1125',
|
||||
'cp866u' : 'cp1125',
|
||||
'ruscii' : 'cp1125',
|
||||
|
||||
# cp1140 codec
|
||||
'1140' : 'cp1140',
|
||||
'ibm1140' : 'cp1140',
|
||||
|
||||
# cp1250 codec
|
||||
'1250' : 'cp1250',
|
||||
'windows_1250' : 'cp1250',
|
||||
|
||||
# cp1251 codec
|
||||
'1251' : 'cp1251',
|
||||
'windows_1251' : 'cp1251',
|
||||
|
||||
# cp1252 codec
|
||||
'1252' : 'cp1252',
|
||||
'windows_1252' : 'cp1252',
|
||||
|
||||
# cp1253 codec
|
||||
'1253' : 'cp1253',
|
||||
'windows_1253' : 'cp1253',
|
||||
|
||||
# cp1254 codec
|
||||
'1254' : 'cp1254',
|
||||
'windows_1254' : 'cp1254',
|
||||
|
||||
# cp1255 codec
|
||||
'1255' : 'cp1255',
|
||||
'windows_1255' : 'cp1255',
|
||||
|
||||
# cp1256 codec
|
||||
'1256' : 'cp1256',
|
||||
'windows_1256' : 'cp1256',
|
||||
|
||||
# cp1257 codec
|
||||
'1257' : 'cp1257',
|
||||
'windows_1257' : 'cp1257',
|
||||
|
||||
# cp1258 codec
|
||||
'1258' : 'cp1258',
|
||||
'windows_1258' : 'cp1258',
|
||||
|
||||
# cp273 codec
|
||||
'273' : 'cp273',
|
||||
'ibm273' : 'cp273',
|
||||
'csibm273' : 'cp273',
|
||||
|
||||
# cp424 codec
|
||||
'424' : 'cp424',
|
||||
'csibm424' : 'cp424',
|
||||
'ebcdic_cp_he' : 'cp424',
|
||||
'ibm424' : 'cp424',
|
||||
|
||||
# cp437 codec
|
||||
'437' : 'cp437',
|
||||
'cspc8codepage437' : 'cp437',
|
||||
'ibm437' : 'cp437',
|
||||
|
||||
# cp500 codec
|
||||
'500' : 'cp500',
|
||||
'csibm500' : 'cp500',
|
||||
'ebcdic_cp_be' : 'cp500',
|
||||
'ebcdic_cp_ch' : 'cp500',
|
||||
'ibm500' : 'cp500',
|
||||
|
||||
# cp775 codec
|
||||
'775' : 'cp775',
|
||||
'cspc775baltic' : 'cp775',
|
||||
'ibm775' : 'cp775',
|
||||
|
||||
# cp850 codec
|
||||
'850' : 'cp850',
|
||||
'cspc850multilingual' : 'cp850',
|
||||
'ibm850' : 'cp850',
|
||||
|
||||
# cp852 codec
|
||||
'852' : 'cp852',
|
||||
'cspcp852' : 'cp852',
|
||||
'ibm852' : 'cp852',
|
||||
|
||||
# cp855 codec
|
||||
'855' : 'cp855',
|
||||
'csibm855' : 'cp855',
|
||||
'ibm855' : 'cp855',
|
||||
|
||||
# cp857 codec
|
||||
'857' : 'cp857',
|
||||
'csibm857' : 'cp857',
|
||||
'ibm857' : 'cp857',
|
||||
|
||||
# cp858 codec
|
||||
'858' : 'cp858',
|
||||
'csibm858' : 'cp858',
|
||||
'ibm858' : 'cp858',
|
||||
|
||||
# cp860 codec
|
||||
'860' : 'cp860',
|
||||
'csibm860' : 'cp860',
|
||||
'ibm860' : 'cp860',
|
||||
|
||||
# cp861 codec
|
||||
'861' : 'cp861',
|
||||
'cp_is' : 'cp861',
|
||||
'csibm861' : 'cp861',
|
||||
'ibm861' : 'cp861',
|
||||
|
||||
# cp862 codec
|
||||
'862' : 'cp862',
|
||||
'cspc862latinhebrew' : 'cp862',
|
||||
'ibm862' : 'cp862',
|
||||
|
||||
# cp863 codec
|
||||
'863' : 'cp863',
|
||||
'csibm863' : 'cp863',
|
||||
'ibm863' : 'cp863',
|
||||
|
||||
# cp864 codec
|
||||
'864' : 'cp864',
|
||||
'csibm864' : 'cp864',
|
||||
'ibm864' : 'cp864',
|
||||
|
||||
# cp865 codec
|
||||
'865' : 'cp865',
|
||||
'csibm865' : 'cp865',
|
||||
'ibm865' : 'cp865',
|
||||
|
||||
# cp866 codec
|
||||
'866' : 'cp866',
|
||||
'csibm866' : 'cp866',
|
||||
'ibm866' : 'cp866',
|
||||
|
||||
# cp869 codec
|
||||
'869' : 'cp869',
|
||||
'cp_gr' : 'cp869',
|
||||
'csibm869' : 'cp869',
|
||||
'ibm869' : 'cp869',
|
||||
|
||||
# cp932 codec
|
||||
'932' : 'cp932',
|
||||
'ms932' : 'cp932',
|
||||
'mskanji' : 'cp932',
|
||||
'ms_kanji' : 'cp932',
|
||||
|
||||
# cp949 codec
|
||||
'949' : 'cp949',
|
||||
'ms949' : 'cp949',
|
||||
'uhc' : 'cp949',
|
||||
|
||||
# cp950 codec
|
||||
'950' : 'cp950',
|
||||
'ms950' : 'cp950',
|
||||
|
||||
# euc_jis_2004 codec
|
||||
'jisx0213' : 'euc_jis_2004',
|
||||
'eucjis2004' : 'euc_jis_2004',
|
||||
'euc_jis2004' : 'euc_jis_2004',
|
||||
|
||||
# euc_jisx0213 codec
|
||||
'eucjisx0213' : 'euc_jisx0213',
|
||||
|
||||
# euc_jp codec
|
||||
'eucjp' : 'euc_jp',
|
||||
'ujis' : 'euc_jp',
|
||||
'u_jis' : 'euc_jp',
|
||||
|
||||
# euc_kr codec
|
||||
'euckr' : 'euc_kr',
|
||||
'korean' : 'euc_kr',
|
||||
'ksc5601' : 'euc_kr',
|
||||
'ks_c_5601' : 'euc_kr',
|
||||
'ks_c_5601_1987' : 'euc_kr',
|
||||
'ksx1001' : 'euc_kr',
|
||||
'ks_x_1001' : 'euc_kr',
|
||||
|
||||
# gb18030 codec
|
||||
'gb18030_2000' : 'gb18030',
|
||||
|
||||
# gb2312 codec
|
||||
'chinese' : 'gb2312',
|
||||
'csiso58gb231280' : 'gb2312',
|
||||
'euc_cn' : 'gb2312',
|
||||
'euccn' : 'gb2312',
|
||||
'eucgb2312_cn' : 'gb2312',
|
||||
'gb2312_1980' : 'gb2312',
|
||||
'gb2312_80' : 'gb2312',
|
||||
'iso_ir_58' : 'gb2312',
|
||||
|
||||
# gbk codec
|
||||
'936' : 'gbk',
|
||||
'cp936' : 'gbk',
|
||||
'ms936' : 'gbk',
|
||||
|
||||
# hex_codec codec
|
||||
'hex' : 'hex_codec',
|
||||
|
||||
# hp_roman8 codec
|
||||
'roman8' : 'hp_roman8',
|
||||
'r8' : 'hp_roman8',
|
||||
'csHPRoman8' : 'hp_roman8',
|
||||
|
||||
# hz codec
|
||||
'hzgb' : 'hz',
|
||||
'hz_gb' : 'hz',
|
||||
'hz_gb_2312' : 'hz',
|
||||
|
||||
# iso2022_jp codec
|
||||
'csiso2022jp' : 'iso2022_jp',
|
||||
'iso2022jp' : 'iso2022_jp',
|
||||
'iso_2022_jp' : 'iso2022_jp',
|
||||
|
||||
# iso2022_jp_1 codec
|
||||
'iso2022jp_1' : 'iso2022_jp_1',
|
||||
'iso_2022_jp_1' : 'iso2022_jp_1',
|
||||
|
||||
# iso2022_jp_2 codec
|
||||
'iso2022jp_2' : 'iso2022_jp_2',
|
||||
'iso_2022_jp_2' : 'iso2022_jp_2',
|
||||
|
||||
# iso2022_jp_2004 codec
|
||||
'iso_2022_jp_2004' : 'iso2022_jp_2004',
|
||||
'iso2022jp_2004' : 'iso2022_jp_2004',
|
||||
|
||||
# iso2022_jp_3 codec
|
||||
'iso2022jp_3' : 'iso2022_jp_3',
|
||||
'iso_2022_jp_3' : 'iso2022_jp_3',
|
||||
|
||||
# iso2022_jp_ext codec
|
||||
'iso2022jp_ext' : 'iso2022_jp_ext',
|
||||
'iso_2022_jp_ext' : 'iso2022_jp_ext',
|
||||
|
||||
# iso2022_kr codec
|
||||
'csiso2022kr' : 'iso2022_kr',
|
||||
'iso2022kr' : 'iso2022_kr',
|
||||
'iso_2022_kr' : 'iso2022_kr',
|
||||
|
||||
# iso8859_10 codec
|
||||
'csisolatin6' : 'iso8859_10',
|
||||
'iso_8859_10' : 'iso8859_10',
|
||||
'iso_8859_10_1992' : 'iso8859_10',
|
||||
'iso_ir_157' : 'iso8859_10',
|
||||
'l6' : 'iso8859_10',
|
||||
'latin6' : 'iso8859_10',
|
||||
|
||||
# iso8859_11 codec
|
||||
'thai' : 'iso8859_11',
|
||||
'iso_8859_11' : 'iso8859_11',
|
||||
'iso_8859_11_2001' : 'iso8859_11',
|
||||
|
||||
# iso8859_13 codec
|
||||
'iso_8859_13' : 'iso8859_13',
|
||||
'l7' : 'iso8859_13',
|
||||
'latin7' : 'iso8859_13',
|
||||
|
||||
# iso8859_14 codec
|
||||
'iso_8859_14' : 'iso8859_14',
|
||||
'iso_8859_14_1998' : 'iso8859_14',
|
||||
'iso_celtic' : 'iso8859_14',
|
||||
'iso_ir_199' : 'iso8859_14',
|
||||
'l8' : 'iso8859_14',
|
||||
'latin8' : 'iso8859_14',
|
||||
|
||||
# iso8859_15 codec
|
||||
'iso_8859_15' : 'iso8859_15',
|
||||
'l9' : 'iso8859_15',
|
||||
'latin9' : 'iso8859_15',
|
||||
|
||||
# iso8859_16 codec
|
||||
'iso_8859_16' : 'iso8859_16',
|
||||
'iso_8859_16_2001' : 'iso8859_16',
|
||||
'iso_ir_226' : 'iso8859_16',
|
||||
'l10' : 'iso8859_16',
|
||||
'latin10' : 'iso8859_16',
|
||||
|
||||
# iso8859_2 codec
|
||||
'csisolatin2' : 'iso8859_2',
|
||||
'iso_8859_2' : 'iso8859_2',
|
||||
'iso_8859_2_1987' : 'iso8859_2',
|
||||
'iso_ir_101' : 'iso8859_2',
|
||||
'l2' : 'iso8859_2',
|
||||
'latin2' : 'iso8859_2',
|
||||
|
||||
# iso8859_3 codec
|
||||
'csisolatin3' : 'iso8859_3',
|
||||
'iso_8859_3' : 'iso8859_3',
|
||||
'iso_8859_3_1988' : 'iso8859_3',
|
||||
'iso_ir_109' : 'iso8859_3',
|
||||
'l3' : 'iso8859_3',
|
||||
'latin3' : 'iso8859_3',
|
||||
|
||||
# iso8859_4 codec
|
||||
'csisolatin4' : 'iso8859_4',
|
||||
'iso_8859_4' : 'iso8859_4',
|
||||
'iso_8859_4_1988' : 'iso8859_4',
|
||||
'iso_ir_110' : 'iso8859_4',
|
||||
'l4' : 'iso8859_4',
|
||||
'latin4' : 'iso8859_4',
|
||||
|
||||
# iso8859_5 codec
|
||||
'csisolatincyrillic' : 'iso8859_5',
|
||||
'cyrillic' : 'iso8859_5',
|
||||
'iso_8859_5' : 'iso8859_5',
|
||||
'iso_8859_5_1988' : 'iso8859_5',
|
||||
'iso_ir_144' : 'iso8859_5',
|
||||
|
||||
# iso8859_6 codec
|
||||
'arabic' : 'iso8859_6',
|
||||
'asmo_708' : 'iso8859_6',
|
||||
'csisolatinarabic' : 'iso8859_6',
|
||||
'ecma_114' : 'iso8859_6',
|
||||
'iso_8859_6' : 'iso8859_6',
|
||||
'iso_8859_6_1987' : 'iso8859_6',
|
||||
'iso_ir_127' : 'iso8859_6',
|
||||
|
||||
# iso8859_7 codec
|
||||
'csisolatingreek' : 'iso8859_7',
|
||||
'ecma_118' : 'iso8859_7',
|
||||
'elot_928' : 'iso8859_7',
|
||||
'greek' : 'iso8859_7',
|
||||
'greek8' : 'iso8859_7',
|
||||
'iso_8859_7' : 'iso8859_7',
|
||||
'iso_8859_7_1987' : 'iso8859_7',
|
||||
'iso_ir_126' : 'iso8859_7',
|
||||
|
||||
# iso8859_8 codec
|
||||
'csisolatinhebrew' : 'iso8859_8',
|
||||
'hebrew' : 'iso8859_8',
|
||||
'iso_8859_8' : 'iso8859_8',
|
||||
'iso_8859_8_1988' : 'iso8859_8',
|
||||
'iso_ir_138' : 'iso8859_8',
|
||||
|
||||
# iso8859_9 codec
|
||||
'csisolatin5' : 'iso8859_9',
|
||||
'iso_8859_9' : 'iso8859_9',
|
||||
'iso_8859_9_1989' : 'iso8859_9',
|
||||
'iso_ir_148' : 'iso8859_9',
|
||||
'l5' : 'iso8859_9',
|
||||
'latin5' : 'iso8859_9',
|
||||
|
||||
# johab codec
|
||||
'cp1361' : 'johab',
|
||||
'ms1361' : 'johab',
|
||||
|
||||
# koi8_r codec
|
||||
'cskoi8r' : 'koi8_r',
|
||||
|
||||
# kz1048 codec
|
||||
'kz_1048' : 'kz1048',
|
||||
'rk1048' : 'kz1048',
|
||||
'strk1048_2002' : 'kz1048',
|
||||
|
||||
# latin_1 codec
|
||||
#
|
||||
# Note that the latin_1 codec is implemented internally in C and a
|
||||
# lot faster than the charmap codec iso8859_1 which uses the same
|
||||
# encoding. This is why we discourage the use of the iso8859_1
|
||||
# codec and alias it to latin_1 instead.
|
||||
#
|
||||
'8859' : 'latin_1',
|
||||
'cp819' : 'latin_1',
|
||||
'csisolatin1' : 'latin_1',
|
||||
'ibm819' : 'latin_1',
|
||||
'iso8859' : 'latin_1',
|
||||
'iso8859_1' : 'latin_1',
|
||||
'iso_8859_1' : 'latin_1',
|
||||
'iso_8859_1_1987' : 'latin_1',
|
||||
'iso_ir_100' : 'latin_1',
|
||||
'l1' : 'latin_1',
|
||||
'latin' : 'latin_1',
|
||||
'latin1' : 'latin_1',
|
||||
|
||||
# mac_cyrillic codec
|
||||
'maccyrillic' : 'mac_cyrillic',
|
||||
|
||||
# mac_greek codec
|
||||
'macgreek' : 'mac_greek',
|
||||
|
||||
# mac_iceland codec
|
||||
'maciceland' : 'mac_iceland',
|
||||
|
||||
# mac_latin2 codec
|
||||
'maccentraleurope' : 'mac_latin2',
|
||||
'maclatin2' : 'mac_latin2',
|
||||
|
||||
# mac_roman codec
|
||||
'macintosh' : 'mac_roman',
|
||||
'macroman' : 'mac_roman',
|
||||
|
||||
# mac_turkish codec
|
||||
'macturkish' : 'mac_turkish',
|
||||
|
||||
# mbcs codec
|
||||
'ansi' : 'mbcs',
|
||||
'dbcs' : 'mbcs',
|
||||
|
||||
# ptcp154 codec
|
||||
'csptcp154' : 'ptcp154',
|
||||
'pt154' : 'ptcp154',
|
||||
'cp154' : 'ptcp154',
|
||||
'cyrillic_asian' : 'ptcp154',
|
||||
|
||||
# quopri_codec codec
|
||||
'quopri' : 'quopri_codec',
|
||||
'quoted_printable' : 'quopri_codec',
|
||||
'quotedprintable' : 'quopri_codec',
|
||||
|
||||
# rot_13 codec
|
||||
'rot13' : 'rot_13',
|
||||
|
||||
# shift_jis codec
|
||||
'csshiftjis' : 'shift_jis',
|
||||
'shiftjis' : 'shift_jis',
|
||||
'sjis' : 'shift_jis',
|
||||
's_jis' : 'shift_jis',
|
||||
|
||||
# shift_jis_2004 codec
|
||||
'shiftjis2004' : 'shift_jis_2004',
|
||||
'sjis_2004' : 'shift_jis_2004',
|
||||
's_jis_2004' : 'shift_jis_2004',
|
||||
|
||||
# shift_jisx0213 codec
|
||||
'shiftjisx0213' : 'shift_jisx0213',
|
||||
'sjisx0213' : 'shift_jisx0213',
|
||||
's_jisx0213' : 'shift_jisx0213',
|
||||
|
||||
# tactis codec
|
||||
'tis260' : 'tactis',
|
||||
|
||||
# tis_620 codec
|
||||
'tis620' : 'tis_620',
|
||||
'tis_620_0' : 'tis_620',
|
||||
'tis_620_2529_0' : 'tis_620',
|
||||
'tis_620_2529_1' : 'tis_620',
|
||||
'iso_ir_166' : 'tis_620',
|
||||
|
||||
# utf_16 codec
|
||||
'u16' : 'utf_16',
|
||||
'utf16' : 'utf_16',
|
||||
|
||||
# utf_16_be codec
|
||||
'unicodebigunmarked' : 'utf_16_be',
|
||||
'utf_16be' : 'utf_16_be',
|
||||
|
||||
# utf_16_le codec
|
||||
'unicodelittleunmarked' : 'utf_16_le',
|
||||
'utf_16le' : 'utf_16_le',
|
||||
|
||||
# utf_32 codec
|
||||
'u32' : 'utf_32',
|
||||
'utf32' : 'utf_32',
|
||||
|
||||
# utf_32_be codec
|
||||
'utf_32be' : 'utf_32_be',
|
||||
|
||||
# utf_32_le codec
|
||||
'utf_32le' : 'utf_32_le',
|
||||
|
||||
# utf_7 codec
|
||||
'u7' : 'utf_7',
|
||||
'utf7' : 'utf_7',
|
||||
'unicode_1_1_utf_7' : 'utf_7',
|
||||
|
||||
# utf_8 codec
|
||||
'u8' : 'utf_8',
|
||||
'utf' : 'utf_8',
|
||||
'utf8' : 'utf_8',
|
||||
'utf8_ucs2' : 'utf_8',
|
||||
'utf8_ucs4' : 'utf_8',
|
||||
|
||||
# uu_codec codec
|
||||
'uu' : 'uu_codec',
|
||||
|
||||
# zlib_codec codec
|
||||
'zip' : 'zlib_codec',
|
||||
'zlib' : 'zlib_codec',
|
||||
|
||||
# temporary mac CJK aliases, will be replaced by proper codecs in 3.1
|
||||
'x_mac_japanese' : 'shift_jis',
|
||||
'x_mac_korean' : 'euc_kr',
|
||||
'x_mac_simp_chinese' : 'gb2312',
|
||||
'x_mac_trad_chinese' : 'big5',
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
""" Python 'ascii' Codec
|
||||
|
||||
|
||||
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
|
||||
(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
|
||||
|
||||
"""
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
# Note: Binding these as C functions will result in the class not
|
||||
# converting them to methods. This is intended.
|
||||
encode = codecs.ascii_encode
|
||||
decode = codecs.ascii_decode
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.ascii_encode(input, self.errors)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.ascii_decode(input, self.errors)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
class StreamConverter(StreamWriter,StreamReader):
|
||||
|
||||
encode = codecs.ascii_decode
|
||||
decode = codecs.ascii_encode
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='ascii',
|
||||
encode=Codec.encode,
|
||||
decode=Codec.decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
)
|
||||
@@ -0,0 +1,55 @@
|
||||
"""Python 'base64_codec' Codec - base64 content transfer encoding.
|
||||
|
||||
This codec de/encodes from bytes to bytes.
|
||||
|
||||
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import base64
|
||||
|
||||
### Codec APIs
|
||||
|
||||
def base64_encode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (base64.encodebytes(input), len(input))
|
||||
|
||||
def base64_decode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (base64.decodebytes(input), len(input))
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
def encode(self, input, errors='strict'):
|
||||
return base64_encode(input, errors)
|
||||
def decode(self, input, errors='strict'):
|
||||
return base64_decode(input, errors)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
assert self.errors == 'strict'
|
||||
return base64.encodebytes(input)
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
assert self.errors == 'strict'
|
||||
return base64.decodebytes(input)
|
||||
|
||||
class StreamWriter(Codec, codecs.StreamWriter):
|
||||
charbuffertype = bytes
|
||||
|
||||
class StreamReader(Codec, codecs.StreamReader):
|
||||
charbuffertype = bytes
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='base64',
|
||||
encode=base64_encode,
|
||||
decode=base64_decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
_is_text_encoding=False,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# big5.py: Python Unicode Codec for BIG5
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_tw, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_tw.getcodec('big5')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='big5',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# big5hkscs.py: Python Unicode Codec for BIG5HKSCS
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_hk, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_hk.getcodec('big5hkscs')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='big5hkscs',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,78 @@
|
||||
"""Python 'bz2_codec' Codec - bz2 compression encoding.
|
||||
|
||||
This codec de/encodes from bytes to bytes and is therefore usable with
|
||||
bytes.transform() and bytes.untransform().
|
||||
|
||||
Adapted by Raymond Hettinger from zlib_codec.py which was written
|
||||
by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import bz2 # this codec needs the optional bz2 module !
|
||||
|
||||
### Codec APIs
|
||||
|
||||
def bz2_encode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (bz2.compress(input), len(input))
|
||||
|
||||
def bz2_decode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (bz2.decompress(input), len(input))
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
def encode(self, input, errors='strict'):
|
||||
return bz2_encode(input, errors)
|
||||
def decode(self, input, errors='strict'):
|
||||
return bz2_decode(input, errors)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def __init__(self, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
self.errors = errors
|
||||
self.compressobj = bz2.BZ2Compressor()
|
||||
|
||||
def encode(self, input, final=False):
|
||||
if final:
|
||||
c = self.compressobj.compress(input)
|
||||
return c + self.compressobj.flush()
|
||||
else:
|
||||
return self.compressobj.compress(input)
|
||||
|
||||
def reset(self):
|
||||
self.compressobj = bz2.BZ2Compressor()
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def __init__(self, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
self.errors = errors
|
||||
self.decompressobj = bz2.BZ2Decompressor()
|
||||
|
||||
def decode(self, input, final=False):
|
||||
try:
|
||||
return self.decompressobj.decompress(input)
|
||||
except EOFError:
|
||||
return ''
|
||||
|
||||
def reset(self):
|
||||
self.decompressobj = bz2.BZ2Decompressor()
|
||||
|
||||
class StreamWriter(Codec, codecs.StreamWriter):
|
||||
charbuffertype = bytes
|
||||
|
||||
class StreamReader(Codec, codecs.StreamReader):
|
||||
charbuffertype = bytes
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name="bz2",
|
||||
encode=bz2_encode,
|
||||
decode=bz2_decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
_is_text_encoding=False,
|
||||
)
|
||||
@@ -0,0 +1,69 @@
|
||||
""" Generic Python Character Mapping Codec.
|
||||
|
||||
Use this codec directly rather than through the automatic
|
||||
conversion mechanisms supplied by unicode() and .encode().
|
||||
|
||||
|
||||
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
|
||||
(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
# Note: Binding these as C functions will result in the class not
|
||||
# converting them to methods. This is intended.
|
||||
encode = codecs.charmap_encode
|
||||
decode = codecs.charmap_decode
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def __init__(self, errors='strict', mapping=None):
|
||||
codecs.IncrementalEncoder.__init__(self, errors)
|
||||
self.mapping = mapping
|
||||
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input, self.errors, self.mapping)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def __init__(self, errors='strict', mapping=None):
|
||||
codecs.IncrementalDecoder.__init__(self, errors)
|
||||
self.mapping = mapping
|
||||
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input, self.errors, self.mapping)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
|
||||
def __init__(self,stream,errors='strict',mapping=None):
|
||||
codecs.StreamWriter.__init__(self,stream,errors)
|
||||
self.mapping = mapping
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return Codec.encode(input,errors,self.mapping)
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
|
||||
def __init__(self,stream,errors='strict',mapping=None):
|
||||
codecs.StreamReader.__init__(self,stream,errors)
|
||||
self.mapping = mapping
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return Codec.decode(input,errors,self.mapping)
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='charmap',
|
||||
encode=Codec.encode,
|
||||
decode=Codec.decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp037 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP037.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp037',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x9c' # 0x04 -> CONTROL
|
||||
'\t' # 0x05 -> HORIZONTAL TABULATION
|
||||
'\x86' # 0x06 -> CONTROL
|
||||
'\x7f' # 0x07 -> DELETE
|
||||
'\x97' # 0x08 -> CONTROL
|
||||
'\x8d' # 0x09 -> CONTROL
|
||||
'\x8e' # 0x0A -> CONTROL
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x9d' # 0x14 -> CONTROL
|
||||
'\x85' # 0x15 -> CONTROL
|
||||
'\x08' # 0x16 -> BACKSPACE
|
||||
'\x87' # 0x17 -> CONTROL
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x92' # 0x1A -> CONTROL
|
||||
'\x8f' # 0x1B -> CONTROL
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
'\x80' # 0x20 -> CONTROL
|
||||
'\x81' # 0x21 -> CONTROL
|
||||
'\x82' # 0x22 -> CONTROL
|
||||
'\x83' # 0x23 -> CONTROL
|
||||
'\x84' # 0x24 -> CONTROL
|
||||
'\n' # 0x25 -> LINE FEED
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK
|
||||
'\x1b' # 0x27 -> ESCAPE
|
||||
'\x88' # 0x28 -> CONTROL
|
||||
'\x89' # 0x29 -> CONTROL
|
||||
'\x8a' # 0x2A -> CONTROL
|
||||
'\x8b' # 0x2B -> CONTROL
|
||||
'\x8c' # 0x2C -> CONTROL
|
||||
'\x05' # 0x2D -> ENQUIRY
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE
|
||||
'\x07' # 0x2F -> BELL
|
||||
'\x90' # 0x30 -> CONTROL
|
||||
'\x91' # 0x31 -> CONTROL
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE
|
||||
'\x93' # 0x33 -> CONTROL
|
||||
'\x94' # 0x34 -> CONTROL
|
||||
'\x95' # 0x35 -> CONTROL
|
||||
'\x96' # 0x36 -> CONTROL
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION
|
||||
'\x98' # 0x38 -> CONTROL
|
||||
'\x99' # 0x39 -> CONTROL
|
||||
'\x9a' # 0x3A -> CONTROL
|
||||
'\x9b' # 0x3B -> CONTROL
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE
|
||||
'\x9e' # 0x3E -> CONTROL
|
||||
'\x1a' # 0x3F -> SUBSTITUTE
|
||||
' ' # 0x40 -> SPACE
|
||||
'\xa0' # 0x41 -> NO-BREAK SPACE
|
||||
'\xe2' # 0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x44 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0x45 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe3' # 0x46 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe5' # 0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x48 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xf1' # 0x49 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xa2' # 0x4A -> CENT SIGN
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'|' # 0x4F -> VERTICAL LINE
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\xe9' # 0x51 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x54 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xed' # 0x55 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xec' # 0x58 -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xdf' # 0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
'!' # 0x5A -> EXCLAMATION MARK
|
||||
'$' # 0x5B -> DOLLAR SIGN
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'\xac' # 0x5F -> NOT SIGN
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\xc2' # 0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc4' # 0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc0' # 0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc3' # 0x66 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc5' # 0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc7' # 0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xd1' # 0x69 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xa6' # 0x6A -> BROKEN BAR
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\xf8' # 0x70 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xc9' # 0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xcd' # 0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xcc' # 0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'`' # 0x79 -> GRAVE ACCENT
|
||||
':' # 0x7A -> COLON
|
||||
'#' # 0x7B -> NUMBER SIGN
|
||||
'@' # 0x7C -> COMMERCIAL AT
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'"' # 0x7F -> QUOTATION MARK
|
||||
'\xd8' # 0x80 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\xab' # 0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xf0' # 0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
|
||||
'\xfd' # 0x8D -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
|
||||
'\xb1' # 0x8F -> PLUS-MINUS SIGN
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\xaa' # 0x9A -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x9B -> MASCULINE ORDINAL INDICATOR
|
||||
'\xe6' # 0x9C -> LATIN SMALL LIGATURE AE
|
||||
'\xb8' # 0x9D -> CEDILLA
|
||||
'\xc6' # 0x9E -> LATIN CAPITAL LIGATURE AE
|
||||
'\xa4' # 0x9F -> CURRENCY SIGN
|
||||
'\xb5' # 0xA0 -> MICRO SIGN
|
||||
'~' # 0xA1 -> TILDE
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\xa1' # 0xAA -> INVERTED EXCLAMATION MARK
|
||||
'\xbf' # 0xAB -> INVERTED QUESTION MARK
|
||||
'\xd0' # 0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
|
||||
'\xdd' # 0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
|
||||
'\xae' # 0xAF -> REGISTERED SIGN
|
||||
'^' # 0xB0 -> CIRCUMFLEX ACCENT
|
||||
'\xa3' # 0xB1 -> POUND SIGN
|
||||
'\xa5' # 0xB2 -> YEN SIGN
|
||||
'\xb7' # 0xB3 -> MIDDLE DOT
|
||||
'\xa9' # 0xB4 -> COPYRIGHT SIGN
|
||||
'\xa7' # 0xB5 -> SECTION SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xbc' # 0xB7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xB8 -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xB9 -> VULGAR FRACTION THREE QUARTERS
|
||||
'[' # 0xBA -> LEFT SQUARE BRACKET
|
||||
']' # 0xBB -> RIGHT SQUARE BRACKET
|
||||
'\xaf' # 0xBC -> MACRON
|
||||
'\xa8' # 0xBD -> DIAERESIS
|
||||
'\xb4' # 0xBE -> ACUTE ACCENT
|
||||
'\xd7' # 0xBF -> MULTIPLICATION SIGN
|
||||
'{' # 0xC0 -> LEFT CURLY BRACKET
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\xf4' # 0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0xCD -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xCE -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf5' # 0xCF -> LATIN SMALL LETTER O WITH TILDE
|
||||
'}' # 0xD0 -> RIGHT CURLY BRACKET
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb9' # 0xDA -> SUPERSCRIPT ONE
|
||||
'\xfb' # 0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xf9' # 0xDD -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xDE -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xff' # 0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\\' # 0xE0 -> REVERSE SOLIDUS
|
||||
'\xf7' # 0xE1 -> DIVISION SIGN
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\xd4' # 0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd6' # 0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd2' # 0xED -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd5' # 0xEF -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\xdb' # 0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xd9' # 0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\x9f' # 0xFF -> CONTROL
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1006 generated from 'MAPPINGS/VENDORS/MISC/CP1006.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1006',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u06f0' # 0xA1 -> EXTENDED ARABIC-INDIC DIGIT ZERO
|
||||
'\u06f1' # 0xA2 -> EXTENDED ARABIC-INDIC DIGIT ONE
|
||||
'\u06f2' # 0xA3 -> EXTENDED ARABIC-INDIC DIGIT TWO
|
||||
'\u06f3' # 0xA4 -> EXTENDED ARABIC-INDIC DIGIT THREE
|
||||
'\u06f4' # 0xA5 -> EXTENDED ARABIC-INDIC DIGIT FOUR
|
||||
'\u06f5' # 0xA6 -> EXTENDED ARABIC-INDIC DIGIT FIVE
|
||||
'\u06f6' # 0xA7 -> EXTENDED ARABIC-INDIC DIGIT SIX
|
||||
'\u06f7' # 0xA8 -> EXTENDED ARABIC-INDIC DIGIT SEVEN
|
||||
'\u06f8' # 0xA9 -> EXTENDED ARABIC-INDIC DIGIT EIGHT
|
||||
'\u06f9' # 0xAA -> EXTENDED ARABIC-INDIC DIGIT NINE
|
||||
'\u060c' # 0xAB -> ARABIC COMMA
|
||||
'\u061b' # 0xAC -> ARABIC SEMICOLON
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\u061f' # 0xAE -> ARABIC QUESTION MARK
|
||||
'\ufe81' # 0xAF -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
'\ufe8d' # 0xB0 -> ARABIC LETTER ALEF ISOLATED FORM
|
||||
'\ufe8e' # 0xB1 -> ARABIC LETTER ALEF FINAL FORM
|
||||
'\ufe8e' # 0xB2 -> ARABIC LETTER ALEF FINAL FORM
|
||||
'\ufe8f' # 0xB3 -> ARABIC LETTER BEH ISOLATED FORM
|
||||
'\ufe91' # 0xB4 -> ARABIC LETTER BEH INITIAL FORM
|
||||
'\ufb56' # 0xB5 -> ARABIC LETTER PEH ISOLATED FORM
|
||||
'\ufb58' # 0xB6 -> ARABIC LETTER PEH INITIAL FORM
|
||||
'\ufe93' # 0xB7 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
|
||||
'\ufe95' # 0xB8 -> ARABIC LETTER TEH ISOLATED FORM
|
||||
'\ufe97' # 0xB9 -> ARABIC LETTER TEH INITIAL FORM
|
||||
'\ufb66' # 0xBA -> ARABIC LETTER TTEH ISOLATED FORM
|
||||
'\ufb68' # 0xBB -> ARABIC LETTER TTEH INITIAL FORM
|
||||
'\ufe99' # 0xBC -> ARABIC LETTER THEH ISOLATED FORM
|
||||
'\ufe9b' # 0xBD -> ARABIC LETTER THEH INITIAL FORM
|
||||
'\ufe9d' # 0xBE -> ARABIC LETTER JEEM ISOLATED FORM
|
||||
'\ufe9f' # 0xBF -> ARABIC LETTER JEEM INITIAL FORM
|
||||
'\ufb7a' # 0xC0 -> ARABIC LETTER TCHEH ISOLATED FORM
|
||||
'\ufb7c' # 0xC1 -> ARABIC LETTER TCHEH INITIAL FORM
|
||||
'\ufea1' # 0xC2 -> ARABIC LETTER HAH ISOLATED FORM
|
||||
'\ufea3' # 0xC3 -> ARABIC LETTER HAH INITIAL FORM
|
||||
'\ufea5' # 0xC4 -> ARABIC LETTER KHAH ISOLATED FORM
|
||||
'\ufea7' # 0xC5 -> ARABIC LETTER KHAH INITIAL FORM
|
||||
'\ufea9' # 0xC6 -> ARABIC LETTER DAL ISOLATED FORM
|
||||
'\ufb84' # 0xC7 -> ARABIC LETTER DAHAL ISOLATED FORMN
|
||||
'\ufeab' # 0xC8 -> ARABIC LETTER THAL ISOLATED FORM
|
||||
'\ufead' # 0xC9 -> ARABIC LETTER REH ISOLATED FORM
|
||||
'\ufb8c' # 0xCA -> ARABIC LETTER RREH ISOLATED FORM
|
||||
'\ufeaf' # 0xCB -> ARABIC LETTER ZAIN ISOLATED FORM
|
||||
'\ufb8a' # 0xCC -> ARABIC LETTER JEH ISOLATED FORM
|
||||
'\ufeb1' # 0xCD -> ARABIC LETTER SEEN ISOLATED FORM
|
||||
'\ufeb3' # 0xCE -> ARABIC LETTER SEEN INITIAL FORM
|
||||
'\ufeb5' # 0xCF -> ARABIC LETTER SHEEN ISOLATED FORM
|
||||
'\ufeb7' # 0xD0 -> ARABIC LETTER SHEEN INITIAL FORM
|
||||
'\ufeb9' # 0xD1 -> ARABIC LETTER SAD ISOLATED FORM
|
||||
'\ufebb' # 0xD2 -> ARABIC LETTER SAD INITIAL FORM
|
||||
'\ufebd' # 0xD3 -> ARABIC LETTER DAD ISOLATED FORM
|
||||
'\ufebf' # 0xD4 -> ARABIC LETTER DAD INITIAL FORM
|
||||
'\ufec1' # 0xD5 -> ARABIC LETTER TAH ISOLATED FORM
|
||||
'\ufec5' # 0xD6 -> ARABIC LETTER ZAH ISOLATED FORM
|
||||
'\ufec9' # 0xD7 -> ARABIC LETTER AIN ISOLATED FORM
|
||||
'\ufeca' # 0xD8 -> ARABIC LETTER AIN FINAL FORM
|
||||
'\ufecb' # 0xD9 -> ARABIC LETTER AIN INITIAL FORM
|
||||
'\ufecc' # 0xDA -> ARABIC LETTER AIN MEDIAL FORM
|
||||
'\ufecd' # 0xDB -> ARABIC LETTER GHAIN ISOLATED FORM
|
||||
'\ufece' # 0xDC -> ARABIC LETTER GHAIN FINAL FORM
|
||||
'\ufecf' # 0xDD -> ARABIC LETTER GHAIN INITIAL FORM
|
||||
'\ufed0' # 0xDE -> ARABIC LETTER GHAIN MEDIAL FORM
|
||||
'\ufed1' # 0xDF -> ARABIC LETTER FEH ISOLATED FORM
|
||||
'\ufed3' # 0xE0 -> ARABIC LETTER FEH INITIAL FORM
|
||||
'\ufed5' # 0xE1 -> ARABIC LETTER QAF ISOLATED FORM
|
||||
'\ufed7' # 0xE2 -> ARABIC LETTER QAF INITIAL FORM
|
||||
'\ufed9' # 0xE3 -> ARABIC LETTER KAF ISOLATED FORM
|
||||
'\ufedb' # 0xE4 -> ARABIC LETTER KAF INITIAL FORM
|
||||
'\ufb92' # 0xE5 -> ARABIC LETTER GAF ISOLATED FORM
|
||||
'\ufb94' # 0xE6 -> ARABIC LETTER GAF INITIAL FORM
|
||||
'\ufedd' # 0xE7 -> ARABIC LETTER LAM ISOLATED FORM
|
||||
'\ufedf' # 0xE8 -> ARABIC LETTER LAM INITIAL FORM
|
||||
'\ufee0' # 0xE9 -> ARABIC LETTER LAM MEDIAL FORM
|
||||
'\ufee1' # 0xEA -> ARABIC LETTER MEEM ISOLATED FORM
|
||||
'\ufee3' # 0xEB -> ARABIC LETTER MEEM INITIAL FORM
|
||||
'\ufb9e' # 0xEC -> ARABIC LETTER NOON GHUNNA ISOLATED FORM
|
||||
'\ufee5' # 0xED -> ARABIC LETTER NOON ISOLATED FORM
|
||||
'\ufee7' # 0xEE -> ARABIC LETTER NOON INITIAL FORM
|
||||
'\ufe85' # 0xEF -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
|
||||
'\ufeed' # 0xF0 -> ARABIC LETTER WAW ISOLATED FORM
|
||||
'\ufba6' # 0xF1 -> ARABIC LETTER HEH GOAL ISOLATED FORM
|
||||
'\ufba8' # 0xF2 -> ARABIC LETTER HEH GOAL INITIAL FORM
|
||||
'\ufba9' # 0xF3 -> ARABIC LETTER HEH GOAL MEDIAL FORM
|
||||
'\ufbaa' # 0xF4 -> ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
|
||||
'\ufe80' # 0xF5 -> ARABIC LETTER HAMZA ISOLATED FORM
|
||||
'\ufe89' # 0xF6 -> ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
|
||||
'\ufe8a' # 0xF7 -> ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
|
||||
'\ufe8b' # 0xF8 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
|
||||
'\ufef1' # 0xF9 -> ARABIC LETTER YEH ISOLATED FORM
|
||||
'\ufef2' # 0xFA -> ARABIC LETTER YEH FINAL FORM
|
||||
'\ufef3' # 0xFB -> ARABIC LETTER YEH INITIAL FORM
|
||||
'\ufbb0' # 0xFC -> ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
|
||||
'\ufbae' # 0xFD -> ARABIC LETTER YEH BARREE ISOLATED FORM
|
||||
'\ufe7c' # 0xFE -> ARABIC SHADDA ISOLATED FORM
|
||||
'\ufe7d' # 0xFF -> ARABIC SHADDA MEDIAL FORM
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1026 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP1026.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1026',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x9c' # 0x04 -> CONTROL
|
||||
'\t' # 0x05 -> HORIZONTAL TABULATION
|
||||
'\x86' # 0x06 -> CONTROL
|
||||
'\x7f' # 0x07 -> DELETE
|
||||
'\x97' # 0x08 -> CONTROL
|
||||
'\x8d' # 0x09 -> CONTROL
|
||||
'\x8e' # 0x0A -> CONTROL
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x9d' # 0x14 -> CONTROL
|
||||
'\x85' # 0x15 -> CONTROL
|
||||
'\x08' # 0x16 -> BACKSPACE
|
||||
'\x87' # 0x17 -> CONTROL
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x92' # 0x1A -> CONTROL
|
||||
'\x8f' # 0x1B -> CONTROL
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
'\x80' # 0x20 -> CONTROL
|
||||
'\x81' # 0x21 -> CONTROL
|
||||
'\x82' # 0x22 -> CONTROL
|
||||
'\x83' # 0x23 -> CONTROL
|
||||
'\x84' # 0x24 -> CONTROL
|
||||
'\n' # 0x25 -> LINE FEED
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK
|
||||
'\x1b' # 0x27 -> ESCAPE
|
||||
'\x88' # 0x28 -> CONTROL
|
||||
'\x89' # 0x29 -> CONTROL
|
||||
'\x8a' # 0x2A -> CONTROL
|
||||
'\x8b' # 0x2B -> CONTROL
|
||||
'\x8c' # 0x2C -> CONTROL
|
||||
'\x05' # 0x2D -> ENQUIRY
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE
|
||||
'\x07' # 0x2F -> BELL
|
||||
'\x90' # 0x30 -> CONTROL
|
||||
'\x91' # 0x31 -> CONTROL
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE
|
||||
'\x93' # 0x33 -> CONTROL
|
||||
'\x94' # 0x34 -> CONTROL
|
||||
'\x95' # 0x35 -> CONTROL
|
||||
'\x96' # 0x36 -> CONTROL
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION
|
||||
'\x98' # 0x38 -> CONTROL
|
||||
'\x99' # 0x39 -> CONTROL
|
||||
'\x9a' # 0x3A -> CONTROL
|
||||
'\x9b' # 0x3B -> CONTROL
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE
|
||||
'\x9e' # 0x3E -> CONTROL
|
||||
'\x1a' # 0x3F -> SUBSTITUTE
|
||||
' ' # 0x40 -> SPACE
|
||||
'\xa0' # 0x41 -> NO-BREAK SPACE
|
||||
'\xe2' # 0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x44 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0x45 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe3' # 0x46 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe5' # 0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'{' # 0x48 -> LEFT CURLY BRACKET
|
||||
'\xf1' # 0x49 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xc7' # 0x4A -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'!' # 0x4F -> EXCLAMATION MARK
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\xe9' # 0x51 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x54 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xed' # 0x55 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xec' # 0x58 -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xdf' # 0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
'\u011e' # 0x5A -> LATIN CAPITAL LETTER G WITH BREVE
|
||||
'\u0130' # 0x5B -> LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'^' # 0x5F -> CIRCUMFLEX ACCENT
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\xc2' # 0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc4' # 0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc0' # 0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc3' # 0x66 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc5' # 0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'[' # 0x68 -> LEFT SQUARE BRACKET
|
||||
'\xd1' # 0x69 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\u015f' # 0x6A -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\xf8' # 0x70 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xc9' # 0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xcd' # 0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xcc' # 0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\u0131' # 0x79 -> LATIN SMALL LETTER DOTLESS I
|
||||
':' # 0x7A -> COLON
|
||||
'\xd6' # 0x7B -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\u015e' # 0x7C -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'\xdc' # 0x7F -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xd8' # 0x80 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\xab' # 0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'}' # 0x8C -> RIGHT CURLY BRACKET
|
||||
'`' # 0x8D -> GRAVE ACCENT
|
||||
'\xa6' # 0x8E -> BROKEN BAR
|
||||
'\xb1' # 0x8F -> PLUS-MINUS SIGN
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\xaa' # 0x9A -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x9B -> MASCULINE ORDINAL INDICATOR
|
||||
'\xe6' # 0x9C -> LATIN SMALL LIGATURE AE
|
||||
'\xb8' # 0x9D -> CEDILLA
|
||||
'\xc6' # 0x9E -> LATIN CAPITAL LIGATURE AE
|
||||
'\xa4' # 0x9F -> CURRENCY SIGN
|
||||
'\xb5' # 0xA0 -> MICRO SIGN
|
||||
'\xf6' # 0xA1 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\xa1' # 0xAA -> INVERTED EXCLAMATION MARK
|
||||
'\xbf' # 0xAB -> INVERTED QUESTION MARK
|
||||
']' # 0xAC -> RIGHT SQUARE BRACKET
|
||||
'$' # 0xAD -> DOLLAR SIGN
|
||||
'@' # 0xAE -> COMMERCIAL AT
|
||||
'\xae' # 0xAF -> REGISTERED SIGN
|
||||
'\xa2' # 0xB0 -> CENT SIGN
|
||||
'\xa3' # 0xB1 -> POUND SIGN
|
||||
'\xa5' # 0xB2 -> YEN SIGN
|
||||
'\xb7' # 0xB3 -> MIDDLE DOT
|
||||
'\xa9' # 0xB4 -> COPYRIGHT SIGN
|
||||
'\xa7' # 0xB5 -> SECTION SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xbc' # 0xB7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xB8 -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xB9 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xac' # 0xBA -> NOT SIGN
|
||||
'|' # 0xBB -> VERTICAL LINE
|
||||
'\xaf' # 0xBC -> MACRON
|
||||
'\xa8' # 0xBD -> DIAERESIS
|
||||
'\xb4' # 0xBE -> ACUTE ACCENT
|
||||
'\xd7' # 0xBF -> MULTIPLICATION SIGN
|
||||
'\xe7' # 0xC0 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\xf4' # 0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'~' # 0xCC -> TILDE
|
||||
'\xf2' # 0xCD -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xCE -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf5' # 0xCF -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\u011f' # 0xD0 -> LATIN SMALL LETTER G WITH BREVE
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb9' # 0xDA -> SUPERSCRIPT ONE
|
||||
'\xfb' # 0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\\' # 0xDC -> REVERSE SOLIDUS
|
||||
'\xf9' # 0xDD -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xDE -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xff' # 0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xfc' # 0xE0 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xf7' # 0xE1 -> DIVISION SIGN
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\xd4' # 0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'#' # 0xEC -> NUMBER SIGN
|
||||
'\xd2' # 0xED -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd5' # 0xEF -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\xdb' # 0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'"' # 0xFC -> QUOTATION MARK
|
||||
'\xd9' # 0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\x9f' # 0xFF -> CONTROL
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec for CP1125
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1125',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x0410, # CYRILLIC CAPITAL LETTER A
|
||||
0x0081: 0x0411, # CYRILLIC CAPITAL LETTER BE
|
||||
0x0082: 0x0412, # CYRILLIC CAPITAL LETTER VE
|
||||
0x0083: 0x0413, # CYRILLIC CAPITAL LETTER GHE
|
||||
0x0084: 0x0414, # CYRILLIC CAPITAL LETTER DE
|
||||
0x0085: 0x0415, # CYRILLIC CAPITAL LETTER IE
|
||||
0x0086: 0x0416, # CYRILLIC CAPITAL LETTER ZHE
|
||||
0x0087: 0x0417, # CYRILLIC CAPITAL LETTER ZE
|
||||
0x0088: 0x0418, # CYRILLIC CAPITAL LETTER I
|
||||
0x0089: 0x0419, # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x008a: 0x041a, # CYRILLIC CAPITAL LETTER KA
|
||||
0x008b: 0x041b, # CYRILLIC CAPITAL LETTER EL
|
||||
0x008c: 0x041c, # CYRILLIC CAPITAL LETTER EM
|
||||
0x008d: 0x041d, # CYRILLIC CAPITAL LETTER EN
|
||||
0x008e: 0x041e, # CYRILLIC CAPITAL LETTER O
|
||||
0x008f: 0x041f, # CYRILLIC CAPITAL LETTER PE
|
||||
0x0090: 0x0420, # CYRILLIC CAPITAL LETTER ER
|
||||
0x0091: 0x0421, # CYRILLIC CAPITAL LETTER ES
|
||||
0x0092: 0x0422, # CYRILLIC CAPITAL LETTER TE
|
||||
0x0093: 0x0423, # CYRILLIC CAPITAL LETTER U
|
||||
0x0094: 0x0424, # CYRILLIC CAPITAL LETTER EF
|
||||
0x0095: 0x0425, # CYRILLIC CAPITAL LETTER HA
|
||||
0x0096: 0x0426, # CYRILLIC CAPITAL LETTER TSE
|
||||
0x0097: 0x0427, # CYRILLIC CAPITAL LETTER CHE
|
||||
0x0098: 0x0428, # CYRILLIC CAPITAL LETTER SHA
|
||||
0x0099: 0x0429, # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x009a: 0x042a, # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x009b: 0x042b, # CYRILLIC CAPITAL LETTER YERU
|
||||
0x009c: 0x042c, # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x009d: 0x042d, # CYRILLIC CAPITAL LETTER E
|
||||
0x009e: 0x042e, # CYRILLIC CAPITAL LETTER YU
|
||||
0x009f: 0x042f, # CYRILLIC CAPITAL LETTER YA
|
||||
0x00a0: 0x0430, # CYRILLIC SMALL LETTER A
|
||||
0x00a1: 0x0431, # CYRILLIC SMALL LETTER BE
|
||||
0x00a2: 0x0432, # CYRILLIC SMALL LETTER VE
|
||||
0x00a3: 0x0433, # CYRILLIC SMALL LETTER GHE
|
||||
0x00a4: 0x0434, # CYRILLIC SMALL LETTER DE
|
||||
0x00a5: 0x0435, # CYRILLIC SMALL LETTER IE
|
||||
0x00a6: 0x0436, # CYRILLIC SMALL LETTER ZHE
|
||||
0x00a7: 0x0437, # CYRILLIC SMALL LETTER ZE
|
||||
0x00a8: 0x0438, # CYRILLIC SMALL LETTER I
|
||||
0x00a9: 0x0439, # CYRILLIC SMALL LETTER SHORT I
|
||||
0x00aa: 0x043a, # CYRILLIC SMALL LETTER KA
|
||||
0x00ab: 0x043b, # CYRILLIC SMALL LETTER EL
|
||||
0x00ac: 0x043c, # CYRILLIC SMALL LETTER EM
|
||||
0x00ad: 0x043d, # CYRILLIC SMALL LETTER EN
|
||||
0x00ae: 0x043e, # CYRILLIC SMALL LETTER O
|
||||
0x00af: 0x043f, # CYRILLIC SMALL LETTER PE
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x0440, # CYRILLIC SMALL LETTER ER
|
||||
0x00e1: 0x0441, # CYRILLIC SMALL LETTER ES
|
||||
0x00e2: 0x0442, # CYRILLIC SMALL LETTER TE
|
||||
0x00e3: 0x0443, # CYRILLIC SMALL LETTER U
|
||||
0x00e4: 0x0444, # CYRILLIC SMALL LETTER EF
|
||||
0x00e5: 0x0445, # CYRILLIC SMALL LETTER HA
|
||||
0x00e6: 0x0446, # CYRILLIC SMALL LETTER TSE
|
||||
0x00e7: 0x0447, # CYRILLIC SMALL LETTER CHE
|
||||
0x00e8: 0x0448, # CYRILLIC SMALL LETTER SHA
|
||||
0x00e9: 0x0449, # CYRILLIC SMALL LETTER SHCHA
|
||||
0x00ea: 0x044a, # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x00eb: 0x044b, # CYRILLIC SMALL LETTER YERU
|
||||
0x00ec: 0x044c, # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0x00ed: 0x044d, # CYRILLIC SMALL LETTER E
|
||||
0x00ee: 0x044e, # CYRILLIC SMALL LETTER YU
|
||||
0x00ef: 0x044f, # CYRILLIC SMALL LETTER YA
|
||||
0x00f0: 0x0401, # CYRILLIC CAPITAL LETTER IO
|
||||
0x00f1: 0x0451, # CYRILLIC SMALL LETTER IO
|
||||
0x00f2: 0x0490, # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0x00f3: 0x0491, # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0x00f4: 0x0404, # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x00f5: 0x0454, # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x00f6: 0x0406, # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x00f7: 0x0456, # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x00f8: 0x0407, # CYRILLIC CAPITAL LETTER YI
|
||||
0x00f9: 0x0457, # CYRILLIC SMALL LETTER YI
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x2116, # NUMERO SIGN
|
||||
0x00fd: 0x00a4, # CURRENCY SIGN
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\u0410' # 0x0080 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0411' # 0x0081 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0412' # 0x0082 -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u0413' # 0x0083 -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\u0414' # 0x0084 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0415' # 0x0085 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0416' # 0x0086 -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0417' # 0x0087 -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0418' # 0x0088 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u0419' # 0x0089 -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u041a' # 0x008a -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u041b' # 0x008b -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u041c' # 0x008c -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u041d' # 0x008d -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u041e' # 0x008e -> CYRILLIC CAPITAL LETTER O
|
||||
'\u041f' # 0x008f -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u0420' # 0x0090 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0421' # 0x0091 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0422' # 0x0092 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0423' # 0x0093 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0424' # 0x0094 -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0425' # 0x0095 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0426' # 0x0096 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0427' # 0x0097 -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\u0428' # 0x0098 -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u0429' # 0x0099 -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u042a' # 0x009a -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
'\u042b' # 0x009b -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u042c' # 0x009c -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u042d' # 0x009d -> CYRILLIC CAPITAL LETTER E
|
||||
'\u042e' # 0x009e -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u042f' # 0x009f -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0430' # 0x00a0 -> CYRILLIC SMALL LETTER A
|
||||
'\u0431' # 0x00a1 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0432' # 0x00a2 -> CYRILLIC SMALL LETTER VE
|
||||
'\u0433' # 0x00a3 -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0434' # 0x00a4 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0435' # 0x00a5 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0436' # 0x00a6 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0437' # 0x00a7 -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0438' # 0x00a8 -> CYRILLIC SMALL LETTER I
|
||||
'\u0439' # 0x00a9 -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u043a' # 0x00aa -> CYRILLIC SMALL LETTER KA
|
||||
'\u043b' # 0x00ab -> CYRILLIC SMALL LETTER EL
|
||||
'\u043c' # 0x00ac -> CYRILLIC SMALL LETTER EM
|
||||
'\u043d' # 0x00ad -> CYRILLIC SMALL LETTER EN
|
||||
'\u043e' # 0x00ae -> CYRILLIC SMALL LETTER O
|
||||
'\u043f' # 0x00af -> CYRILLIC SMALL LETTER PE
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u0440' # 0x00e0 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0441' # 0x00e1 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0442' # 0x00e2 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0443' # 0x00e3 -> CYRILLIC SMALL LETTER U
|
||||
'\u0444' # 0x00e4 -> CYRILLIC SMALL LETTER EF
|
||||
'\u0445' # 0x00e5 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0446' # 0x00e6 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0447' # 0x00e7 -> CYRILLIC SMALL LETTER CHE
|
||||
'\u0448' # 0x00e8 -> CYRILLIC SMALL LETTER SHA
|
||||
'\u0449' # 0x00e9 -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u044a' # 0x00ea -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u044b' # 0x00eb -> CYRILLIC SMALL LETTER YERU
|
||||
'\u044c' # 0x00ec -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u044d' # 0x00ed -> CYRILLIC SMALL LETTER E
|
||||
'\u044e' # 0x00ee -> CYRILLIC SMALL LETTER YU
|
||||
'\u044f' # 0x00ef -> CYRILLIC SMALL LETTER YA
|
||||
'\u0401' # 0x00f0 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\u0451' # 0x00f1 -> CYRILLIC SMALL LETTER IO
|
||||
'\u0490' # 0x00f2 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
'\u0491' # 0x00f3 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
'\u0404' # 0x00f4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
'\u0454' # 0x00f5 -> CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
'\u0406' # 0x00f6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0456' # 0x00f7 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0407' # 0x00f8 -> CYRILLIC CAPITAL LETTER YI
|
||||
'\u0457' # 0x00f9 -> CYRILLIC SMALL LETTER YI
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u2116' # 0x00fc -> NUMERO SIGN
|
||||
'\xa4' # 0x00fd -> CURRENCY SIGN
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a4: 0x00fd, # CURRENCY SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x0401: 0x00f0, # CYRILLIC CAPITAL LETTER IO
|
||||
0x0404: 0x00f4, # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x0406: 0x00f6, # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x0407: 0x00f8, # CYRILLIC CAPITAL LETTER YI
|
||||
0x0410: 0x0080, # CYRILLIC CAPITAL LETTER A
|
||||
0x0411: 0x0081, # CYRILLIC CAPITAL LETTER BE
|
||||
0x0412: 0x0082, # CYRILLIC CAPITAL LETTER VE
|
||||
0x0413: 0x0083, # CYRILLIC CAPITAL LETTER GHE
|
||||
0x0414: 0x0084, # CYRILLIC CAPITAL LETTER DE
|
||||
0x0415: 0x0085, # CYRILLIC CAPITAL LETTER IE
|
||||
0x0416: 0x0086, # CYRILLIC CAPITAL LETTER ZHE
|
||||
0x0417: 0x0087, # CYRILLIC CAPITAL LETTER ZE
|
||||
0x0418: 0x0088, # CYRILLIC CAPITAL LETTER I
|
||||
0x0419: 0x0089, # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x041a: 0x008a, # CYRILLIC CAPITAL LETTER KA
|
||||
0x041b: 0x008b, # CYRILLIC CAPITAL LETTER EL
|
||||
0x041c: 0x008c, # CYRILLIC CAPITAL LETTER EM
|
||||
0x041d: 0x008d, # CYRILLIC CAPITAL LETTER EN
|
||||
0x041e: 0x008e, # CYRILLIC CAPITAL LETTER O
|
||||
0x041f: 0x008f, # CYRILLIC CAPITAL LETTER PE
|
||||
0x0420: 0x0090, # CYRILLIC CAPITAL LETTER ER
|
||||
0x0421: 0x0091, # CYRILLIC CAPITAL LETTER ES
|
||||
0x0422: 0x0092, # CYRILLIC CAPITAL LETTER TE
|
||||
0x0423: 0x0093, # CYRILLIC CAPITAL LETTER U
|
||||
0x0424: 0x0094, # CYRILLIC CAPITAL LETTER EF
|
||||
0x0425: 0x0095, # CYRILLIC CAPITAL LETTER HA
|
||||
0x0426: 0x0096, # CYRILLIC CAPITAL LETTER TSE
|
||||
0x0427: 0x0097, # CYRILLIC CAPITAL LETTER CHE
|
||||
0x0428: 0x0098, # CYRILLIC CAPITAL LETTER SHA
|
||||
0x0429: 0x0099, # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x042a: 0x009a, # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x042b: 0x009b, # CYRILLIC CAPITAL LETTER YERU
|
||||
0x042c: 0x009c, # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x042d: 0x009d, # CYRILLIC CAPITAL LETTER E
|
||||
0x042e: 0x009e, # CYRILLIC CAPITAL LETTER YU
|
||||
0x042f: 0x009f, # CYRILLIC CAPITAL LETTER YA
|
||||
0x0430: 0x00a0, # CYRILLIC SMALL LETTER A
|
||||
0x0431: 0x00a1, # CYRILLIC SMALL LETTER BE
|
||||
0x0432: 0x00a2, # CYRILLIC SMALL LETTER VE
|
||||
0x0433: 0x00a3, # CYRILLIC SMALL LETTER GHE
|
||||
0x0434: 0x00a4, # CYRILLIC SMALL LETTER DE
|
||||
0x0435: 0x00a5, # CYRILLIC SMALL LETTER IE
|
||||
0x0436: 0x00a6, # CYRILLIC SMALL LETTER ZHE
|
||||
0x0437: 0x00a7, # CYRILLIC SMALL LETTER ZE
|
||||
0x0438: 0x00a8, # CYRILLIC SMALL LETTER I
|
||||
0x0439: 0x00a9, # CYRILLIC SMALL LETTER SHORT I
|
||||
0x043a: 0x00aa, # CYRILLIC SMALL LETTER KA
|
||||
0x043b: 0x00ab, # CYRILLIC SMALL LETTER EL
|
||||
0x043c: 0x00ac, # CYRILLIC SMALL LETTER EM
|
||||
0x043d: 0x00ad, # CYRILLIC SMALL LETTER EN
|
||||
0x043e: 0x00ae, # CYRILLIC SMALL LETTER O
|
||||
0x043f: 0x00af, # CYRILLIC SMALL LETTER PE
|
||||
0x0440: 0x00e0, # CYRILLIC SMALL LETTER ER
|
||||
0x0441: 0x00e1, # CYRILLIC SMALL LETTER ES
|
||||
0x0442: 0x00e2, # CYRILLIC SMALL LETTER TE
|
||||
0x0443: 0x00e3, # CYRILLIC SMALL LETTER U
|
||||
0x0444: 0x00e4, # CYRILLIC SMALL LETTER EF
|
||||
0x0445: 0x00e5, # CYRILLIC SMALL LETTER HA
|
||||
0x0446: 0x00e6, # CYRILLIC SMALL LETTER TSE
|
||||
0x0447: 0x00e7, # CYRILLIC SMALL LETTER CHE
|
||||
0x0448: 0x00e8, # CYRILLIC SMALL LETTER SHA
|
||||
0x0449: 0x00e9, # CYRILLIC SMALL LETTER SHCHA
|
||||
0x044a: 0x00ea, # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x044b: 0x00eb, # CYRILLIC SMALL LETTER YERU
|
||||
0x044c: 0x00ec, # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0x044d: 0x00ed, # CYRILLIC SMALL LETTER E
|
||||
0x044e: 0x00ee, # CYRILLIC SMALL LETTER YU
|
||||
0x044f: 0x00ef, # CYRILLIC SMALL LETTER YA
|
||||
0x0451: 0x00f1, # CYRILLIC SMALL LETTER IO
|
||||
0x0454: 0x00f5, # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x0456: 0x00f7, # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x0457: 0x00f9, # CYRILLIC SMALL LETTER YI
|
||||
0x0490: 0x00f2, # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0x0491: 0x00f3, # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0x2116: 0x00fc, # NUMERO SIGN
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1140 generated from 'python-mappings/CP1140.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1140',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x9c' # 0x04 -> CONTROL
|
||||
'\t' # 0x05 -> HORIZONTAL TABULATION
|
||||
'\x86' # 0x06 -> CONTROL
|
||||
'\x7f' # 0x07 -> DELETE
|
||||
'\x97' # 0x08 -> CONTROL
|
||||
'\x8d' # 0x09 -> CONTROL
|
||||
'\x8e' # 0x0A -> CONTROL
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x9d' # 0x14 -> CONTROL
|
||||
'\x85' # 0x15 -> CONTROL
|
||||
'\x08' # 0x16 -> BACKSPACE
|
||||
'\x87' # 0x17 -> CONTROL
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x92' # 0x1A -> CONTROL
|
||||
'\x8f' # 0x1B -> CONTROL
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
'\x80' # 0x20 -> CONTROL
|
||||
'\x81' # 0x21 -> CONTROL
|
||||
'\x82' # 0x22 -> CONTROL
|
||||
'\x83' # 0x23 -> CONTROL
|
||||
'\x84' # 0x24 -> CONTROL
|
||||
'\n' # 0x25 -> LINE FEED
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK
|
||||
'\x1b' # 0x27 -> ESCAPE
|
||||
'\x88' # 0x28 -> CONTROL
|
||||
'\x89' # 0x29 -> CONTROL
|
||||
'\x8a' # 0x2A -> CONTROL
|
||||
'\x8b' # 0x2B -> CONTROL
|
||||
'\x8c' # 0x2C -> CONTROL
|
||||
'\x05' # 0x2D -> ENQUIRY
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE
|
||||
'\x07' # 0x2F -> BELL
|
||||
'\x90' # 0x30 -> CONTROL
|
||||
'\x91' # 0x31 -> CONTROL
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE
|
||||
'\x93' # 0x33 -> CONTROL
|
||||
'\x94' # 0x34 -> CONTROL
|
||||
'\x95' # 0x35 -> CONTROL
|
||||
'\x96' # 0x36 -> CONTROL
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION
|
||||
'\x98' # 0x38 -> CONTROL
|
||||
'\x99' # 0x39 -> CONTROL
|
||||
'\x9a' # 0x3A -> CONTROL
|
||||
'\x9b' # 0x3B -> CONTROL
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE
|
||||
'\x9e' # 0x3E -> CONTROL
|
||||
'\x1a' # 0x3F -> SUBSTITUTE
|
||||
' ' # 0x40 -> SPACE
|
||||
'\xa0' # 0x41 -> NO-BREAK SPACE
|
||||
'\xe2' # 0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x44 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0x45 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe3' # 0x46 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe5' # 0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x48 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xf1' # 0x49 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xa2' # 0x4A -> CENT SIGN
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'|' # 0x4F -> VERTICAL LINE
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\xe9' # 0x51 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x54 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xed' # 0x55 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xec' # 0x58 -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xdf' # 0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
'!' # 0x5A -> EXCLAMATION MARK
|
||||
'$' # 0x5B -> DOLLAR SIGN
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'\xac' # 0x5F -> NOT SIGN
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\xc2' # 0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc4' # 0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc0' # 0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc3' # 0x66 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc5' # 0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc7' # 0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xd1' # 0x69 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xa6' # 0x6A -> BROKEN BAR
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\xf8' # 0x70 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xc9' # 0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xcd' # 0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xcc' # 0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'`' # 0x79 -> GRAVE ACCENT
|
||||
':' # 0x7A -> COLON
|
||||
'#' # 0x7B -> NUMBER SIGN
|
||||
'@' # 0x7C -> COMMERCIAL AT
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'"' # 0x7F -> QUOTATION MARK
|
||||
'\xd8' # 0x80 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\xab' # 0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xf0' # 0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
|
||||
'\xfd' # 0x8D -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
|
||||
'\xb1' # 0x8F -> PLUS-MINUS SIGN
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\xaa' # 0x9A -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x9B -> MASCULINE ORDINAL INDICATOR
|
||||
'\xe6' # 0x9C -> LATIN SMALL LIGATURE AE
|
||||
'\xb8' # 0x9D -> CEDILLA
|
||||
'\xc6' # 0x9E -> LATIN CAPITAL LIGATURE AE
|
||||
'\u20ac' # 0x9F -> EURO SIGN
|
||||
'\xb5' # 0xA0 -> MICRO SIGN
|
||||
'~' # 0xA1 -> TILDE
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\xa1' # 0xAA -> INVERTED EXCLAMATION MARK
|
||||
'\xbf' # 0xAB -> INVERTED QUESTION MARK
|
||||
'\xd0' # 0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
|
||||
'\xdd' # 0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
|
||||
'\xae' # 0xAF -> REGISTERED SIGN
|
||||
'^' # 0xB0 -> CIRCUMFLEX ACCENT
|
||||
'\xa3' # 0xB1 -> POUND SIGN
|
||||
'\xa5' # 0xB2 -> YEN SIGN
|
||||
'\xb7' # 0xB3 -> MIDDLE DOT
|
||||
'\xa9' # 0xB4 -> COPYRIGHT SIGN
|
||||
'\xa7' # 0xB5 -> SECTION SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xbc' # 0xB7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xB8 -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xB9 -> VULGAR FRACTION THREE QUARTERS
|
||||
'[' # 0xBA -> LEFT SQUARE BRACKET
|
||||
']' # 0xBB -> RIGHT SQUARE BRACKET
|
||||
'\xaf' # 0xBC -> MACRON
|
||||
'\xa8' # 0xBD -> DIAERESIS
|
||||
'\xb4' # 0xBE -> ACUTE ACCENT
|
||||
'\xd7' # 0xBF -> MULTIPLICATION SIGN
|
||||
'{' # 0xC0 -> LEFT CURLY BRACKET
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\xf4' # 0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0xCD -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xCE -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf5' # 0xCF -> LATIN SMALL LETTER O WITH TILDE
|
||||
'}' # 0xD0 -> RIGHT CURLY BRACKET
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb9' # 0xDA -> SUPERSCRIPT ONE
|
||||
'\xfb' # 0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xf9' # 0xDD -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xDE -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xff' # 0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\\' # 0xE0 -> REVERSE SOLIDUS
|
||||
'\xf7' # 0xE1 -> DIVISION SIGN
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\xd4' # 0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd6' # 0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd2' # 0xED -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd5' # 0xEF -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\xdb' # 0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xd9' # 0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\x9f' # 0xFF -> CONTROL
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1250 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1250',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\ufffe' # 0x83 -> UNDEFINED
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\ufffe' # 0x88 -> UNDEFINED
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\u0160' # 0x8A -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u015a' # 0x8C -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\u0164' # 0x8D -> LATIN CAPITAL LETTER T WITH CARON
|
||||
'\u017d' # 0x8E -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\u0179' # 0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\ufffe' # 0x98 -> UNDEFINED
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\u0161' # 0x9A -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\u015b' # 0x9C -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\u0165' # 0x9D -> LATIN SMALL LETTER T WITH CARON
|
||||
'\u017e' # 0x9E -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u017a' # 0x9F -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u02c7' # 0xA1 -> CARON
|
||||
'\u02d8' # 0xA2 -> BREVE
|
||||
'\u0141' # 0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\u0104' # 0xA5 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u015e' # 0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\u017b' # 0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\u02db' # 0xB2 -> OGONEK
|
||||
'\u0142' # 0xB3 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\u0105' # 0xB9 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u015f' # 0xBA -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u013d' # 0xBC -> LATIN CAPITAL LETTER L WITH CARON
|
||||
'\u02dd' # 0xBD -> DOUBLE ACUTE ACCENT
|
||||
'\u013e' # 0xBE -> LATIN SMALL LETTER L WITH CARON
|
||||
'\u017c' # 0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\u0154' # 0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\u0102' # 0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\u0139' # 0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
|
||||
'\u0106' # 0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\u010c' # 0xC8 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0118' # 0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\u011a' # 0xCC -> LATIN CAPITAL LETTER E WITH CARON
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\u010e' # 0xCF -> LATIN CAPITAL LETTER D WITH CARON
|
||||
'\u0110' # 0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\u0143' # 0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\u0147' # 0xD2 -> LATIN CAPITAL LETTER N WITH CARON
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\u0150' # 0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\u0158' # 0xD8 -> LATIN CAPITAL LETTER R WITH CARON
|
||||
'\u016e' # 0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\u0170' # 0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\u0162' # 0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\u0155' # 0xE0 -> LATIN SMALL LETTER R WITH ACUTE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\u0103' # 0xE3 -> LATIN SMALL LETTER A WITH BREVE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\u013a' # 0xE5 -> LATIN SMALL LETTER L WITH ACUTE
|
||||
'\u0107' # 0xE6 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\u010d' # 0xE8 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u0119' # 0xEA -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u011b' # 0xEC -> LATIN SMALL LETTER E WITH CARON
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\u010f' # 0xEF -> LATIN SMALL LETTER D WITH CARON
|
||||
'\u0111' # 0xF0 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\u0144' # 0xF1 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\u0148' # 0xF2 -> LATIN SMALL LETTER N WITH CARON
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\u0151' # 0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\u0159' # 0xF8 -> LATIN SMALL LETTER R WITH CARON
|
||||
'\u016f' # 0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\u0171' # 0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\u0163' # 0xFE -> LATIN SMALL LETTER T WITH CEDILLA
|
||||
'\u02d9' # 0xFF -> DOT ABOVE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1251 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1251',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u0402' # 0x80 -> CYRILLIC CAPITAL LETTER DJE
|
||||
'\u0403' # 0x81 -> CYRILLIC CAPITAL LETTER GJE
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0453' # 0x83 -> CYRILLIC SMALL LETTER GJE
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\u20ac' # 0x88 -> EURO SIGN
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\u0409' # 0x8A -> CYRILLIC CAPITAL LETTER LJE
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u040a' # 0x8C -> CYRILLIC CAPITAL LETTER NJE
|
||||
'\u040c' # 0x8D -> CYRILLIC CAPITAL LETTER KJE
|
||||
'\u040b' # 0x8E -> CYRILLIC CAPITAL LETTER TSHE
|
||||
'\u040f' # 0x8F -> CYRILLIC CAPITAL LETTER DZHE
|
||||
'\u0452' # 0x90 -> CYRILLIC SMALL LETTER DJE
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\ufffe' # 0x98 -> UNDEFINED
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\u0459' # 0x9A -> CYRILLIC SMALL LETTER LJE
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\u045a' # 0x9C -> CYRILLIC SMALL LETTER NJE
|
||||
'\u045c' # 0x9D -> CYRILLIC SMALL LETTER KJE
|
||||
'\u045b' # 0x9E -> CYRILLIC SMALL LETTER TSHE
|
||||
'\u045f' # 0x9F -> CYRILLIC SMALL LETTER DZHE
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u040e' # 0xA1 -> CYRILLIC CAPITAL LETTER SHORT U
|
||||
'\u045e' # 0xA2 -> CYRILLIC SMALL LETTER SHORT U
|
||||
'\u0408' # 0xA3 -> CYRILLIC CAPITAL LETTER JE
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\u0490' # 0xA5 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\u0401' # 0xA8 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u0404' # 0xAA -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\u0407' # 0xAF -> CYRILLIC CAPITAL LETTER YI
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\u0406' # 0xB2 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0456' # 0xB3 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0491' # 0xB4 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\u0451' # 0xB8 -> CYRILLIC SMALL LETTER IO
|
||||
'\u2116' # 0xB9 -> NUMERO SIGN
|
||||
'\u0454' # 0xBA -> CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u0458' # 0xBC -> CYRILLIC SMALL LETTER JE
|
||||
'\u0405' # 0xBD -> CYRILLIC CAPITAL LETTER DZE
|
||||
'\u0455' # 0xBE -> CYRILLIC SMALL LETTER DZE
|
||||
'\u0457' # 0xBF -> CYRILLIC SMALL LETTER YI
|
||||
'\u0410' # 0xC0 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0411' # 0xC1 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0412' # 0xC2 -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u0413' # 0xC3 -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\u0414' # 0xC4 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0415' # 0xC5 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0416' # 0xC6 -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0417' # 0xC7 -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0418' # 0xC8 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u0419' # 0xC9 -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u041a' # 0xCA -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u041b' # 0xCB -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u041c' # 0xCC -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u041d' # 0xCD -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u041e' # 0xCE -> CYRILLIC CAPITAL LETTER O
|
||||
'\u041f' # 0xCF -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u0420' # 0xD0 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0421' # 0xD1 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0422' # 0xD2 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0423' # 0xD3 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0424' # 0xD4 -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0425' # 0xD5 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0426' # 0xD6 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0427' # 0xD7 -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\u0428' # 0xD8 -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u0429' # 0xD9 -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u042a' # 0xDA -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
'\u042b' # 0xDB -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u042c' # 0xDC -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u042d' # 0xDD -> CYRILLIC CAPITAL LETTER E
|
||||
'\u042e' # 0xDE -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u042f' # 0xDF -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0430' # 0xE0 -> CYRILLIC SMALL LETTER A
|
||||
'\u0431' # 0xE1 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0432' # 0xE2 -> CYRILLIC SMALL LETTER VE
|
||||
'\u0433' # 0xE3 -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0434' # 0xE4 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0435' # 0xE5 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0436' # 0xE6 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0437' # 0xE7 -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0438' # 0xE8 -> CYRILLIC SMALL LETTER I
|
||||
'\u0439' # 0xE9 -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u043a' # 0xEA -> CYRILLIC SMALL LETTER KA
|
||||
'\u043b' # 0xEB -> CYRILLIC SMALL LETTER EL
|
||||
'\u043c' # 0xEC -> CYRILLIC SMALL LETTER EM
|
||||
'\u043d' # 0xED -> CYRILLIC SMALL LETTER EN
|
||||
'\u043e' # 0xEE -> CYRILLIC SMALL LETTER O
|
||||
'\u043f' # 0xEF -> CYRILLIC SMALL LETTER PE
|
||||
'\u0440' # 0xF0 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0441' # 0xF1 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0442' # 0xF2 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0443' # 0xF3 -> CYRILLIC SMALL LETTER U
|
||||
'\u0444' # 0xF4 -> CYRILLIC SMALL LETTER EF
|
||||
'\u0445' # 0xF5 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0446' # 0xF6 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0447' # 0xF7 -> CYRILLIC SMALL LETTER CHE
|
||||
'\u0448' # 0xF8 -> CYRILLIC SMALL LETTER SHA
|
||||
'\u0449' # 0xF9 -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u044a' # 0xFA -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u044b' # 0xFB -> CYRILLIC SMALL LETTER YERU
|
||||
'\u044c' # 0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u044d' # 0xFD -> CYRILLIC SMALL LETTER E
|
||||
'\u044e' # 0xFE -> CYRILLIC SMALL LETTER YU
|
||||
'\u044f' # 0xFF -> CYRILLIC SMALL LETTER YA
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1252 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1252',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0192' # 0x83 -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\u02c6' # 0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\u0160' # 0x8A -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0152' # 0x8C -> LATIN CAPITAL LIGATURE OE
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\u017d' # 0x8E -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\u02dc' # 0x98 -> SMALL TILDE
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\u0161' # 0x9A -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0153' # 0x9C -> LATIN SMALL LIGATURE OE
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\u017e' # 0x9E -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u0178' # 0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xaa' # 0xAA -> FEMININE ORDINAL INDICATOR
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xba' # 0xBA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xd0' # 0xD0 -> LATIN CAPITAL LETTER ETH
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xDE -> LATIN CAPITAL LETTER THORN
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xf0' # 0xF0 -> LATIN SMALL LETTER ETH
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0xFE -> LATIN SMALL LETTER THORN
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1253 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1253.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1253',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0192' # 0x83 -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\ufffe' # 0x88 -> UNDEFINED
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\ufffe' # 0x8A -> UNDEFINED
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x8C -> UNDEFINED
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\ufffe' # 0x8E -> UNDEFINED
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\ufffe' # 0x98 -> UNDEFINED
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x9C -> UNDEFINED
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\ufffe' # 0x9F -> UNDEFINED
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0385' # 0xA1 -> GREEK DIALYTIKA TONOS
|
||||
'\u0386' # 0xA2 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\ufffe' # 0xAA -> UNDEFINED
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\u2015' # 0xAF -> HORIZONTAL BAR
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\u0384' # 0xB4 -> GREEK TONOS
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\u0388' # 0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
'\u0389' # 0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
'\u038a' # 0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u038c' # 0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\u038e' # 0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
'\u038f' # 0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
'\u0390' # 0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
'\u0391' # 0xC1 -> GREEK CAPITAL LETTER ALPHA
|
||||
'\u0392' # 0xC2 -> GREEK CAPITAL LETTER BETA
|
||||
'\u0393' # 0xC3 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u0394' # 0xC4 -> GREEK CAPITAL LETTER DELTA
|
||||
'\u0395' # 0xC5 -> GREEK CAPITAL LETTER EPSILON
|
||||
'\u0396' # 0xC6 -> GREEK CAPITAL LETTER ZETA
|
||||
'\u0397' # 0xC7 -> GREEK CAPITAL LETTER ETA
|
||||
'\u0398' # 0xC8 -> GREEK CAPITAL LETTER THETA
|
||||
'\u0399' # 0xC9 -> GREEK CAPITAL LETTER IOTA
|
||||
'\u039a' # 0xCA -> GREEK CAPITAL LETTER KAPPA
|
||||
'\u039b' # 0xCB -> GREEK CAPITAL LETTER LAMDA
|
||||
'\u039c' # 0xCC -> GREEK CAPITAL LETTER MU
|
||||
'\u039d' # 0xCD -> GREEK CAPITAL LETTER NU
|
||||
'\u039e' # 0xCE -> GREEK CAPITAL LETTER XI
|
||||
'\u039f' # 0xCF -> GREEK CAPITAL LETTER OMICRON
|
||||
'\u03a0' # 0xD0 -> GREEK CAPITAL LETTER PI
|
||||
'\u03a1' # 0xD1 -> GREEK CAPITAL LETTER RHO
|
||||
'\ufffe' # 0xD2 -> UNDEFINED
|
||||
'\u03a3' # 0xD3 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03a4' # 0xD4 -> GREEK CAPITAL LETTER TAU
|
||||
'\u03a5' # 0xD5 -> GREEK CAPITAL LETTER UPSILON
|
||||
'\u03a6' # 0xD6 -> GREEK CAPITAL LETTER PHI
|
||||
'\u03a7' # 0xD7 -> GREEK CAPITAL LETTER CHI
|
||||
'\u03a8' # 0xD8 -> GREEK CAPITAL LETTER PSI
|
||||
'\u03a9' # 0xD9 -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03aa' # 0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03ab' # 0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03ac' # 0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
'\u03ad' # 0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
'\u03ae' # 0xDE -> GREEK SMALL LETTER ETA WITH TONOS
|
||||
'\u03af' # 0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
|
||||
'\u03b0' # 0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
'\u03b1' # 0xE1 -> GREEK SMALL LETTER ALPHA
|
||||
'\u03b2' # 0xE2 -> GREEK SMALL LETTER BETA
|
||||
'\u03b3' # 0xE3 -> GREEK SMALL LETTER GAMMA
|
||||
'\u03b4' # 0xE4 -> GREEK SMALL LETTER DELTA
|
||||
'\u03b5' # 0xE5 -> GREEK SMALL LETTER EPSILON
|
||||
'\u03b6' # 0xE6 -> GREEK SMALL LETTER ZETA
|
||||
'\u03b7' # 0xE7 -> GREEK SMALL LETTER ETA
|
||||
'\u03b8' # 0xE8 -> GREEK SMALL LETTER THETA
|
||||
'\u03b9' # 0xE9 -> GREEK SMALL LETTER IOTA
|
||||
'\u03ba' # 0xEA -> GREEK SMALL LETTER KAPPA
|
||||
'\u03bb' # 0xEB -> GREEK SMALL LETTER LAMDA
|
||||
'\u03bc' # 0xEC -> GREEK SMALL LETTER MU
|
||||
'\u03bd' # 0xED -> GREEK SMALL LETTER NU
|
||||
'\u03be' # 0xEE -> GREEK SMALL LETTER XI
|
||||
'\u03bf' # 0xEF -> GREEK SMALL LETTER OMICRON
|
||||
'\u03c0' # 0xF0 -> GREEK SMALL LETTER PI
|
||||
'\u03c1' # 0xF1 -> GREEK SMALL LETTER RHO
|
||||
'\u03c2' # 0xF2 -> GREEK SMALL LETTER FINAL SIGMA
|
||||
'\u03c3' # 0xF3 -> GREEK SMALL LETTER SIGMA
|
||||
'\u03c4' # 0xF4 -> GREEK SMALL LETTER TAU
|
||||
'\u03c5' # 0xF5 -> GREEK SMALL LETTER UPSILON
|
||||
'\u03c6' # 0xF6 -> GREEK SMALL LETTER PHI
|
||||
'\u03c7' # 0xF7 -> GREEK SMALL LETTER CHI
|
||||
'\u03c8' # 0xF8 -> GREEK SMALL LETTER PSI
|
||||
'\u03c9' # 0xF9 -> GREEK SMALL LETTER OMEGA
|
||||
'\u03ca' # 0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03cb' # 0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03cc' # 0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
'\u03cd' # 0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
'\u03ce' # 0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
'\ufffe' # 0xFF -> UNDEFINED
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1254 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1254.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1254',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0192' # 0x83 -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\u02c6' # 0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\u0160' # 0x8A -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0152' # 0x8C -> LATIN CAPITAL LIGATURE OE
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\ufffe' # 0x8E -> UNDEFINED
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\u02dc' # 0x98 -> SMALL TILDE
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\u0161' # 0x9A -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0153' # 0x9C -> LATIN SMALL LIGATURE OE
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\u0178' # 0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xaa' # 0xAA -> FEMININE ORDINAL INDICATOR
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xba' # 0xBA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u011e' # 0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u0130' # 0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
'\u015e' # 0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\u011f' # 0xF0 -> LATIN SMALL LETTER G WITH BREVE
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u0131' # 0xFD -> LATIN SMALL LETTER DOTLESS I
|
||||
'\u015f' # 0xFE -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1255 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1255.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1255',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0192' # 0x83 -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\u02c6' # 0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\ufffe' # 0x8A -> UNDEFINED
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x8C -> UNDEFINED
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\ufffe' # 0x8E -> UNDEFINED
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\u02dc' # 0x98 -> SMALL TILDE
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x9C -> UNDEFINED
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\ufffe' # 0x9F -> UNDEFINED
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\u20aa' # 0xA4 -> NEW SHEQEL SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xd7' # 0xAA -> MULTIPLICATION SIGN
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xf7' # 0xBA -> DIVISION SIGN
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\u05b0' # 0xC0 -> HEBREW POINT SHEVA
|
||||
'\u05b1' # 0xC1 -> HEBREW POINT HATAF SEGOL
|
||||
'\u05b2' # 0xC2 -> HEBREW POINT HATAF PATAH
|
||||
'\u05b3' # 0xC3 -> HEBREW POINT HATAF QAMATS
|
||||
'\u05b4' # 0xC4 -> HEBREW POINT HIRIQ
|
||||
'\u05b5' # 0xC5 -> HEBREW POINT TSERE
|
||||
'\u05b6' # 0xC6 -> HEBREW POINT SEGOL
|
||||
'\u05b7' # 0xC7 -> HEBREW POINT PATAH
|
||||
'\u05b8' # 0xC8 -> HEBREW POINT QAMATS
|
||||
'\u05b9' # 0xC9 -> HEBREW POINT HOLAM
|
||||
'\ufffe' # 0xCA -> UNDEFINED
|
||||
'\u05bb' # 0xCB -> HEBREW POINT QUBUTS
|
||||
'\u05bc' # 0xCC -> HEBREW POINT DAGESH OR MAPIQ
|
||||
'\u05bd' # 0xCD -> HEBREW POINT METEG
|
||||
'\u05be' # 0xCE -> HEBREW PUNCTUATION MAQAF
|
||||
'\u05bf' # 0xCF -> HEBREW POINT RAFE
|
||||
'\u05c0' # 0xD0 -> HEBREW PUNCTUATION PASEQ
|
||||
'\u05c1' # 0xD1 -> HEBREW POINT SHIN DOT
|
||||
'\u05c2' # 0xD2 -> HEBREW POINT SIN DOT
|
||||
'\u05c3' # 0xD3 -> HEBREW PUNCTUATION SOF PASUQ
|
||||
'\u05f0' # 0xD4 -> HEBREW LIGATURE YIDDISH DOUBLE VAV
|
||||
'\u05f1' # 0xD5 -> HEBREW LIGATURE YIDDISH VAV YOD
|
||||
'\u05f2' # 0xD6 -> HEBREW LIGATURE YIDDISH DOUBLE YOD
|
||||
'\u05f3' # 0xD7 -> HEBREW PUNCTUATION GERESH
|
||||
'\u05f4' # 0xD8 -> HEBREW PUNCTUATION GERSHAYIM
|
||||
'\ufffe' # 0xD9 -> UNDEFINED
|
||||
'\ufffe' # 0xDA -> UNDEFINED
|
||||
'\ufffe' # 0xDB -> UNDEFINED
|
||||
'\ufffe' # 0xDC -> UNDEFINED
|
||||
'\ufffe' # 0xDD -> UNDEFINED
|
||||
'\ufffe' # 0xDE -> UNDEFINED
|
||||
'\ufffe' # 0xDF -> UNDEFINED
|
||||
'\u05d0' # 0xE0 -> HEBREW LETTER ALEF
|
||||
'\u05d1' # 0xE1 -> HEBREW LETTER BET
|
||||
'\u05d2' # 0xE2 -> HEBREW LETTER GIMEL
|
||||
'\u05d3' # 0xE3 -> HEBREW LETTER DALET
|
||||
'\u05d4' # 0xE4 -> HEBREW LETTER HE
|
||||
'\u05d5' # 0xE5 -> HEBREW LETTER VAV
|
||||
'\u05d6' # 0xE6 -> HEBREW LETTER ZAYIN
|
||||
'\u05d7' # 0xE7 -> HEBREW LETTER HET
|
||||
'\u05d8' # 0xE8 -> HEBREW LETTER TET
|
||||
'\u05d9' # 0xE9 -> HEBREW LETTER YOD
|
||||
'\u05da' # 0xEA -> HEBREW LETTER FINAL KAF
|
||||
'\u05db' # 0xEB -> HEBREW LETTER KAF
|
||||
'\u05dc' # 0xEC -> HEBREW LETTER LAMED
|
||||
'\u05dd' # 0xED -> HEBREW LETTER FINAL MEM
|
||||
'\u05de' # 0xEE -> HEBREW LETTER MEM
|
||||
'\u05df' # 0xEF -> HEBREW LETTER FINAL NUN
|
||||
'\u05e0' # 0xF0 -> HEBREW LETTER NUN
|
||||
'\u05e1' # 0xF1 -> HEBREW LETTER SAMEKH
|
||||
'\u05e2' # 0xF2 -> HEBREW LETTER AYIN
|
||||
'\u05e3' # 0xF3 -> HEBREW LETTER FINAL PE
|
||||
'\u05e4' # 0xF4 -> HEBREW LETTER PE
|
||||
'\u05e5' # 0xF5 -> HEBREW LETTER FINAL TSADI
|
||||
'\u05e6' # 0xF6 -> HEBREW LETTER TSADI
|
||||
'\u05e7' # 0xF7 -> HEBREW LETTER QOF
|
||||
'\u05e8' # 0xF8 -> HEBREW LETTER RESH
|
||||
'\u05e9' # 0xF9 -> HEBREW LETTER SHIN
|
||||
'\u05ea' # 0xFA -> HEBREW LETTER TAV
|
||||
'\ufffe' # 0xFB -> UNDEFINED
|
||||
'\ufffe' # 0xFC -> UNDEFINED
|
||||
'\u200e' # 0xFD -> LEFT-TO-RIGHT MARK
|
||||
'\u200f' # 0xFE -> RIGHT-TO-LEFT MARK
|
||||
'\ufffe' # 0xFF -> UNDEFINED
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1256 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1256.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1256',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\u067e' # 0x81 -> ARABIC LETTER PEH
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0192' # 0x83 -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\u02c6' # 0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\u0679' # 0x8A -> ARABIC LETTER TTEH
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0152' # 0x8C -> LATIN CAPITAL LIGATURE OE
|
||||
'\u0686' # 0x8D -> ARABIC LETTER TCHEH
|
||||
'\u0698' # 0x8E -> ARABIC LETTER JEH
|
||||
'\u0688' # 0x8F -> ARABIC LETTER DDAL
|
||||
'\u06af' # 0x90 -> ARABIC LETTER GAF
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\u06a9' # 0x98 -> ARABIC LETTER KEHEH
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\u0691' # 0x9A -> ARABIC LETTER RREH
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0153' # 0x9C -> LATIN SMALL LIGATURE OE
|
||||
'\u200c' # 0x9D -> ZERO WIDTH NON-JOINER
|
||||
'\u200d' # 0x9E -> ZERO WIDTH JOINER
|
||||
'\u06ba' # 0x9F -> ARABIC LETTER NOON GHUNNA
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u060c' # 0xA1 -> ARABIC COMMA
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u06be' # 0xAA -> ARABIC LETTER HEH DOACHASHMEE
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\u061b' # 0xBA -> ARABIC SEMICOLON
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\u061f' # 0xBF -> ARABIC QUESTION MARK
|
||||
'\u06c1' # 0xC0 -> ARABIC LETTER HEH GOAL
|
||||
'\u0621' # 0xC1 -> ARABIC LETTER HAMZA
|
||||
'\u0622' # 0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
'\u0623' # 0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
'\u0624' # 0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
'\u0625' # 0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
'\u0626' # 0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
'\u0627' # 0xC7 -> ARABIC LETTER ALEF
|
||||
'\u0628' # 0xC8 -> ARABIC LETTER BEH
|
||||
'\u0629' # 0xC9 -> ARABIC LETTER TEH MARBUTA
|
||||
'\u062a' # 0xCA -> ARABIC LETTER TEH
|
||||
'\u062b' # 0xCB -> ARABIC LETTER THEH
|
||||
'\u062c' # 0xCC -> ARABIC LETTER JEEM
|
||||
'\u062d' # 0xCD -> ARABIC LETTER HAH
|
||||
'\u062e' # 0xCE -> ARABIC LETTER KHAH
|
||||
'\u062f' # 0xCF -> ARABIC LETTER DAL
|
||||
'\u0630' # 0xD0 -> ARABIC LETTER THAL
|
||||
'\u0631' # 0xD1 -> ARABIC LETTER REH
|
||||
'\u0632' # 0xD2 -> ARABIC LETTER ZAIN
|
||||
'\u0633' # 0xD3 -> ARABIC LETTER SEEN
|
||||
'\u0634' # 0xD4 -> ARABIC LETTER SHEEN
|
||||
'\u0635' # 0xD5 -> ARABIC LETTER SAD
|
||||
'\u0636' # 0xD6 -> ARABIC LETTER DAD
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\u0637' # 0xD8 -> ARABIC LETTER TAH
|
||||
'\u0638' # 0xD9 -> ARABIC LETTER ZAH
|
||||
'\u0639' # 0xDA -> ARABIC LETTER AIN
|
||||
'\u063a' # 0xDB -> ARABIC LETTER GHAIN
|
||||
'\u0640' # 0xDC -> ARABIC TATWEEL
|
||||
'\u0641' # 0xDD -> ARABIC LETTER FEH
|
||||
'\u0642' # 0xDE -> ARABIC LETTER QAF
|
||||
'\u0643' # 0xDF -> ARABIC LETTER KAF
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\u0644' # 0xE1 -> ARABIC LETTER LAM
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\u0645' # 0xE3 -> ARABIC LETTER MEEM
|
||||
'\u0646' # 0xE4 -> ARABIC LETTER NOON
|
||||
'\u0647' # 0xE5 -> ARABIC LETTER HEH
|
||||
'\u0648' # 0xE6 -> ARABIC LETTER WAW
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u0649' # 0xEC -> ARABIC LETTER ALEF MAKSURA
|
||||
'\u064a' # 0xED -> ARABIC LETTER YEH
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\u064b' # 0xF0 -> ARABIC FATHATAN
|
||||
'\u064c' # 0xF1 -> ARABIC DAMMATAN
|
||||
'\u064d' # 0xF2 -> ARABIC KASRATAN
|
||||
'\u064e' # 0xF3 -> ARABIC FATHA
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\u064f' # 0xF5 -> ARABIC DAMMA
|
||||
'\u0650' # 0xF6 -> ARABIC KASRA
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\u0651' # 0xF8 -> ARABIC SHADDA
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\u0652' # 0xFA -> ARABIC SUKUN
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u200e' # 0xFD -> LEFT-TO-RIGHT MARK
|
||||
'\u200f' # 0xFE -> RIGHT-TO-LEFT MARK
|
||||
'\u06d2' # 0xFF -> ARABIC LETTER YEH BARREE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1257 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1257',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\ufffe' # 0x83 -> UNDEFINED
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\ufffe' # 0x88 -> UNDEFINED
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\ufffe' # 0x8A -> UNDEFINED
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x8C -> UNDEFINED
|
||||
'\xa8' # 0x8D -> DIAERESIS
|
||||
'\u02c7' # 0x8E -> CARON
|
||||
'\xb8' # 0x8F -> CEDILLA
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\ufffe' # 0x98 -> UNDEFINED
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x9C -> UNDEFINED
|
||||
'\xaf' # 0x9D -> MACRON
|
||||
'\u02db' # 0x9E -> OGONEK
|
||||
'\ufffe' # 0x9F -> UNDEFINED
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\ufffe' # 0xA1 -> UNDEFINED
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\ufffe' # 0xA5 -> UNDEFINED
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xd8' # 0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u0156' # 0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xc6' # 0xAF -> LATIN CAPITAL LETTER AE
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xf8' # 0xB8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\u0157' # 0xBA -> LATIN SMALL LETTER R WITH CEDILLA
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xe6' # 0xBF -> LATIN SMALL LETTER AE
|
||||
'\u0104' # 0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u012e' # 0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
|
||||
'\u0100' # 0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
|
||||
'\u0106' # 0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\u0118' # 0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\u0112' # 0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
|
||||
'\u010c' # 0xC8 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0179' # 0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\u0116' # 0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
'\u0122' # 0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
'\u0136' # 0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
'\u012a' # 0xCE -> LATIN CAPITAL LETTER I WITH MACRON
|
||||
'\u013b' # 0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
'\u0160' # 0xD0 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u0143' # 0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\u0145' # 0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\u014c' # 0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\u0172' # 0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
|
||||
'\u0141' # 0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\u015a' # 0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\u016a' # 0xDB -> LATIN CAPITAL LETTER U WITH MACRON
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u017b' # 0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\u017d' # 0xDE -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\u0105' # 0xE0 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u012f' # 0xE1 -> LATIN SMALL LETTER I WITH OGONEK
|
||||
'\u0101' # 0xE2 -> LATIN SMALL LETTER A WITH MACRON
|
||||
'\u0107' # 0xE3 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\u0119' # 0xE6 -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\u0113' # 0xE7 -> LATIN SMALL LETTER E WITH MACRON
|
||||
'\u010d' # 0xE8 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u017a' # 0xEA -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\u0117' # 0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
'\u0123' # 0xEC -> LATIN SMALL LETTER G WITH CEDILLA
|
||||
'\u0137' # 0xED -> LATIN SMALL LETTER K WITH CEDILLA
|
||||
'\u012b' # 0xEE -> LATIN SMALL LETTER I WITH MACRON
|
||||
'\u013c' # 0xEF -> LATIN SMALL LETTER L WITH CEDILLA
|
||||
'\u0161' # 0xF0 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u0144' # 0xF1 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\u0146' # 0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\u014d' # 0xF4 -> LATIN SMALL LETTER O WITH MACRON
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\u0173' # 0xF8 -> LATIN SMALL LETTER U WITH OGONEK
|
||||
'\u0142' # 0xF9 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\u015b' # 0xFA -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\u016b' # 0xFB -> LATIN SMALL LETTER U WITH MACRON
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u017c' # 0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\u017e' # 0xFE -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u02d9' # 0xFF -> DOT ABOVE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp1258 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1258.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp1258',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0192' # 0x83 -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\u02c6' # 0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\ufffe' # 0x8A -> UNDEFINED
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0152' # 0x8C -> LATIN CAPITAL LIGATURE OE
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\ufffe' # 0x8E -> UNDEFINED
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\u02dc' # 0x98 -> SMALL TILDE
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\u0153' # 0x9C -> LATIN SMALL LIGATURE OE
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\u0178' # 0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xaa' # 0xAA -> FEMININE ORDINAL INDICATOR
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xba' # 0xBA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\u0102' # 0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\u0300' # 0xCC -> COMBINING GRAVE ACCENT
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u0110' # 0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\u0309' # 0xD2 -> COMBINING HOOK ABOVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\u01a0' # 0xD5 -> LATIN CAPITAL LETTER O WITH HORN
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u01af' # 0xDD -> LATIN CAPITAL LETTER U WITH HORN
|
||||
'\u0303' # 0xDE -> COMBINING TILDE
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\u0103' # 0xE3 -> LATIN SMALL LETTER A WITH BREVE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u0301' # 0xEC -> COMBINING ACUTE ACCENT
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\u0111' # 0xF0 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\u0323' # 0xF2 -> COMBINING DOT BELOW
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\u01a1' # 0xF5 -> LATIN SMALL LETTER O WITH HORN
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u01b0' # 0xFD -> LATIN SMALL LETTER U WITH HORN
|
||||
'\u20ab' # 0xFE -> DONG SIGN
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp273 generated from 'python-mappings/CP273.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp273',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL (NUL)
|
||||
'\x01' # 0x01 -> START OF HEADING (SOH)
|
||||
'\x02' # 0x02 -> START OF TEXT (STX)
|
||||
'\x03' # 0x03 -> END OF TEXT (ETX)
|
||||
'\x9c' # 0x04 -> STRING TERMINATOR (ST)
|
||||
'\t' # 0x05 -> CHARACTER TABULATION (HT)
|
||||
'\x86' # 0x06 -> START OF SELECTED AREA (SSA)
|
||||
'\x7f' # 0x07 -> DELETE (DEL)
|
||||
'\x97' # 0x08 -> END OF GUARDED AREA (EPA)
|
||||
'\x8d' # 0x09 -> REVERSE LINE FEED (RI)
|
||||
'\x8e' # 0x0A -> SINGLE-SHIFT TWO (SS2)
|
||||
'\x0b' # 0x0B -> LINE TABULATION (VT)
|
||||
'\x0c' # 0x0C -> FORM FEED (FF)
|
||||
'\r' # 0x0D -> CARRIAGE RETURN (CR)
|
||||
'\x0e' # 0x0E -> SHIFT OUT (SO)
|
||||
'\x0f' # 0x0F -> SHIFT IN (SI)
|
||||
'\x10' # 0x10 -> DATALINK ESCAPE (DLE)
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE (DC1)
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO (DC2)
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE (DC3)
|
||||
'\x9d' # 0x14 -> OPERATING SYSTEM COMMAND (OSC)
|
||||
'\x85' # 0x15 -> NEXT LINE (NEL)
|
||||
'\x08' # 0x16 -> BACKSPACE (BS)
|
||||
'\x87' # 0x17 -> END OF SELECTED AREA (ESA)
|
||||
'\x18' # 0x18 -> CANCEL (CAN)
|
||||
'\x19' # 0x19 -> END OF MEDIUM (EM)
|
||||
'\x92' # 0x1A -> PRIVATE USE TWO (PU2)
|
||||
'\x8f' # 0x1B -> SINGLE-SHIFT THREE (SS3)
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR (IS4)
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR (IS3)
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR (IS2)
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR (IS1)
|
||||
'\x80' # 0x20 -> PADDING CHARACTER (PAD)
|
||||
'\x81' # 0x21 -> HIGH OCTET PRESET (HOP)
|
||||
'\x82' # 0x22 -> BREAK PERMITTED HERE (BPH)
|
||||
'\x83' # 0x23 -> NO BREAK HERE (NBH)
|
||||
'\x84' # 0x24 -> INDEX (IND)
|
||||
'\n' # 0x25 -> LINE FEED (LF)
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK (ETB)
|
||||
'\x1b' # 0x27 -> ESCAPE (ESC)
|
||||
'\x88' # 0x28 -> CHARACTER TABULATION SET (HTS)
|
||||
'\x89' # 0x29 -> CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
|
||||
'\x8a' # 0x2A -> LINE TABULATION SET (VTS)
|
||||
'\x8b' # 0x2B -> PARTIAL LINE FORWARD (PLD)
|
||||
'\x8c' # 0x2C -> PARTIAL LINE BACKWARD (PLU)
|
||||
'\x05' # 0x2D -> ENQUIRY (ENQ)
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE (ACK)
|
||||
'\x07' # 0x2F -> BELL (BEL)
|
||||
'\x90' # 0x30 -> DEVICE CONTROL STRING (DCS)
|
||||
'\x91' # 0x31 -> PRIVATE USE ONE (PU1)
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE (SYN)
|
||||
'\x93' # 0x33 -> SET TRANSMIT STATE (STS)
|
||||
'\x94' # 0x34 -> CANCEL CHARACTER (CCH)
|
||||
'\x95' # 0x35 -> MESSAGE WAITING (MW)
|
||||
'\x96' # 0x36 -> START OF GUARDED AREA (SPA)
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION (EOT)
|
||||
'\x98' # 0x38 -> START OF STRING (SOS)
|
||||
'\x99' # 0x39 -> SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
|
||||
'\x9a' # 0x3A -> SINGLE CHARACTER INTRODUCER (SCI)
|
||||
'\x9b' # 0x3B -> CONTROL SEQUENCE INTRODUCER (CSI)
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR (DC4)
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE (NAK)
|
||||
'\x9e' # 0x3E -> PRIVACY MESSAGE (PM)
|
||||
'\x1a' # 0x3F -> SUBSTITUTE (SUB)
|
||||
' ' # 0x40 -> SPACE
|
||||
'\xa0' # 0x41 -> NO-BREAK SPACE
|
||||
'\xe2' # 0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'{' # 0x43 -> LEFT CURLY BRACKET
|
||||
'\xe0' # 0x44 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0x45 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe3' # 0x46 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe5' # 0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x48 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xf1' # 0x49 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xc4' # 0x4A -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'!' # 0x4F -> EXCLAMATION MARK
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\xe9' # 0x51 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x54 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xed' # 0x55 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xec' # 0x58 -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'~' # 0x59 -> TILDE
|
||||
'\xdc' # 0x5A -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'$' # 0x5B -> DOLLAR SIGN
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'^' # 0x5F -> CIRCUMFLEX ACCENT
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\xc2' # 0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'[' # 0x63 -> LEFT SQUARE BRACKET
|
||||
'\xc0' # 0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc3' # 0x66 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc5' # 0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc7' # 0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xd1' # 0x69 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xf6' # 0x6A -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\xf8' # 0x70 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xc9' # 0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xcd' # 0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xcc' # 0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'`' # 0x79 -> GRAVE ACCENT
|
||||
':' # 0x7A -> COLON
|
||||
'#' # 0x7B -> NUMBER SIGN
|
||||
'\xa7' # 0x7C -> SECTION SIGN
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'"' # 0x7F -> QUOTATION MARK
|
||||
'\xd8' # 0x80 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\xab' # 0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xf0' # 0x8C -> LATIN SMALL LETTER ETH (Icelandic)
|
||||
'\xfd' # 0x8D -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0x8E -> LATIN SMALL LETTER THORN (Icelandic)
|
||||
'\xb1' # 0x8F -> PLUS-MINUS SIGN
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\xaa' # 0x9A -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x9B -> MASCULINE ORDINAL INDICATOR
|
||||
'\xe6' # 0x9C -> LATIN SMALL LETTER AE
|
||||
'\xb8' # 0x9D -> CEDILLA
|
||||
'\xc6' # 0x9E -> LATIN CAPITAL LETTER AE
|
||||
'\xa4' # 0x9F -> CURRENCY SIGN
|
||||
'\xb5' # 0xA0 -> MICRO SIGN
|
||||
'\xdf' # 0xA1 -> LATIN SMALL LETTER SHARP S (German)
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\xa1' # 0xAA -> INVERTED EXCLAMATION MARK
|
||||
'\xbf' # 0xAB -> INVERTED QUESTION MARK
|
||||
'\xd0' # 0xAC -> LATIN CAPITAL LETTER ETH (Icelandic)
|
||||
'\xdd' # 0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xAE -> LATIN CAPITAL LETTER THORN (Icelandic)
|
||||
'\xae' # 0xAF -> REGISTERED SIGN
|
||||
'\xa2' # 0xB0 -> CENT SIGN
|
||||
'\xa3' # 0xB1 -> POUND SIGN
|
||||
'\xa5' # 0xB2 -> YEN SIGN
|
||||
'\xb7' # 0xB3 -> MIDDLE DOT
|
||||
'\xa9' # 0xB4 -> COPYRIGHT SIGN
|
||||
'@' # 0xB5 -> COMMERCIAL AT
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xbc' # 0xB7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xB8 -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xB9 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xac' # 0xBA -> NOT SIGN
|
||||
'|' # 0xBB -> VERTICAL LINE
|
||||
'\u203e' # 0xBC -> OVERLINE
|
||||
'\xa8' # 0xBD -> DIAERESIS
|
||||
'\xb4' # 0xBE -> ACUTE ACCENT
|
||||
'\xd7' # 0xBF -> MULTIPLICATION SIGN
|
||||
'\xe4' # 0xC0 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\xf4' # 0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xa6' # 0xCC -> BROKEN BAR
|
||||
'\xf2' # 0xCD -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xCE -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf5' # 0xCF -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xfc' # 0xD0 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb9' # 0xDA -> SUPERSCRIPT ONE
|
||||
'\xfb' # 0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'}' # 0xDC -> RIGHT CURLY BRACKET
|
||||
'\xf9' # 0xDD -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xDE -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xff' # 0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xd6' # 0xE0 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xE1 -> DIVISION SIGN
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\xd4' # 0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\\' # 0xEC -> REVERSE SOLIDUS
|
||||
'\xd2' # 0xED -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd5' # 0xEF -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\xdb' # 0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
']' # 0xFC -> RIGHT SQUARE BRACKET
|
||||
'\xd9' # 0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\x9f' # 0xFF -> APPLICATION PROGRAM COMMAND (APC)
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp424 generated from 'MAPPINGS/VENDORS/MISC/CP424.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp424',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x9c' # 0x04 -> SELECT
|
||||
'\t' # 0x05 -> HORIZONTAL TABULATION
|
||||
'\x86' # 0x06 -> REQUIRED NEW LINE
|
||||
'\x7f' # 0x07 -> DELETE
|
||||
'\x97' # 0x08 -> GRAPHIC ESCAPE
|
||||
'\x8d' # 0x09 -> SUPERSCRIPT
|
||||
'\x8e' # 0x0A -> REPEAT
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x9d' # 0x14 -> RESTORE/ENABLE PRESENTATION
|
||||
'\x85' # 0x15 -> NEW LINE
|
||||
'\x08' # 0x16 -> BACKSPACE
|
||||
'\x87' # 0x17 -> PROGRAM OPERATOR COMMUNICATION
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x92' # 0x1A -> UNIT BACK SPACE
|
||||
'\x8f' # 0x1B -> CUSTOMER USE ONE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
'\x80' # 0x20 -> DIGIT SELECT
|
||||
'\x81' # 0x21 -> START OF SIGNIFICANCE
|
||||
'\x82' # 0x22 -> FIELD SEPARATOR
|
||||
'\x83' # 0x23 -> WORD UNDERSCORE
|
||||
'\x84' # 0x24 -> BYPASS OR INHIBIT PRESENTATION
|
||||
'\n' # 0x25 -> LINE FEED
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK
|
||||
'\x1b' # 0x27 -> ESCAPE
|
||||
'\x88' # 0x28 -> SET ATTRIBUTE
|
||||
'\x89' # 0x29 -> START FIELD EXTENDED
|
||||
'\x8a' # 0x2A -> SET MODE OR SWITCH
|
||||
'\x8b' # 0x2B -> CONTROL SEQUENCE PREFIX
|
||||
'\x8c' # 0x2C -> MODIFY FIELD ATTRIBUTE
|
||||
'\x05' # 0x2D -> ENQUIRY
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE
|
||||
'\x07' # 0x2F -> BELL
|
||||
'\x90' # 0x30 -> <reserved>
|
||||
'\x91' # 0x31 -> <reserved>
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE
|
||||
'\x93' # 0x33 -> INDEX RETURN
|
||||
'\x94' # 0x34 -> PRESENTATION POSITION
|
||||
'\x95' # 0x35 -> TRANSPARENT
|
||||
'\x96' # 0x36 -> NUMERIC BACKSPACE
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION
|
||||
'\x98' # 0x38 -> SUBSCRIPT
|
||||
'\x99' # 0x39 -> INDENT TABULATION
|
||||
'\x9a' # 0x3A -> REVERSE FORM FEED
|
||||
'\x9b' # 0x3B -> CUSTOMER USE THREE
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE
|
||||
'\x9e' # 0x3E -> <reserved>
|
||||
'\x1a' # 0x3F -> SUBSTITUTE
|
||||
' ' # 0x40 -> SPACE
|
||||
'\u05d0' # 0x41 -> HEBREW LETTER ALEF
|
||||
'\u05d1' # 0x42 -> HEBREW LETTER BET
|
||||
'\u05d2' # 0x43 -> HEBREW LETTER GIMEL
|
||||
'\u05d3' # 0x44 -> HEBREW LETTER DALET
|
||||
'\u05d4' # 0x45 -> HEBREW LETTER HE
|
||||
'\u05d5' # 0x46 -> HEBREW LETTER VAV
|
||||
'\u05d6' # 0x47 -> HEBREW LETTER ZAYIN
|
||||
'\u05d7' # 0x48 -> HEBREW LETTER HET
|
||||
'\u05d8' # 0x49 -> HEBREW LETTER TET
|
||||
'\xa2' # 0x4A -> CENT SIGN
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'|' # 0x4F -> VERTICAL LINE
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\u05d9' # 0x51 -> HEBREW LETTER YOD
|
||||
'\u05da' # 0x52 -> HEBREW LETTER FINAL KAF
|
||||
'\u05db' # 0x53 -> HEBREW LETTER KAF
|
||||
'\u05dc' # 0x54 -> HEBREW LETTER LAMED
|
||||
'\u05dd' # 0x55 -> HEBREW LETTER FINAL MEM
|
||||
'\u05de' # 0x56 -> HEBREW LETTER MEM
|
||||
'\u05df' # 0x57 -> HEBREW LETTER FINAL NUN
|
||||
'\u05e0' # 0x58 -> HEBREW LETTER NUN
|
||||
'\u05e1' # 0x59 -> HEBREW LETTER SAMEKH
|
||||
'!' # 0x5A -> EXCLAMATION MARK
|
||||
'$' # 0x5B -> DOLLAR SIGN
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'\xac' # 0x5F -> NOT SIGN
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\u05e2' # 0x62 -> HEBREW LETTER AYIN
|
||||
'\u05e3' # 0x63 -> HEBREW LETTER FINAL PE
|
||||
'\u05e4' # 0x64 -> HEBREW LETTER PE
|
||||
'\u05e5' # 0x65 -> HEBREW LETTER FINAL TSADI
|
||||
'\u05e6' # 0x66 -> HEBREW LETTER TSADI
|
||||
'\u05e7' # 0x67 -> HEBREW LETTER QOF
|
||||
'\u05e8' # 0x68 -> HEBREW LETTER RESH
|
||||
'\u05e9' # 0x69 -> HEBREW LETTER SHIN
|
||||
'\xa6' # 0x6A -> BROKEN BAR
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\ufffe' # 0x70 -> UNDEFINED
|
||||
'\u05ea' # 0x71 -> HEBREW LETTER TAV
|
||||
'\ufffe' # 0x72 -> UNDEFINED
|
||||
'\ufffe' # 0x73 -> UNDEFINED
|
||||
'\xa0' # 0x74 -> NO-BREAK SPACE
|
||||
'\ufffe' # 0x75 -> UNDEFINED
|
||||
'\ufffe' # 0x76 -> UNDEFINED
|
||||
'\ufffe' # 0x77 -> UNDEFINED
|
||||
'\u2017' # 0x78 -> DOUBLE LOW LINE
|
||||
'`' # 0x79 -> GRAVE ACCENT
|
||||
':' # 0x7A -> COLON
|
||||
'#' # 0x7B -> NUMBER SIGN
|
||||
'@' # 0x7C -> COMMERCIAL AT
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'"' # 0x7F -> QUOTATION MARK
|
||||
'\ufffe' # 0x80 -> UNDEFINED
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\xab' # 0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x8C -> UNDEFINED
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\ufffe' # 0x8E -> UNDEFINED
|
||||
'\xb1' # 0x8F -> PLUS-MINUS SIGN
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\ufffe' # 0x9B -> UNDEFINED
|
||||
'\ufffe' # 0x9C -> UNDEFINED
|
||||
'\xb8' # 0x9D -> CEDILLA
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\xa4' # 0x9F -> CURRENCY SIGN
|
||||
'\xb5' # 0xA0 -> MICRO SIGN
|
||||
'~' # 0xA1 -> TILDE
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\ufffe' # 0xAA -> UNDEFINED
|
||||
'\ufffe' # 0xAB -> UNDEFINED
|
||||
'\ufffe' # 0xAC -> UNDEFINED
|
||||
'\ufffe' # 0xAD -> UNDEFINED
|
||||
'\ufffe' # 0xAE -> UNDEFINED
|
||||
'\xae' # 0xAF -> REGISTERED SIGN
|
||||
'^' # 0xB0 -> CIRCUMFLEX ACCENT
|
||||
'\xa3' # 0xB1 -> POUND SIGN
|
||||
'\xa5' # 0xB2 -> YEN SIGN
|
||||
'\xb7' # 0xB3 -> MIDDLE DOT
|
||||
'\xa9' # 0xB4 -> COPYRIGHT SIGN
|
||||
'\xa7' # 0xB5 -> SECTION SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xbc' # 0xB7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xB8 -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xB9 -> VULGAR FRACTION THREE QUARTERS
|
||||
'[' # 0xBA -> LEFT SQUARE BRACKET
|
||||
']' # 0xBB -> RIGHT SQUARE BRACKET
|
||||
'\xaf' # 0xBC -> MACRON
|
||||
'\xa8' # 0xBD -> DIAERESIS
|
||||
'\xb4' # 0xBE -> ACUTE ACCENT
|
||||
'\xd7' # 0xBF -> MULTIPLICATION SIGN
|
||||
'{' # 0xC0 -> LEFT CURLY BRACKET
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\ufffe' # 0xCB -> UNDEFINED
|
||||
'\ufffe' # 0xCC -> UNDEFINED
|
||||
'\ufffe' # 0xCD -> UNDEFINED
|
||||
'\ufffe' # 0xCE -> UNDEFINED
|
||||
'\ufffe' # 0xCF -> UNDEFINED
|
||||
'}' # 0xD0 -> RIGHT CURLY BRACKET
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb9' # 0xDA -> SUPERSCRIPT ONE
|
||||
'\ufffe' # 0xDB -> UNDEFINED
|
||||
'\ufffe' # 0xDC -> UNDEFINED
|
||||
'\ufffe' # 0xDD -> UNDEFINED
|
||||
'\ufffe' # 0xDE -> UNDEFINED
|
||||
'\ufffe' # 0xDF -> UNDEFINED
|
||||
'\\' # 0xE0 -> REVERSE SOLIDUS
|
||||
'\xf7' # 0xE1 -> DIVISION SIGN
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\ufffe' # 0xEB -> UNDEFINED
|
||||
'\ufffe' # 0xEC -> UNDEFINED
|
||||
'\ufffe' # 0xED -> UNDEFINED
|
||||
'\ufffe' # 0xEE -> UNDEFINED
|
||||
'\ufffe' # 0xEF -> UNDEFINED
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\ufffe' # 0xFB -> UNDEFINED
|
||||
'\ufffe' # 0xFC -> UNDEFINED
|
||||
'\ufffe' # 0xFD -> UNDEFINED
|
||||
'\ufffe' # 0xFE -> UNDEFINED
|
||||
'\x9f' # 0xFF -> EIGHT ONES
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec cp437 generated from 'VENDORS/MICSFT/PC/CP437.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp437',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x00ff, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00a2, # CENT SIGN
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00a5, # YEN SIGN
|
||||
0x009e: 0x20a7, # PESETA SIGN
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00a7: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x2310, # REVERSED NOT SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00e3: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00e4: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00e5: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00e8: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00e9: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ea: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00eb: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00ec: 0x221e, # INFINITY
|
||||
0x00ed: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ee: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00ef: 0x2229, # INTERSECTION
|
||||
0x00f0: 0x2261, # IDENTICAL TO
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x2320, # TOP HALF INTEGRAL
|
||||
0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xec' # 0x008d -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0x0095 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xff' # 0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xa2' # 0x009b -> CENT SIGN
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xa5' # 0x009d -> YEN SIGN
|
||||
'\u20a7' # 0x009e -> PESETA SIGN
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xaa' # 0x00a6 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x00a7 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\u2310' # 0x00a9 -> REVERSED NOT SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b1' # 0x00e0 -> GREEK SMALL LETTER ALPHA
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\u0393' # 0x00e2 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u03c0' # 0x00e3 -> GREEK SMALL LETTER PI
|
||||
'\u03a3' # 0x00e4 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03c3' # 0x00e5 -> GREEK SMALL LETTER SIGMA
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u03c4' # 0x00e7 -> GREEK SMALL LETTER TAU
|
||||
'\u03a6' # 0x00e8 -> GREEK CAPITAL LETTER PHI
|
||||
'\u0398' # 0x00e9 -> GREEK CAPITAL LETTER THETA
|
||||
'\u03a9' # 0x00ea -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b4' # 0x00eb -> GREEK SMALL LETTER DELTA
|
||||
'\u221e' # 0x00ec -> INFINITY
|
||||
'\u03c6' # 0x00ed -> GREEK SMALL LETTER PHI
|
||||
'\u03b5' # 0x00ee -> GREEK SMALL LETTER EPSILON
|
||||
'\u2229' # 0x00ef -> INTERSECTION
|
||||
'\u2261' # 0x00f0 -> IDENTICAL TO
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u2320' # 0x00f4 -> TOP HALF INTEGRAL
|
||||
'\u2321' # 0x00f5 -> BOTTOM HALF INTEGRAL
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a2: 0x009b, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a5: 0x009d, # YEN SIGN
|
||||
0x00aa: 0x00a6, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00ba: 0x00a7, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ec: 0x008d, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00ef: 0x008b, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f2: 0x0095, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00ff: 0x0098, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x0393: 0x00e2, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0398: 0x00e9, # GREEK CAPITAL LETTER THETA
|
||||
0x03a3: 0x00e4, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a6: 0x00e8, # GREEK CAPITAL LETTER PHI
|
||||
0x03a9: 0x00ea, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03b1: 0x00e0, # GREEK SMALL LETTER ALPHA
|
||||
0x03b4: 0x00eb, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00ee, # GREEK SMALL LETTER EPSILON
|
||||
0x03c0: 0x00e3, # GREEK SMALL LETTER PI
|
||||
0x03c3: 0x00e5, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00e7, # GREEK SMALL LETTER TAU
|
||||
0x03c6: 0x00ed, # GREEK SMALL LETTER PHI
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x20a7: 0x009e, # PESETA SIGN
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x221e: 0x00ec, # INFINITY
|
||||
0x2229: 0x00ef, # INTERSECTION
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2261: 0x00f0, # IDENTICAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2310: 0x00a9, # REVERSED NOT SIGN
|
||||
0x2320: 0x00f4, # TOP HALF INTEGRAL
|
||||
0x2321: 0x00f5, # BOTTOM HALF INTEGRAL
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp500 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP500.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp500',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x9c' # 0x04 -> CONTROL
|
||||
'\t' # 0x05 -> HORIZONTAL TABULATION
|
||||
'\x86' # 0x06 -> CONTROL
|
||||
'\x7f' # 0x07 -> DELETE
|
||||
'\x97' # 0x08 -> CONTROL
|
||||
'\x8d' # 0x09 -> CONTROL
|
||||
'\x8e' # 0x0A -> CONTROL
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x9d' # 0x14 -> CONTROL
|
||||
'\x85' # 0x15 -> CONTROL
|
||||
'\x08' # 0x16 -> BACKSPACE
|
||||
'\x87' # 0x17 -> CONTROL
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x92' # 0x1A -> CONTROL
|
||||
'\x8f' # 0x1B -> CONTROL
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
'\x80' # 0x20 -> CONTROL
|
||||
'\x81' # 0x21 -> CONTROL
|
||||
'\x82' # 0x22 -> CONTROL
|
||||
'\x83' # 0x23 -> CONTROL
|
||||
'\x84' # 0x24 -> CONTROL
|
||||
'\n' # 0x25 -> LINE FEED
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK
|
||||
'\x1b' # 0x27 -> ESCAPE
|
||||
'\x88' # 0x28 -> CONTROL
|
||||
'\x89' # 0x29 -> CONTROL
|
||||
'\x8a' # 0x2A -> CONTROL
|
||||
'\x8b' # 0x2B -> CONTROL
|
||||
'\x8c' # 0x2C -> CONTROL
|
||||
'\x05' # 0x2D -> ENQUIRY
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE
|
||||
'\x07' # 0x2F -> BELL
|
||||
'\x90' # 0x30 -> CONTROL
|
||||
'\x91' # 0x31 -> CONTROL
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE
|
||||
'\x93' # 0x33 -> CONTROL
|
||||
'\x94' # 0x34 -> CONTROL
|
||||
'\x95' # 0x35 -> CONTROL
|
||||
'\x96' # 0x36 -> CONTROL
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION
|
||||
'\x98' # 0x38 -> CONTROL
|
||||
'\x99' # 0x39 -> CONTROL
|
||||
'\x9a' # 0x3A -> CONTROL
|
||||
'\x9b' # 0x3B -> CONTROL
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE
|
||||
'\x9e' # 0x3E -> CONTROL
|
||||
'\x1a' # 0x3F -> SUBSTITUTE
|
||||
' ' # 0x40 -> SPACE
|
||||
'\xa0' # 0x41 -> NO-BREAK SPACE
|
||||
'\xe2' # 0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x44 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0x45 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe3' # 0x46 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe5' # 0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x48 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xf1' # 0x49 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'[' # 0x4A -> LEFT SQUARE BRACKET
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'!' # 0x4F -> EXCLAMATION MARK
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\xe9' # 0x51 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x54 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xed' # 0x55 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xec' # 0x58 -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xdf' # 0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
']' # 0x5A -> RIGHT SQUARE BRACKET
|
||||
'$' # 0x5B -> DOLLAR SIGN
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'^' # 0x5F -> CIRCUMFLEX ACCENT
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\xc2' # 0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc4' # 0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc0' # 0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc3' # 0x66 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc5' # 0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc7' # 0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xd1' # 0x69 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xa6' # 0x6A -> BROKEN BAR
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\xf8' # 0x70 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xc9' # 0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xcd' # 0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xcc' # 0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'`' # 0x79 -> GRAVE ACCENT
|
||||
':' # 0x7A -> COLON
|
||||
'#' # 0x7B -> NUMBER SIGN
|
||||
'@' # 0x7C -> COMMERCIAL AT
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'"' # 0x7F -> QUOTATION MARK
|
||||
'\xd8' # 0x80 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\xab' # 0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xf0' # 0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
|
||||
'\xfd' # 0x8D -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
|
||||
'\xb1' # 0x8F -> PLUS-MINUS SIGN
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\xaa' # 0x9A -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x9B -> MASCULINE ORDINAL INDICATOR
|
||||
'\xe6' # 0x9C -> LATIN SMALL LIGATURE AE
|
||||
'\xb8' # 0x9D -> CEDILLA
|
||||
'\xc6' # 0x9E -> LATIN CAPITAL LIGATURE AE
|
||||
'\xa4' # 0x9F -> CURRENCY SIGN
|
||||
'\xb5' # 0xA0 -> MICRO SIGN
|
||||
'~' # 0xA1 -> TILDE
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\xa1' # 0xAA -> INVERTED EXCLAMATION MARK
|
||||
'\xbf' # 0xAB -> INVERTED QUESTION MARK
|
||||
'\xd0' # 0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
|
||||
'\xdd' # 0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
|
||||
'\xae' # 0xAF -> REGISTERED SIGN
|
||||
'\xa2' # 0xB0 -> CENT SIGN
|
||||
'\xa3' # 0xB1 -> POUND SIGN
|
||||
'\xa5' # 0xB2 -> YEN SIGN
|
||||
'\xb7' # 0xB3 -> MIDDLE DOT
|
||||
'\xa9' # 0xB4 -> COPYRIGHT SIGN
|
||||
'\xa7' # 0xB5 -> SECTION SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xbc' # 0xB7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xB8 -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xB9 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xac' # 0xBA -> NOT SIGN
|
||||
'|' # 0xBB -> VERTICAL LINE
|
||||
'\xaf' # 0xBC -> MACRON
|
||||
'\xa8' # 0xBD -> DIAERESIS
|
||||
'\xb4' # 0xBE -> ACUTE ACCENT
|
||||
'\xd7' # 0xBF -> MULTIPLICATION SIGN
|
||||
'{' # 0xC0 -> LEFT CURLY BRACKET
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\xf4' # 0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0xCD -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xCE -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf5' # 0xCF -> LATIN SMALL LETTER O WITH TILDE
|
||||
'}' # 0xD0 -> RIGHT CURLY BRACKET
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb9' # 0xDA -> SUPERSCRIPT ONE
|
||||
'\xfb' # 0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xf9' # 0xDD -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xDE -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xff' # 0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\\' # 0xE0 -> REVERSE SOLIDUS
|
||||
'\xf7' # 0xE1 -> DIVISION SIGN
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\xd4' # 0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd6' # 0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd2' # 0xED -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd5' # 0xEF -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\xdb' # 0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xd9' # 0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\x9f' # 0xFF -> CONTROL
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,43 @@
|
||||
"""
|
||||
Code page 65001: Windows UTF-8 (CP_UTF8).
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import functools
|
||||
|
||||
if not hasattr(codecs, 'code_page_encode'):
|
||||
raise LookupError("cp65001 encoding is only available on Windows")
|
||||
|
||||
### Codec APIs
|
||||
|
||||
encode = functools.partial(codecs.code_page_encode, 65001)
|
||||
_decode = functools.partial(codecs.code_page_decode, 65001)
|
||||
|
||||
def decode(input, errors='strict'):
|
||||
return codecs.code_page_decode(65001, input, errors, True)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return encode(input, self.errors)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
|
||||
_buffer_decode = _decode
|
||||
|
||||
class StreamWriter(codecs.StreamWriter):
|
||||
encode = encode
|
||||
|
||||
class StreamReader(codecs.StreamReader):
|
||||
decode = _decode
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp65001',
|
||||
encode=encode,
|
||||
decode=decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,309 @@
|
||||
"""Python Character Mapping Codec cp720 generated on Windows:
|
||||
Vista 6.0.6002 SP2 Multiprocessor Free with the command:
|
||||
python Tools/unicode/genwincodec.py 720
|
||||
"""#"
|
||||
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp720',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> CONTROL CHARACTER
|
||||
'\x01' # 0x01 -> CONTROL CHARACTER
|
||||
'\x02' # 0x02 -> CONTROL CHARACTER
|
||||
'\x03' # 0x03 -> CONTROL CHARACTER
|
||||
'\x04' # 0x04 -> CONTROL CHARACTER
|
||||
'\x05' # 0x05 -> CONTROL CHARACTER
|
||||
'\x06' # 0x06 -> CONTROL CHARACTER
|
||||
'\x07' # 0x07 -> CONTROL CHARACTER
|
||||
'\x08' # 0x08 -> CONTROL CHARACTER
|
||||
'\t' # 0x09 -> CONTROL CHARACTER
|
||||
'\n' # 0x0A -> CONTROL CHARACTER
|
||||
'\x0b' # 0x0B -> CONTROL CHARACTER
|
||||
'\x0c' # 0x0C -> CONTROL CHARACTER
|
||||
'\r' # 0x0D -> CONTROL CHARACTER
|
||||
'\x0e' # 0x0E -> CONTROL CHARACTER
|
||||
'\x0f' # 0x0F -> CONTROL CHARACTER
|
||||
'\x10' # 0x10 -> CONTROL CHARACTER
|
||||
'\x11' # 0x11 -> CONTROL CHARACTER
|
||||
'\x12' # 0x12 -> CONTROL CHARACTER
|
||||
'\x13' # 0x13 -> CONTROL CHARACTER
|
||||
'\x14' # 0x14 -> CONTROL CHARACTER
|
||||
'\x15' # 0x15 -> CONTROL CHARACTER
|
||||
'\x16' # 0x16 -> CONTROL CHARACTER
|
||||
'\x17' # 0x17 -> CONTROL CHARACTER
|
||||
'\x18' # 0x18 -> CONTROL CHARACTER
|
||||
'\x19' # 0x19 -> CONTROL CHARACTER
|
||||
'\x1a' # 0x1A -> CONTROL CHARACTER
|
||||
'\x1b' # 0x1B -> CONTROL CHARACTER
|
||||
'\x1c' # 0x1C -> CONTROL CHARACTER
|
||||
'\x1d' # 0x1D -> CONTROL CHARACTER
|
||||
'\x1e' # 0x1E -> CONTROL CHARACTER
|
||||
'\x1f' # 0x1F -> CONTROL CHARACTER
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> CONTROL CHARACTER
|
||||
'\x80'
|
||||
'\x81'
|
||||
'\xe9' # 0x82 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x83 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\x84'
|
||||
'\xe0' # 0x85 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\x86'
|
||||
'\xe7' # 0x87 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x88 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x89 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x8A -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x8B -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x8C -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\x8d'
|
||||
'\x8e'
|
||||
'\x8f'
|
||||
'\x90'
|
||||
'\u0651' # 0x91 -> ARABIC SHADDA
|
||||
'\u0652' # 0x92 -> ARABIC SUKUN
|
||||
'\xf4' # 0x93 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xa4' # 0x94 -> CURRENCY SIGN
|
||||
'\u0640' # 0x95 -> ARABIC TATWEEL
|
||||
'\xfb' # 0x96 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x97 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\u0621' # 0x98 -> ARABIC LETTER HAMZA
|
||||
'\u0622' # 0x99 -> ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
'\u0623' # 0x9A -> ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
'\u0624' # 0x9B -> ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
'\xa3' # 0x9C -> POUND SIGN
|
||||
'\u0625' # 0x9D -> ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
'\u0626' # 0x9E -> ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
'\u0627' # 0x9F -> ARABIC LETTER ALEF
|
||||
'\u0628' # 0xA0 -> ARABIC LETTER BEH
|
||||
'\u0629' # 0xA1 -> ARABIC LETTER TEH MARBUTA
|
||||
'\u062a' # 0xA2 -> ARABIC LETTER TEH
|
||||
'\u062b' # 0xA3 -> ARABIC LETTER THEH
|
||||
'\u062c' # 0xA4 -> ARABIC LETTER JEEM
|
||||
'\u062d' # 0xA5 -> ARABIC LETTER HAH
|
||||
'\u062e' # 0xA6 -> ARABIC LETTER KHAH
|
||||
'\u062f' # 0xA7 -> ARABIC LETTER DAL
|
||||
'\u0630' # 0xA8 -> ARABIC LETTER THAL
|
||||
'\u0631' # 0xA9 -> ARABIC LETTER REH
|
||||
'\u0632' # 0xAA -> ARABIC LETTER ZAIN
|
||||
'\u0633' # 0xAB -> ARABIC LETTER SEEN
|
||||
'\u0634' # 0xAC -> ARABIC LETTER SHEEN
|
||||
'\u0635' # 0xAD -> ARABIC LETTER SAD
|
||||
'\xab' # 0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0xB0 -> LIGHT SHADE
|
||||
'\u2592' # 0xB1 -> MEDIUM SHADE
|
||||
'\u2593' # 0xB2 -> DARK SHADE
|
||||
'\u2502' # 0xB3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0xB5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0xB6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0xB7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0xB8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0xBA -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0xBD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0xBE -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0xC6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0xC7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0xCF -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0xD0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0xD1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0xD2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0xD3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0xD4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0xD5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0xD6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0xD7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0xD8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0xDB -> FULL BLOCK
|
||||
'\u2584' # 0xDC -> LOWER HALF BLOCK
|
||||
'\u258c' # 0xDD -> LEFT HALF BLOCK
|
||||
'\u2590' # 0xDE -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0xDF -> UPPER HALF BLOCK
|
||||
'\u0636' # 0xE0 -> ARABIC LETTER DAD
|
||||
'\u0637' # 0xE1 -> ARABIC LETTER TAH
|
||||
'\u0638' # 0xE2 -> ARABIC LETTER ZAH
|
||||
'\u0639' # 0xE3 -> ARABIC LETTER AIN
|
||||
'\u063a' # 0xE4 -> ARABIC LETTER GHAIN
|
||||
'\u0641' # 0xE5 -> ARABIC LETTER FEH
|
||||
'\xb5' # 0xE6 -> MICRO SIGN
|
||||
'\u0642' # 0xE7 -> ARABIC LETTER QAF
|
||||
'\u0643' # 0xE8 -> ARABIC LETTER KAF
|
||||
'\u0644' # 0xE9 -> ARABIC LETTER LAM
|
||||
'\u0645' # 0xEA -> ARABIC LETTER MEEM
|
||||
'\u0646' # 0xEB -> ARABIC LETTER NOON
|
||||
'\u0647' # 0xEC -> ARABIC LETTER HEH
|
||||
'\u0648' # 0xED -> ARABIC LETTER WAW
|
||||
'\u0649' # 0xEE -> ARABIC LETTER ALEF MAKSURA
|
||||
'\u064a' # 0xEF -> ARABIC LETTER YEH
|
||||
'\u2261' # 0xF0 -> IDENTICAL TO
|
||||
'\u064b' # 0xF1 -> ARABIC FATHATAN
|
||||
'\u064c' # 0xF2 -> ARABIC DAMMATAN
|
||||
'\u064d' # 0xF3 -> ARABIC KASRATAN
|
||||
'\u064e' # 0xF4 -> ARABIC FATHA
|
||||
'\u064f' # 0xF5 -> ARABIC DAMMA
|
||||
'\u0650' # 0xF6 -> ARABIC KASRA
|
||||
'\u2248' # 0xF7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0xF8 -> DEGREE SIGN
|
||||
'\u2219' # 0xF9 -> BULLET OPERATOR
|
||||
'\xb7' # 0xFA -> MIDDLE DOT
|
||||
'\u221a' # 0xFB -> SQUARE ROOT
|
||||
'\u207f' # 0xFC -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0xFD -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0xFE -> BLACK SQUARE
|
||||
'\xa0' # 0xFF -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec cp737 generated from 'VENDORS/MICSFT/PC/CP737.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp737',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x0391, # GREEK CAPITAL LETTER ALPHA
|
||||
0x0081: 0x0392, # GREEK CAPITAL LETTER BETA
|
||||
0x0082: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0083: 0x0394, # GREEK CAPITAL LETTER DELTA
|
||||
0x0084: 0x0395, # GREEK CAPITAL LETTER EPSILON
|
||||
0x0085: 0x0396, # GREEK CAPITAL LETTER ZETA
|
||||
0x0086: 0x0397, # GREEK CAPITAL LETTER ETA
|
||||
0x0087: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x0088: 0x0399, # GREEK CAPITAL LETTER IOTA
|
||||
0x0089: 0x039a, # GREEK CAPITAL LETTER KAPPA
|
||||
0x008a: 0x039b, # GREEK CAPITAL LETTER LAMDA
|
||||
0x008b: 0x039c, # GREEK CAPITAL LETTER MU
|
||||
0x008c: 0x039d, # GREEK CAPITAL LETTER NU
|
||||
0x008d: 0x039e, # GREEK CAPITAL LETTER XI
|
||||
0x008e: 0x039f, # GREEK CAPITAL LETTER OMICRON
|
||||
0x008f: 0x03a0, # GREEK CAPITAL LETTER PI
|
||||
0x0090: 0x03a1, # GREEK CAPITAL LETTER RHO
|
||||
0x0091: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x0092: 0x03a4, # GREEK CAPITAL LETTER TAU
|
||||
0x0093: 0x03a5, # GREEK CAPITAL LETTER UPSILON
|
||||
0x0094: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x0095: 0x03a7, # GREEK CAPITAL LETTER CHI
|
||||
0x0096: 0x03a8, # GREEK CAPITAL LETTER PSI
|
||||
0x0097: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x0098: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x0099: 0x03b2, # GREEK SMALL LETTER BETA
|
||||
0x009a: 0x03b3, # GREEK SMALL LETTER GAMMA
|
||||
0x009b: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x009c: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x009d: 0x03b6, # GREEK SMALL LETTER ZETA
|
||||
0x009e: 0x03b7, # GREEK SMALL LETTER ETA
|
||||
0x009f: 0x03b8, # GREEK SMALL LETTER THETA
|
||||
0x00a0: 0x03b9, # GREEK SMALL LETTER IOTA
|
||||
0x00a1: 0x03ba, # GREEK SMALL LETTER KAPPA
|
||||
0x00a2: 0x03bb, # GREEK SMALL LETTER LAMDA
|
||||
0x00a3: 0x03bc, # GREEK SMALL LETTER MU
|
||||
0x00a4: 0x03bd, # GREEK SMALL LETTER NU
|
||||
0x00a5: 0x03be, # GREEK SMALL LETTER XI
|
||||
0x00a6: 0x03bf, # GREEK SMALL LETTER OMICRON
|
||||
0x00a7: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00a8: 0x03c1, # GREEK SMALL LETTER RHO
|
||||
0x00a9: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00aa: 0x03c2, # GREEK SMALL LETTER FINAL SIGMA
|
||||
0x00ab: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00ac: 0x03c5, # GREEK SMALL LETTER UPSILON
|
||||
0x00ad: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ae: 0x03c7, # GREEK SMALL LETTER CHI
|
||||
0x00af: 0x03c8, # GREEK SMALL LETTER PSI
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03c9, # GREEK SMALL LETTER OMEGA
|
||||
0x00e1: 0x03ac, # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0x00e2: 0x03ad, # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0x00e3: 0x03ae, # GREEK SMALL LETTER ETA WITH TONOS
|
||||
0x00e4: 0x03ca, # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0x00e5: 0x03af, # GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0x00e6: 0x03cc, # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0x00e7: 0x03cd, # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0x00e8: 0x03cb, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0x00e9: 0x03ce, # GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0x00ea: 0x0386, # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0x00eb: 0x0388, # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0x00ec: 0x0389, # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0x00ed: 0x038a, # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0x00ee: 0x038c, # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0x00ef: 0x038e, # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0x00f0: 0x038f, # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x03aa, # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0x00f5: 0x03ab, # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\u0391' # 0x0080 -> GREEK CAPITAL LETTER ALPHA
|
||||
'\u0392' # 0x0081 -> GREEK CAPITAL LETTER BETA
|
||||
'\u0393' # 0x0082 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u0394' # 0x0083 -> GREEK CAPITAL LETTER DELTA
|
||||
'\u0395' # 0x0084 -> GREEK CAPITAL LETTER EPSILON
|
||||
'\u0396' # 0x0085 -> GREEK CAPITAL LETTER ZETA
|
||||
'\u0397' # 0x0086 -> GREEK CAPITAL LETTER ETA
|
||||
'\u0398' # 0x0087 -> GREEK CAPITAL LETTER THETA
|
||||
'\u0399' # 0x0088 -> GREEK CAPITAL LETTER IOTA
|
||||
'\u039a' # 0x0089 -> GREEK CAPITAL LETTER KAPPA
|
||||
'\u039b' # 0x008a -> GREEK CAPITAL LETTER LAMDA
|
||||
'\u039c' # 0x008b -> GREEK CAPITAL LETTER MU
|
||||
'\u039d' # 0x008c -> GREEK CAPITAL LETTER NU
|
||||
'\u039e' # 0x008d -> GREEK CAPITAL LETTER XI
|
||||
'\u039f' # 0x008e -> GREEK CAPITAL LETTER OMICRON
|
||||
'\u03a0' # 0x008f -> GREEK CAPITAL LETTER PI
|
||||
'\u03a1' # 0x0090 -> GREEK CAPITAL LETTER RHO
|
||||
'\u03a3' # 0x0091 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03a4' # 0x0092 -> GREEK CAPITAL LETTER TAU
|
||||
'\u03a5' # 0x0093 -> GREEK CAPITAL LETTER UPSILON
|
||||
'\u03a6' # 0x0094 -> GREEK CAPITAL LETTER PHI
|
||||
'\u03a7' # 0x0095 -> GREEK CAPITAL LETTER CHI
|
||||
'\u03a8' # 0x0096 -> GREEK CAPITAL LETTER PSI
|
||||
'\u03a9' # 0x0097 -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b1' # 0x0098 -> GREEK SMALL LETTER ALPHA
|
||||
'\u03b2' # 0x0099 -> GREEK SMALL LETTER BETA
|
||||
'\u03b3' # 0x009a -> GREEK SMALL LETTER GAMMA
|
||||
'\u03b4' # 0x009b -> GREEK SMALL LETTER DELTA
|
||||
'\u03b5' # 0x009c -> GREEK SMALL LETTER EPSILON
|
||||
'\u03b6' # 0x009d -> GREEK SMALL LETTER ZETA
|
||||
'\u03b7' # 0x009e -> GREEK SMALL LETTER ETA
|
||||
'\u03b8' # 0x009f -> GREEK SMALL LETTER THETA
|
||||
'\u03b9' # 0x00a0 -> GREEK SMALL LETTER IOTA
|
||||
'\u03ba' # 0x00a1 -> GREEK SMALL LETTER KAPPA
|
||||
'\u03bb' # 0x00a2 -> GREEK SMALL LETTER LAMDA
|
||||
'\u03bc' # 0x00a3 -> GREEK SMALL LETTER MU
|
||||
'\u03bd' # 0x00a4 -> GREEK SMALL LETTER NU
|
||||
'\u03be' # 0x00a5 -> GREEK SMALL LETTER XI
|
||||
'\u03bf' # 0x00a6 -> GREEK SMALL LETTER OMICRON
|
||||
'\u03c0' # 0x00a7 -> GREEK SMALL LETTER PI
|
||||
'\u03c1' # 0x00a8 -> GREEK SMALL LETTER RHO
|
||||
'\u03c3' # 0x00a9 -> GREEK SMALL LETTER SIGMA
|
||||
'\u03c2' # 0x00aa -> GREEK SMALL LETTER FINAL SIGMA
|
||||
'\u03c4' # 0x00ab -> GREEK SMALL LETTER TAU
|
||||
'\u03c5' # 0x00ac -> GREEK SMALL LETTER UPSILON
|
||||
'\u03c6' # 0x00ad -> GREEK SMALL LETTER PHI
|
||||
'\u03c7' # 0x00ae -> GREEK SMALL LETTER CHI
|
||||
'\u03c8' # 0x00af -> GREEK SMALL LETTER PSI
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03c9' # 0x00e0 -> GREEK SMALL LETTER OMEGA
|
||||
'\u03ac' # 0x00e1 -> GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
'\u03ad' # 0x00e2 -> GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
'\u03ae' # 0x00e3 -> GREEK SMALL LETTER ETA WITH TONOS
|
||||
'\u03ca' # 0x00e4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03af' # 0x00e5 -> GREEK SMALL LETTER IOTA WITH TONOS
|
||||
'\u03cc' # 0x00e6 -> GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
'\u03cd' # 0x00e7 -> GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
'\u03cb' # 0x00e8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03ce' # 0x00e9 -> GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
'\u0386' # 0x00ea -> GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
'\u0388' # 0x00eb -> GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
'\u0389' # 0x00ec -> GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
'\u038a' # 0x00ed -> GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
'\u038c' # 0x00ee -> GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
'\u038e' # 0x00ef -> GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
'\u038f' # 0x00f0 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u03aa' # 0x00f4 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03ab' # 0x00f5 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x0386: 0x00ea, # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0x0388: 0x00eb, # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0x0389: 0x00ec, # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0x038a: 0x00ed, # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0x038c: 0x00ee, # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0x038e: 0x00ef, # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0x038f: 0x00f0, # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0x0391: 0x0080, # GREEK CAPITAL LETTER ALPHA
|
||||
0x0392: 0x0081, # GREEK CAPITAL LETTER BETA
|
||||
0x0393: 0x0082, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0394: 0x0083, # GREEK CAPITAL LETTER DELTA
|
||||
0x0395: 0x0084, # GREEK CAPITAL LETTER EPSILON
|
||||
0x0396: 0x0085, # GREEK CAPITAL LETTER ZETA
|
||||
0x0397: 0x0086, # GREEK CAPITAL LETTER ETA
|
||||
0x0398: 0x0087, # GREEK CAPITAL LETTER THETA
|
||||
0x0399: 0x0088, # GREEK CAPITAL LETTER IOTA
|
||||
0x039a: 0x0089, # GREEK CAPITAL LETTER KAPPA
|
||||
0x039b: 0x008a, # GREEK CAPITAL LETTER LAMDA
|
||||
0x039c: 0x008b, # GREEK CAPITAL LETTER MU
|
||||
0x039d: 0x008c, # GREEK CAPITAL LETTER NU
|
||||
0x039e: 0x008d, # GREEK CAPITAL LETTER XI
|
||||
0x039f: 0x008e, # GREEK CAPITAL LETTER OMICRON
|
||||
0x03a0: 0x008f, # GREEK CAPITAL LETTER PI
|
||||
0x03a1: 0x0090, # GREEK CAPITAL LETTER RHO
|
||||
0x03a3: 0x0091, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a4: 0x0092, # GREEK CAPITAL LETTER TAU
|
||||
0x03a5: 0x0093, # GREEK CAPITAL LETTER UPSILON
|
||||
0x03a6: 0x0094, # GREEK CAPITAL LETTER PHI
|
||||
0x03a7: 0x0095, # GREEK CAPITAL LETTER CHI
|
||||
0x03a8: 0x0096, # GREEK CAPITAL LETTER PSI
|
||||
0x03a9: 0x0097, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03aa: 0x00f4, # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0x03ab: 0x00f5, # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0x03ac: 0x00e1, # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0x03ad: 0x00e2, # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0x03ae: 0x00e3, # GREEK SMALL LETTER ETA WITH TONOS
|
||||
0x03af: 0x00e5, # GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0x03b1: 0x0098, # GREEK SMALL LETTER ALPHA
|
||||
0x03b2: 0x0099, # GREEK SMALL LETTER BETA
|
||||
0x03b3: 0x009a, # GREEK SMALL LETTER GAMMA
|
||||
0x03b4: 0x009b, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x009c, # GREEK SMALL LETTER EPSILON
|
||||
0x03b6: 0x009d, # GREEK SMALL LETTER ZETA
|
||||
0x03b7: 0x009e, # GREEK SMALL LETTER ETA
|
||||
0x03b8: 0x009f, # GREEK SMALL LETTER THETA
|
||||
0x03b9: 0x00a0, # GREEK SMALL LETTER IOTA
|
||||
0x03ba: 0x00a1, # GREEK SMALL LETTER KAPPA
|
||||
0x03bb: 0x00a2, # GREEK SMALL LETTER LAMDA
|
||||
0x03bc: 0x00a3, # GREEK SMALL LETTER MU
|
||||
0x03bd: 0x00a4, # GREEK SMALL LETTER NU
|
||||
0x03be: 0x00a5, # GREEK SMALL LETTER XI
|
||||
0x03bf: 0x00a6, # GREEK SMALL LETTER OMICRON
|
||||
0x03c0: 0x00a7, # GREEK SMALL LETTER PI
|
||||
0x03c1: 0x00a8, # GREEK SMALL LETTER RHO
|
||||
0x03c2: 0x00aa, # GREEK SMALL LETTER FINAL SIGMA
|
||||
0x03c3: 0x00a9, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00ab, # GREEK SMALL LETTER TAU
|
||||
0x03c5: 0x00ac, # GREEK SMALL LETTER UPSILON
|
||||
0x03c6: 0x00ad, # GREEK SMALL LETTER PHI
|
||||
0x03c7: 0x00ae, # GREEK SMALL LETTER CHI
|
||||
0x03c8: 0x00af, # GREEK SMALL LETTER PSI
|
||||
0x03c9: 0x00e0, # GREEK SMALL LETTER OMEGA
|
||||
0x03ca: 0x00e4, # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0x03cb: 0x00e8, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0x03cc: 0x00e6, # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0x03cd: 0x00e7, # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0x03ce: 0x00e9, # GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,697 @@
|
||||
""" Python Character Mapping Codec cp775 generated from 'VENDORS/MICSFT/PC/CP775.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp775',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x0106, # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x0101, # LATIN SMALL LETTER A WITH MACRON
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x0123, # LATIN SMALL LETTER G WITH CEDILLA
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x0107, # LATIN SMALL LETTER C WITH ACUTE
|
||||
0x0088: 0x0142, # LATIN SMALL LETTER L WITH STROKE
|
||||
0x0089: 0x0113, # LATIN SMALL LETTER E WITH MACRON
|
||||
0x008a: 0x0156, # LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0x008b: 0x0157, # LATIN SMALL LETTER R WITH CEDILLA
|
||||
0x008c: 0x012b, # LATIN SMALL LETTER I WITH MACRON
|
||||
0x008d: 0x0179, # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x014d, # LATIN SMALL LETTER O WITH MACRON
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x0122, # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0x0096: 0x00a2, # CENT SIGN
|
||||
0x0097: 0x015a, # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x0098: 0x015b, # LATIN SMALL LETTER S WITH ACUTE
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x009e: 0x00d7, # MULTIPLICATION SIGN
|
||||
0x009f: 0x00a4, # CURRENCY SIGN
|
||||
0x00a0: 0x0100, # LATIN CAPITAL LETTER A WITH MACRON
|
||||
0x00a1: 0x012a, # LATIN CAPITAL LETTER I WITH MACRON
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x017b, # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0x00a4: 0x017c, # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0x00a5: 0x017a, # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0x00a6: 0x201d, # RIGHT DOUBLE QUOTATION MARK
|
||||
0x00a7: 0x00a6, # BROKEN BAR
|
||||
0x00a8: 0x00a9, # COPYRIGHT SIGN
|
||||
0x00a9: 0x00ae, # REGISTERED SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x0141, # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x0104, # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0x00b6: 0x010c, # LATIN CAPITAL LETTER C WITH CARON
|
||||
0x00b7: 0x0118, # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0x00b8: 0x0116, # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x012e, # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0x00be: 0x0160, # LATIN CAPITAL LETTER S WITH CARON
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x0172, # LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0x00c7: 0x016a, # LATIN CAPITAL LETTER U WITH MACRON
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x017d, # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x00d0: 0x0105, # LATIN SMALL LETTER A WITH OGONEK
|
||||
0x00d1: 0x010d, # LATIN SMALL LETTER C WITH CARON
|
||||
0x00d2: 0x0119, # LATIN SMALL LETTER E WITH OGONEK
|
||||
0x00d3: 0x0117, # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0x00d4: 0x012f, # LATIN SMALL LETTER I WITH OGONEK
|
||||
0x00d5: 0x0161, # LATIN SMALL LETTER S WITH CARON
|
||||
0x00d6: 0x0173, # LATIN SMALL LETTER U WITH OGONEK
|
||||
0x00d7: 0x016b, # LATIN SMALL LETTER U WITH MACRON
|
||||
0x00d8: 0x017e, # LATIN SMALL LETTER Z WITH CARON
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0x00e2: 0x014c, # LATIN CAPITAL LETTER O WITH MACRON
|
||||
0x00e3: 0x0143, # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0x00e4: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00e5: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x0144, # LATIN SMALL LETTER N WITH ACUTE
|
||||
0x00e8: 0x0136, # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0x00e9: 0x0137, # LATIN SMALL LETTER K WITH CEDILLA
|
||||
0x00ea: 0x013b, # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0x00eb: 0x013c, # LATIN SMALL LETTER L WITH CEDILLA
|
||||
0x00ec: 0x0146, # LATIN SMALL LETTER N WITH CEDILLA
|
||||
0x00ed: 0x0112, # LATIN CAPITAL LETTER E WITH MACRON
|
||||
0x00ee: 0x0145, # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0x00ef: 0x2019, # RIGHT SINGLE QUOTATION MARK
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x201c, # LEFT DOUBLE QUOTATION MARK
|
||||
0x00f3: 0x00be, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00f4: 0x00b6, # PILCROW SIGN
|
||||
0x00f5: 0x00a7, # SECTION SIGN
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x201e, # DOUBLE LOW-9 QUOTATION MARK
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x00b9, # SUPERSCRIPT ONE
|
||||
0x00fc: 0x00b3, # SUPERSCRIPT THREE
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\u0106' # 0x0080 -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u0101' # 0x0083 -> LATIN SMALL LETTER A WITH MACRON
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\u0123' # 0x0085 -> LATIN SMALL LETTER G WITH CEDILLA
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\u0107' # 0x0087 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\u0142' # 0x0088 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\u0113' # 0x0089 -> LATIN SMALL LETTER E WITH MACRON
|
||||
'\u0156' # 0x008a -> LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
'\u0157' # 0x008b -> LATIN SMALL LETTER R WITH CEDILLA
|
||||
'\u012b' # 0x008c -> LATIN SMALL LETTER I WITH MACRON
|
||||
'\u0179' # 0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\u014d' # 0x0093 -> LATIN SMALL LETTER O WITH MACRON
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\u0122' # 0x0095 -> LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
'\xa2' # 0x0096 -> CENT SIGN
|
||||
'\u015a' # 0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\u015b' # 0x0098 -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xf8' # 0x009b -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd8' # 0x009d -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd7' # 0x009e -> MULTIPLICATION SIGN
|
||||
'\xa4' # 0x009f -> CURRENCY SIGN
|
||||
'\u0100' # 0x00a0 -> LATIN CAPITAL LETTER A WITH MACRON
|
||||
'\u012a' # 0x00a1 -> LATIN CAPITAL LETTER I WITH MACRON
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\u017b' # 0x00a3 -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\u017c' # 0x00a4 -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\u017a' # 0x00a5 -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\u201d' # 0x00a6 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\xa6' # 0x00a7 -> BROKEN BAR
|
||||
'\xa9' # 0x00a8 -> COPYRIGHT SIGN
|
||||
'\xae' # 0x00a9 -> REGISTERED SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\u0141' # 0x00ad -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u0104' # 0x00b5 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u010c' # 0x00b6 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\u0118' # 0x00b7 -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\u0116' # 0x00b8 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u012e' # 0x00bd -> LATIN CAPITAL LETTER I WITH OGONEK
|
||||
'\u0160' # 0x00be -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u0172' # 0x00c6 -> LATIN CAPITAL LETTER U WITH OGONEK
|
||||
'\u016a' # 0x00c7 -> LATIN CAPITAL LETTER U WITH MACRON
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u017d' # 0x00cf -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\u0105' # 0x00d0 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u010d' # 0x00d1 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\u0119' # 0x00d2 -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\u0117' # 0x00d3 -> LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
'\u012f' # 0x00d4 -> LATIN SMALL LETTER I WITH OGONEK
|
||||
'\u0161' # 0x00d5 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u0173' # 0x00d6 -> LATIN SMALL LETTER U WITH OGONEK
|
||||
'\u016b' # 0x00d7 -> LATIN SMALL LETTER U WITH MACRON
|
||||
'\u017e' # 0x00d8 -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\xd3' # 0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
'\u014c' # 0x00e2 -> LATIN CAPITAL LETTER O WITH MACRON
|
||||
'\u0143' # 0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\xf5' # 0x00e4 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xd5' # 0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u0144' # 0x00e7 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\u0136' # 0x00e8 -> LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
'\u0137' # 0x00e9 -> LATIN SMALL LETTER K WITH CEDILLA
|
||||
'\u013b' # 0x00ea -> LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
'\u013c' # 0x00eb -> LATIN SMALL LETTER L WITH CEDILLA
|
||||
'\u0146' # 0x00ec -> LATIN SMALL LETTER N WITH CEDILLA
|
||||
'\u0112' # 0x00ed -> LATIN CAPITAL LETTER E WITH MACRON
|
||||
'\u0145' # 0x00ee -> LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
'\u2019' # 0x00ef -> RIGHT SINGLE QUOTATION MARK
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u201c' # 0x00f2 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\xbe' # 0x00f3 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xb6' # 0x00f4 -> PILCROW SIGN
|
||||
'\xa7' # 0x00f5 -> SECTION SIGN
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u201e' # 0x00f7 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\xb9' # 0x00fb -> SUPERSCRIPT ONE
|
||||
'\xb3' # 0x00fc -> SUPERSCRIPT THREE
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a2: 0x0096, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a4: 0x009f, # CURRENCY SIGN
|
||||
0x00a6: 0x00a7, # BROKEN BAR
|
||||
0x00a7: 0x00f5, # SECTION SIGN
|
||||
0x00a9: 0x00a8, # COPYRIGHT SIGN
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00ae: 0x00a9, # REGISTERED SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b3: 0x00fc, # SUPERSCRIPT THREE
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b6: 0x00f4, # PILCROW SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00b9: 0x00fb, # SUPERSCRIPT ONE
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00be: 0x00f3, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00d3: 0x00e0, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d5: 0x00e5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d7: 0x009e, # MULTIPLICATION SIGN
|
||||
0x00d8: 0x009d, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f5: 0x00e4, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f8: 0x009b, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0100: 0x00a0, # LATIN CAPITAL LETTER A WITH MACRON
|
||||
0x0101: 0x0083, # LATIN SMALL LETTER A WITH MACRON
|
||||
0x0104: 0x00b5, # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0x0105: 0x00d0, # LATIN SMALL LETTER A WITH OGONEK
|
||||
0x0106: 0x0080, # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x0107: 0x0087, # LATIN SMALL LETTER C WITH ACUTE
|
||||
0x010c: 0x00b6, # LATIN CAPITAL LETTER C WITH CARON
|
||||
0x010d: 0x00d1, # LATIN SMALL LETTER C WITH CARON
|
||||
0x0112: 0x00ed, # LATIN CAPITAL LETTER E WITH MACRON
|
||||
0x0113: 0x0089, # LATIN SMALL LETTER E WITH MACRON
|
||||
0x0116: 0x00b8, # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0x0117: 0x00d3, # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0x0118: 0x00b7, # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0x0119: 0x00d2, # LATIN SMALL LETTER E WITH OGONEK
|
||||
0x0122: 0x0095, # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0x0123: 0x0085, # LATIN SMALL LETTER G WITH CEDILLA
|
||||
0x012a: 0x00a1, # LATIN CAPITAL LETTER I WITH MACRON
|
||||
0x012b: 0x008c, # LATIN SMALL LETTER I WITH MACRON
|
||||
0x012e: 0x00bd, # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0x012f: 0x00d4, # LATIN SMALL LETTER I WITH OGONEK
|
||||
0x0136: 0x00e8, # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0x0137: 0x00e9, # LATIN SMALL LETTER K WITH CEDILLA
|
||||
0x013b: 0x00ea, # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0x013c: 0x00eb, # LATIN SMALL LETTER L WITH CEDILLA
|
||||
0x0141: 0x00ad, # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0x0142: 0x0088, # LATIN SMALL LETTER L WITH STROKE
|
||||
0x0143: 0x00e3, # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0x0144: 0x00e7, # LATIN SMALL LETTER N WITH ACUTE
|
||||
0x0145: 0x00ee, # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0x0146: 0x00ec, # LATIN SMALL LETTER N WITH CEDILLA
|
||||
0x014c: 0x00e2, # LATIN CAPITAL LETTER O WITH MACRON
|
||||
0x014d: 0x0093, # LATIN SMALL LETTER O WITH MACRON
|
||||
0x0156: 0x008a, # LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0x0157: 0x008b, # LATIN SMALL LETTER R WITH CEDILLA
|
||||
0x015a: 0x0097, # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x015b: 0x0098, # LATIN SMALL LETTER S WITH ACUTE
|
||||
0x0160: 0x00be, # LATIN CAPITAL LETTER S WITH CARON
|
||||
0x0161: 0x00d5, # LATIN SMALL LETTER S WITH CARON
|
||||
0x016a: 0x00c7, # LATIN CAPITAL LETTER U WITH MACRON
|
||||
0x016b: 0x00d7, # LATIN SMALL LETTER U WITH MACRON
|
||||
0x0172: 0x00c6, # LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0x0173: 0x00d6, # LATIN SMALL LETTER U WITH OGONEK
|
||||
0x0179: 0x008d, # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x017a: 0x00a5, # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0x017b: 0x00a3, # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0x017c: 0x00a4, # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0x017d: 0x00cf, # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x017e: 0x00d8, # LATIN SMALL LETTER Z WITH CARON
|
||||
0x2019: 0x00ef, # RIGHT SINGLE QUOTATION MARK
|
||||
0x201c: 0x00f2, # LEFT DOUBLE QUOTATION MARK
|
||||
0x201d: 0x00a6, # RIGHT DOUBLE QUOTATION MARK
|
||||
0x201e: 0x00f7, # DOUBLE LOW-9 QUOTATION MARK
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP850.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp850',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x00ff, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x009e: 0x00d7, # MULTIPLICATION SIGN
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00a7: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x00ae, # REGISTERED SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00b6: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00b7: 0x00c0, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00b8: 0x00a9, # COPYRIGHT SIGN
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x00a2, # CENT SIGN
|
||||
0x00be: 0x00a5, # YEN SIGN
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x00e3, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00c7: 0x00c3, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x00a4, # CURRENCY SIGN
|
||||
0x00d0: 0x00f0, # LATIN SMALL LETTER ETH
|
||||
0x00d1: 0x00d0, # LATIN CAPITAL LETTER ETH
|
||||
0x00d2: 0x00ca, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00d3: 0x00cb, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00d4: 0x00c8, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00d5: 0x0131, # LATIN SMALL LETTER DOTLESS I
|
||||
0x00d6: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00d7: 0x00ce, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00d8: 0x00cf, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x00a6, # BROKEN BAR
|
||||
0x00de: 0x00cc, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00e3: 0x00d2, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00e4: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00e5: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x00fe, # LATIN SMALL LETTER THORN
|
||||
0x00e8: 0x00de, # LATIN CAPITAL LETTER THORN
|
||||
0x00e9: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00ea: 0x00db, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00eb: 0x00d9, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00ec: 0x00fd, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x00ed: 0x00dd, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00ee: 0x00af, # MACRON
|
||||
0x00ef: 0x00b4, # ACUTE ACCENT
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2017, # DOUBLE LOW LINE
|
||||
0x00f3: 0x00be, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00f4: 0x00b6, # PILCROW SIGN
|
||||
0x00f5: 0x00a7, # SECTION SIGN
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x00b8, # CEDILLA
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x00a8, # DIAERESIS
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x00b9, # SUPERSCRIPT ONE
|
||||
0x00fc: 0x00b3, # SUPERSCRIPT THREE
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xec' # 0x008d -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0x0095 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xff' # 0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xf8' # 0x009b -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd8' # 0x009d -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd7' # 0x009e -> MULTIPLICATION SIGN
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xaa' # 0x00a6 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x00a7 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\xae' # 0x00a9 -> REGISTERED SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\xc1' # 0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc0' # 0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xa9' # 0x00b8 -> COPYRIGHT SIGN
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\xa2' # 0x00bd -> CENT SIGN
|
||||
'\xa5' # 0x00be -> YEN SIGN
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\xe3' # 0x00c6 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xc3' # 0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa4' # 0x00cf -> CURRENCY SIGN
|
||||
'\xf0' # 0x00d0 -> LATIN SMALL LETTER ETH
|
||||
'\xd0' # 0x00d1 -> LATIN CAPITAL LETTER ETH
|
||||
'\xca' # 0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\u0131' # 0x00d5 -> LATIN SMALL LETTER DOTLESS I
|
||||
'\xcd' # 0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\xa6' # 0x00dd -> BROKEN BAR
|
||||
'\xcc' # 0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\xd3' # 0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\xd4' # 0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd2' # 0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xf5' # 0x00e4 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xd5' # 0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\xfe' # 0x00e7 -> LATIN SMALL LETTER THORN
|
||||
'\xde' # 0x00e8 -> LATIN CAPITAL LETTER THORN
|
||||
'\xda' # 0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xd9' # 0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xfd' # 0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xdd' # 0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xaf' # 0x00ee -> MACRON
|
||||
'\xb4' # 0x00ef -> ACUTE ACCENT
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2017' # 0x00f2 -> DOUBLE LOW LINE
|
||||
'\xbe' # 0x00f3 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xb6' # 0x00f4 -> PILCROW SIGN
|
||||
'\xa7' # 0x00f5 -> SECTION SIGN
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\xb8' # 0x00f7 -> CEDILLA
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\xa8' # 0x00f9 -> DIAERESIS
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\xb9' # 0x00fb -> SUPERSCRIPT ONE
|
||||
'\xb3' # 0x00fc -> SUPERSCRIPT THREE
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a2: 0x00bd, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a4: 0x00cf, # CURRENCY SIGN
|
||||
0x00a5: 0x00be, # YEN SIGN
|
||||
0x00a6: 0x00dd, # BROKEN BAR
|
||||
0x00a7: 0x00f5, # SECTION SIGN
|
||||
0x00a8: 0x00f9, # DIAERESIS
|
||||
0x00a9: 0x00b8, # COPYRIGHT SIGN
|
||||
0x00aa: 0x00a6, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00ae: 0x00a9, # REGISTERED SIGN
|
||||
0x00af: 0x00ee, # MACRON
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b3: 0x00fc, # SUPERSCRIPT THREE
|
||||
0x00b4: 0x00ef, # ACUTE ACCENT
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b6: 0x00f4, # PILCROW SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00b8: 0x00f7, # CEDILLA
|
||||
0x00b9: 0x00fb, # SUPERSCRIPT ONE
|
||||
0x00ba: 0x00a7, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00be: 0x00f3, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c0: 0x00b7, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00c1: 0x00b5, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00c2: 0x00b6, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00c3: 0x00c7, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c8: 0x00d4, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00ca: 0x00d2, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00cb: 0x00d3, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00cc: 0x00de, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00cd: 0x00d6, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00ce: 0x00d7, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00cf: 0x00d8, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d0: 0x00d1, # LATIN CAPITAL LETTER ETH
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00d2: 0x00e3, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00d3: 0x00e0, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d4: 0x00e2, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00d5: 0x00e5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d7: 0x009e, # MULTIPLICATION SIGN
|
||||
0x00d8: 0x009d, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x00d9: 0x00eb, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00da: 0x00e9, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00db: 0x00ea, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00dd: 0x00ed, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00de: 0x00e8, # LATIN CAPITAL LETTER THORN
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e3: 0x00c6, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ec: 0x008d, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00ef: 0x008b, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x00f0: 0x00d0, # LATIN SMALL LETTER ETH
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f2: 0x0095, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f5: 0x00e4, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f8: 0x009b, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00fd: 0x00ec, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x00fe: 0x00e7, # LATIN SMALL LETTER THORN
|
||||
0x00ff: 0x0098, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0131: 0x00d5, # LATIN SMALL LETTER DOTLESS I
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x2017: 0x00f2, # DOUBLE LOW LINE
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP852.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp852',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x016f, # LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0x0086: 0x0107, # LATIN SMALL LETTER C WITH ACUTE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x0142, # LATIN SMALL LETTER L WITH STROKE
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x0150, # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0x008b: 0x0151, # LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x0179, # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x0106, # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x0139, # LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0x0092: 0x013a, # LATIN SMALL LETTER L WITH ACUTE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x013d, # LATIN CAPITAL LETTER L WITH CARON
|
||||
0x0096: 0x013e, # LATIN SMALL LETTER L WITH CARON
|
||||
0x0097: 0x015a, # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x0098: 0x015b, # LATIN SMALL LETTER S WITH ACUTE
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x0164, # LATIN CAPITAL LETTER T WITH CARON
|
||||
0x009c: 0x0165, # LATIN SMALL LETTER T WITH CARON
|
||||
0x009d: 0x0141, # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0x009e: 0x00d7, # MULTIPLICATION SIGN
|
||||
0x009f: 0x010d, # LATIN SMALL LETTER C WITH CARON
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x0104, # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0x00a5: 0x0105, # LATIN SMALL LETTER A WITH OGONEK
|
||||
0x00a6: 0x017d, # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x00a7: 0x017e, # LATIN SMALL LETTER Z WITH CARON
|
||||
0x00a8: 0x0118, # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0x00a9: 0x0119, # LATIN SMALL LETTER E WITH OGONEK
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x017a, # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0x00ac: 0x010c, # LATIN CAPITAL LETTER C WITH CARON
|
||||
0x00ad: 0x015f, # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00b6: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00b7: 0x011a, # LATIN CAPITAL LETTER E WITH CARON
|
||||
0x00b8: 0x015e, # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x017b, # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0x00be: 0x017c, # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x0102, # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0x00c7: 0x0103, # LATIN SMALL LETTER A WITH BREVE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x00a4, # CURRENCY SIGN
|
||||
0x00d0: 0x0111, # LATIN SMALL LETTER D WITH STROKE
|
||||
0x00d1: 0x0110, # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0x00d2: 0x010e, # LATIN CAPITAL LETTER D WITH CARON
|
||||
0x00d3: 0x00cb, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00d4: 0x010f, # LATIN SMALL LETTER D WITH CARON
|
||||
0x00d5: 0x0147, # LATIN CAPITAL LETTER N WITH CARON
|
||||
0x00d6: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00d7: 0x00ce, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00d8: 0x011b, # LATIN SMALL LETTER E WITH CARON
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x0162, # LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0x00de: 0x016e, # LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00e3: 0x0143, # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0x00e4: 0x0144, # LATIN SMALL LETTER N WITH ACUTE
|
||||
0x00e5: 0x0148, # LATIN SMALL LETTER N WITH CARON
|
||||
0x00e6: 0x0160, # LATIN CAPITAL LETTER S WITH CARON
|
||||
0x00e7: 0x0161, # LATIN SMALL LETTER S WITH CARON
|
||||
0x00e8: 0x0154, # LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0x00e9: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00ea: 0x0155, # LATIN SMALL LETTER R WITH ACUTE
|
||||
0x00eb: 0x0170, # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0x00ec: 0x00fd, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x00ed: 0x00dd, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00ee: 0x0163, # LATIN SMALL LETTER T WITH CEDILLA
|
||||
0x00ef: 0x00b4, # ACUTE ACCENT
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x02dd, # DOUBLE ACUTE ACCENT
|
||||
0x00f2: 0x02db, # OGONEK
|
||||
0x00f3: 0x02c7, # CARON
|
||||
0x00f4: 0x02d8, # BREVE
|
||||
0x00f5: 0x00a7, # SECTION SIGN
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x00b8, # CEDILLA
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x00a8, # DIAERESIS
|
||||
0x00fa: 0x02d9, # DOT ABOVE
|
||||
0x00fb: 0x0171, # LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0x00fc: 0x0158, # LATIN CAPITAL LETTER R WITH CARON
|
||||
0x00fd: 0x0159, # LATIN SMALL LETTER R WITH CARON
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\u016f' # 0x0085 -> LATIN SMALL LETTER U WITH RING ABOVE
|
||||
'\u0107' # 0x0086 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\u0142' # 0x0088 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u0150' # 0x008a -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
'\u0151' # 0x008b -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\u0179' # 0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\u0106' # 0x008f -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0139' # 0x0091 -> LATIN CAPITAL LETTER L WITH ACUTE
|
||||
'\u013a' # 0x0092 -> LATIN SMALL LETTER L WITH ACUTE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\u013d' # 0x0095 -> LATIN CAPITAL LETTER L WITH CARON
|
||||
'\u013e' # 0x0096 -> LATIN SMALL LETTER L WITH CARON
|
||||
'\u015a' # 0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\u015b' # 0x0098 -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u0164' # 0x009b -> LATIN CAPITAL LETTER T WITH CARON
|
||||
'\u0165' # 0x009c -> LATIN SMALL LETTER T WITH CARON
|
||||
'\u0141' # 0x009d -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\xd7' # 0x009e -> MULTIPLICATION SIGN
|
||||
'\u010d' # 0x009f -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\u0104' # 0x00a4 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u0105' # 0x00a5 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u017d' # 0x00a6 -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\u017e' # 0x00a7 -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u0118' # 0x00a8 -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\u0119' # 0x00a9 -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\u017a' # 0x00ab -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\u010c' # 0x00ac -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\u015f' # 0x00ad -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\xc1' # 0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\u011a' # 0x00b7 -> LATIN CAPITAL LETTER E WITH CARON
|
||||
'\u015e' # 0x00b8 -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u017b' # 0x00bd -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\u017c' # 0x00be -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u0102' # 0x00c6 -> LATIN CAPITAL LETTER A WITH BREVE
|
||||
'\u0103' # 0x00c7 -> LATIN SMALL LETTER A WITH BREVE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa4' # 0x00cf -> CURRENCY SIGN
|
||||
'\u0111' # 0x00d0 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\u0110' # 0x00d1 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\u010e' # 0x00d2 -> LATIN CAPITAL LETTER D WITH CARON
|
||||
'\xcb' # 0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\u010f' # 0x00d4 -> LATIN SMALL LETTER D WITH CARON
|
||||
'\u0147' # 0x00d5 -> LATIN CAPITAL LETTER N WITH CARON
|
||||
'\xcd' # 0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\u011b' # 0x00d8 -> LATIN SMALL LETTER E WITH CARON
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u0162' # 0x00dd -> LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
'\u016e' # 0x00de -> LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\xd3' # 0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\xd4' # 0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\u0143' # 0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\u0144' # 0x00e4 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\u0148' # 0x00e5 -> LATIN SMALL LETTER N WITH CARON
|
||||
'\u0160' # 0x00e6 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u0161' # 0x00e7 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u0154' # 0x00e8 -> LATIN CAPITAL LETTER R WITH ACUTE
|
||||
'\xda' # 0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\u0155' # 0x00ea -> LATIN SMALL LETTER R WITH ACUTE
|
||||
'\u0170' # 0x00eb -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
'\xfd' # 0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xdd' # 0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\u0163' # 0x00ee -> LATIN SMALL LETTER T WITH CEDILLA
|
||||
'\xb4' # 0x00ef -> ACUTE ACCENT
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\u02dd' # 0x00f1 -> DOUBLE ACUTE ACCENT
|
||||
'\u02db' # 0x00f2 -> OGONEK
|
||||
'\u02c7' # 0x00f3 -> CARON
|
||||
'\u02d8' # 0x00f4 -> BREVE
|
||||
'\xa7' # 0x00f5 -> SECTION SIGN
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\xb8' # 0x00f7 -> CEDILLA
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\xa8' # 0x00f9 -> DIAERESIS
|
||||
'\u02d9' # 0x00fa -> DOT ABOVE
|
||||
'\u0171' # 0x00fb -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
'\u0158' # 0x00fc -> LATIN CAPITAL LETTER R WITH CARON
|
||||
'\u0159' # 0x00fd -> LATIN SMALL LETTER R WITH CARON
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a4: 0x00cf, # CURRENCY SIGN
|
||||
0x00a7: 0x00f5, # SECTION SIGN
|
||||
0x00a8: 0x00f9, # DIAERESIS
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b4: 0x00ef, # ACUTE ACCENT
|
||||
0x00b8: 0x00f7, # CEDILLA
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00c1: 0x00b5, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00c2: 0x00b6, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00cb: 0x00d3, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00cd: 0x00d6, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00ce: 0x00d7, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00d3: 0x00e0, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d4: 0x00e2, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d7: 0x009e, # MULTIPLICATION SIGN
|
||||
0x00da: 0x00e9, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00dd: 0x00ed, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00fd: 0x00ec, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x0102: 0x00c6, # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0x0103: 0x00c7, # LATIN SMALL LETTER A WITH BREVE
|
||||
0x0104: 0x00a4, # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0x0105: 0x00a5, # LATIN SMALL LETTER A WITH OGONEK
|
||||
0x0106: 0x008f, # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x0107: 0x0086, # LATIN SMALL LETTER C WITH ACUTE
|
||||
0x010c: 0x00ac, # LATIN CAPITAL LETTER C WITH CARON
|
||||
0x010d: 0x009f, # LATIN SMALL LETTER C WITH CARON
|
||||
0x010e: 0x00d2, # LATIN CAPITAL LETTER D WITH CARON
|
||||
0x010f: 0x00d4, # LATIN SMALL LETTER D WITH CARON
|
||||
0x0110: 0x00d1, # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0x0111: 0x00d0, # LATIN SMALL LETTER D WITH STROKE
|
||||
0x0118: 0x00a8, # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0x0119: 0x00a9, # LATIN SMALL LETTER E WITH OGONEK
|
||||
0x011a: 0x00b7, # LATIN CAPITAL LETTER E WITH CARON
|
||||
0x011b: 0x00d8, # LATIN SMALL LETTER E WITH CARON
|
||||
0x0139: 0x0091, # LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0x013a: 0x0092, # LATIN SMALL LETTER L WITH ACUTE
|
||||
0x013d: 0x0095, # LATIN CAPITAL LETTER L WITH CARON
|
||||
0x013e: 0x0096, # LATIN SMALL LETTER L WITH CARON
|
||||
0x0141: 0x009d, # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0x0142: 0x0088, # LATIN SMALL LETTER L WITH STROKE
|
||||
0x0143: 0x00e3, # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0x0144: 0x00e4, # LATIN SMALL LETTER N WITH ACUTE
|
||||
0x0147: 0x00d5, # LATIN CAPITAL LETTER N WITH CARON
|
||||
0x0148: 0x00e5, # LATIN SMALL LETTER N WITH CARON
|
||||
0x0150: 0x008a, # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0x0151: 0x008b, # LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0x0154: 0x00e8, # LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0x0155: 0x00ea, # LATIN SMALL LETTER R WITH ACUTE
|
||||
0x0158: 0x00fc, # LATIN CAPITAL LETTER R WITH CARON
|
||||
0x0159: 0x00fd, # LATIN SMALL LETTER R WITH CARON
|
||||
0x015a: 0x0097, # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x015b: 0x0098, # LATIN SMALL LETTER S WITH ACUTE
|
||||
0x015e: 0x00b8, # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0x015f: 0x00ad, # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0x0160: 0x00e6, # LATIN CAPITAL LETTER S WITH CARON
|
||||
0x0161: 0x00e7, # LATIN SMALL LETTER S WITH CARON
|
||||
0x0162: 0x00dd, # LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0x0163: 0x00ee, # LATIN SMALL LETTER T WITH CEDILLA
|
||||
0x0164: 0x009b, # LATIN CAPITAL LETTER T WITH CARON
|
||||
0x0165: 0x009c, # LATIN SMALL LETTER T WITH CARON
|
||||
0x016e: 0x00de, # LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0x016f: 0x0085, # LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0x0170: 0x00eb, # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0x0171: 0x00fb, # LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0x0179: 0x008d, # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x017a: 0x00ab, # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0x017b: 0x00bd, # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0x017c: 0x00be, # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0x017d: 0x00a6, # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x017e: 0x00a7, # LATIN SMALL LETTER Z WITH CARON
|
||||
0x02c7: 0x00f3, # CARON
|
||||
0x02d8: 0x00f4, # BREVE
|
||||
0x02d9: 0x00fa, # DOT ABOVE
|
||||
0x02db: 0x00f2, # OGONEK
|
||||
0x02dd: 0x00f1, # DOUBLE ACUTE ACCENT
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP855.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp855',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x0452, # CYRILLIC SMALL LETTER DJE
|
||||
0x0081: 0x0402, # CYRILLIC CAPITAL LETTER DJE
|
||||
0x0082: 0x0453, # CYRILLIC SMALL LETTER GJE
|
||||
0x0083: 0x0403, # CYRILLIC CAPITAL LETTER GJE
|
||||
0x0084: 0x0451, # CYRILLIC SMALL LETTER IO
|
||||
0x0085: 0x0401, # CYRILLIC CAPITAL LETTER IO
|
||||
0x0086: 0x0454, # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x0087: 0x0404, # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x0088: 0x0455, # CYRILLIC SMALL LETTER DZE
|
||||
0x0089: 0x0405, # CYRILLIC CAPITAL LETTER DZE
|
||||
0x008a: 0x0456, # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x008b: 0x0406, # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x008c: 0x0457, # CYRILLIC SMALL LETTER YI
|
||||
0x008d: 0x0407, # CYRILLIC CAPITAL LETTER YI
|
||||
0x008e: 0x0458, # CYRILLIC SMALL LETTER JE
|
||||
0x008f: 0x0408, # CYRILLIC CAPITAL LETTER JE
|
||||
0x0090: 0x0459, # CYRILLIC SMALL LETTER LJE
|
||||
0x0091: 0x0409, # CYRILLIC CAPITAL LETTER LJE
|
||||
0x0092: 0x045a, # CYRILLIC SMALL LETTER NJE
|
||||
0x0093: 0x040a, # CYRILLIC CAPITAL LETTER NJE
|
||||
0x0094: 0x045b, # CYRILLIC SMALL LETTER TSHE
|
||||
0x0095: 0x040b, # CYRILLIC CAPITAL LETTER TSHE
|
||||
0x0096: 0x045c, # CYRILLIC SMALL LETTER KJE
|
||||
0x0097: 0x040c, # CYRILLIC CAPITAL LETTER KJE
|
||||
0x0098: 0x045e, # CYRILLIC SMALL LETTER SHORT U
|
||||
0x0099: 0x040e, # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0x009a: 0x045f, # CYRILLIC SMALL LETTER DZHE
|
||||
0x009b: 0x040f, # CYRILLIC CAPITAL LETTER DZHE
|
||||
0x009c: 0x044e, # CYRILLIC SMALL LETTER YU
|
||||
0x009d: 0x042e, # CYRILLIC CAPITAL LETTER YU
|
||||
0x009e: 0x044a, # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x009f: 0x042a, # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x00a0: 0x0430, # CYRILLIC SMALL LETTER A
|
||||
0x00a1: 0x0410, # CYRILLIC CAPITAL LETTER A
|
||||
0x00a2: 0x0431, # CYRILLIC SMALL LETTER BE
|
||||
0x00a3: 0x0411, # CYRILLIC CAPITAL LETTER BE
|
||||
0x00a4: 0x0446, # CYRILLIC SMALL LETTER TSE
|
||||
0x00a5: 0x0426, # CYRILLIC CAPITAL LETTER TSE
|
||||
0x00a6: 0x0434, # CYRILLIC SMALL LETTER DE
|
||||
0x00a7: 0x0414, # CYRILLIC CAPITAL LETTER DE
|
||||
0x00a8: 0x0435, # CYRILLIC SMALL LETTER IE
|
||||
0x00a9: 0x0415, # CYRILLIC CAPITAL LETTER IE
|
||||
0x00aa: 0x0444, # CYRILLIC SMALL LETTER EF
|
||||
0x00ab: 0x0424, # CYRILLIC CAPITAL LETTER EF
|
||||
0x00ac: 0x0433, # CYRILLIC SMALL LETTER GHE
|
||||
0x00ad: 0x0413, # CYRILLIC CAPITAL LETTER GHE
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x0445, # CYRILLIC SMALL LETTER HA
|
||||
0x00b6: 0x0425, # CYRILLIC CAPITAL LETTER HA
|
||||
0x00b7: 0x0438, # CYRILLIC SMALL LETTER I
|
||||
0x00b8: 0x0418, # CYRILLIC CAPITAL LETTER I
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x0439, # CYRILLIC SMALL LETTER SHORT I
|
||||
0x00be: 0x0419, # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x043a, # CYRILLIC SMALL LETTER KA
|
||||
0x00c7: 0x041a, # CYRILLIC CAPITAL LETTER KA
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x00a4, # CURRENCY SIGN
|
||||
0x00d0: 0x043b, # CYRILLIC SMALL LETTER EL
|
||||
0x00d1: 0x041b, # CYRILLIC CAPITAL LETTER EL
|
||||
0x00d2: 0x043c, # CYRILLIC SMALL LETTER EM
|
||||
0x00d3: 0x041c, # CYRILLIC CAPITAL LETTER EM
|
||||
0x00d4: 0x043d, # CYRILLIC SMALL LETTER EN
|
||||
0x00d5: 0x041d, # CYRILLIC CAPITAL LETTER EN
|
||||
0x00d6: 0x043e, # CYRILLIC SMALL LETTER O
|
||||
0x00d7: 0x041e, # CYRILLIC CAPITAL LETTER O
|
||||
0x00d8: 0x043f, # CYRILLIC SMALL LETTER PE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x041f, # CYRILLIC CAPITAL LETTER PE
|
||||
0x00de: 0x044f, # CYRILLIC SMALL LETTER YA
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x042f, # CYRILLIC CAPITAL LETTER YA
|
||||
0x00e1: 0x0440, # CYRILLIC SMALL LETTER ER
|
||||
0x00e2: 0x0420, # CYRILLIC CAPITAL LETTER ER
|
||||
0x00e3: 0x0441, # CYRILLIC SMALL LETTER ES
|
||||
0x00e4: 0x0421, # CYRILLIC CAPITAL LETTER ES
|
||||
0x00e5: 0x0442, # CYRILLIC SMALL LETTER TE
|
||||
0x00e6: 0x0422, # CYRILLIC CAPITAL LETTER TE
|
||||
0x00e7: 0x0443, # CYRILLIC SMALL LETTER U
|
||||
0x00e8: 0x0423, # CYRILLIC CAPITAL LETTER U
|
||||
0x00e9: 0x0436, # CYRILLIC SMALL LETTER ZHE
|
||||
0x00ea: 0x0416, # CYRILLIC CAPITAL LETTER ZHE
|
||||
0x00eb: 0x0432, # CYRILLIC SMALL LETTER VE
|
||||
0x00ec: 0x0412, # CYRILLIC CAPITAL LETTER VE
|
||||
0x00ed: 0x044c, # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0x00ee: 0x042c, # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x00ef: 0x2116, # NUMERO SIGN
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x044b, # CYRILLIC SMALL LETTER YERU
|
||||
0x00f2: 0x042b, # CYRILLIC CAPITAL LETTER YERU
|
||||
0x00f3: 0x0437, # CYRILLIC SMALL LETTER ZE
|
||||
0x00f4: 0x0417, # CYRILLIC CAPITAL LETTER ZE
|
||||
0x00f5: 0x0448, # CYRILLIC SMALL LETTER SHA
|
||||
0x00f6: 0x0428, # CYRILLIC CAPITAL LETTER SHA
|
||||
0x00f7: 0x044d, # CYRILLIC SMALL LETTER E
|
||||
0x00f8: 0x042d, # CYRILLIC CAPITAL LETTER E
|
||||
0x00f9: 0x0449, # CYRILLIC SMALL LETTER SHCHA
|
||||
0x00fa: 0x0429, # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x00fb: 0x0447, # CYRILLIC SMALL LETTER CHE
|
||||
0x00fc: 0x0427, # CYRILLIC CAPITAL LETTER CHE
|
||||
0x00fd: 0x00a7, # SECTION SIGN
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\u0452' # 0x0080 -> CYRILLIC SMALL LETTER DJE
|
||||
'\u0402' # 0x0081 -> CYRILLIC CAPITAL LETTER DJE
|
||||
'\u0453' # 0x0082 -> CYRILLIC SMALL LETTER GJE
|
||||
'\u0403' # 0x0083 -> CYRILLIC CAPITAL LETTER GJE
|
||||
'\u0451' # 0x0084 -> CYRILLIC SMALL LETTER IO
|
||||
'\u0401' # 0x0085 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\u0454' # 0x0086 -> CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
'\u0404' # 0x0087 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
'\u0455' # 0x0088 -> CYRILLIC SMALL LETTER DZE
|
||||
'\u0405' # 0x0089 -> CYRILLIC CAPITAL LETTER DZE
|
||||
'\u0456' # 0x008a -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0406' # 0x008b -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0457' # 0x008c -> CYRILLIC SMALL LETTER YI
|
||||
'\u0407' # 0x008d -> CYRILLIC CAPITAL LETTER YI
|
||||
'\u0458' # 0x008e -> CYRILLIC SMALL LETTER JE
|
||||
'\u0408' # 0x008f -> CYRILLIC CAPITAL LETTER JE
|
||||
'\u0459' # 0x0090 -> CYRILLIC SMALL LETTER LJE
|
||||
'\u0409' # 0x0091 -> CYRILLIC CAPITAL LETTER LJE
|
||||
'\u045a' # 0x0092 -> CYRILLIC SMALL LETTER NJE
|
||||
'\u040a' # 0x0093 -> CYRILLIC CAPITAL LETTER NJE
|
||||
'\u045b' # 0x0094 -> CYRILLIC SMALL LETTER TSHE
|
||||
'\u040b' # 0x0095 -> CYRILLIC CAPITAL LETTER TSHE
|
||||
'\u045c' # 0x0096 -> CYRILLIC SMALL LETTER KJE
|
||||
'\u040c' # 0x0097 -> CYRILLIC CAPITAL LETTER KJE
|
||||
'\u045e' # 0x0098 -> CYRILLIC SMALL LETTER SHORT U
|
||||
'\u040e' # 0x0099 -> CYRILLIC CAPITAL LETTER SHORT U
|
||||
'\u045f' # 0x009a -> CYRILLIC SMALL LETTER DZHE
|
||||
'\u040f' # 0x009b -> CYRILLIC CAPITAL LETTER DZHE
|
||||
'\u044e' # 0x009c -> CYRILLIC SMALL LETTER YU
|
||||
'\u042e' # 0x009d -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u044a' # 0x009e -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u042a' # 0x009f -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
'\u0430' # 0x00a0 -> CYRILLIC SMALL LETTER A
|
||||
'\u0410' # 0x00a1 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0431' # 0x00a2 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0411' # 0x00a3 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0446' # 0x00a4 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0426' # 0x00a5 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0434' # 0x00a6 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0414' # 0x00a7 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0435' # 0x00a8 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0415' # 0x00a9 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0444' # 0x00aa -> CYRILLIC SMALL LETTER EF
|
||||
'\u0424' # 0x00ab -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0433' # 0x00ac -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0413' # 0x00ad -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u0445' # 0x00b5 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0425' # 0x00b6 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0438' # 0x00b7 -> CYRILLIC SMALL LETTER I
|
||||
'\u0418' # 0x00b8 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u0439' # 0x00bd -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u0419' # 0x00be -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u043a' # 0x00c6 -> CYRILLIC SMALL LETTER KA
|
||||
'\u041a' # 0x00c7 -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa4' # 0x00cf -> CURRENCY SIGN
|
||||
'\u043b' # 0x00d0 -> CYRILLIC SMALL LETTER EL
|
||||
'\u041b' # 0x00d1 -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u043c' # 0x00d2 -> CYRILLIC SMALL LETTER EM
|
||||
'\u041c' # 0x00d3 -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u043d' # 0x00d4 -> CYRILLIC SMALL LETTER EN
|
||||
'\u041d' # 0x00d5 -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u043e' # 0x00d6 -> CYRILLIC SMALL LETTER O
|
||||
'\u041e' # 0x00d7 -> CYRILLIC CAPITAL LETTER O
|
||||
'\u043f' # 0x00d8 -> CYRILLIC SMALL LETTER PE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u041f' # 0x00dd -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u044f' # 0x00de -> CYRILLIC SMALL LETTER YA
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u042f' # 0x00e0 -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0440' # 0x00e1 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0420' # 0x00e2 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0441' # 0x00e3 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0421' # 0x00e4 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0442' # 0x00e5 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0422' # 0x00e6 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0443' # 0x00e7 -> CYRILLIC SMALL LETTER U
|
||||
'\u0423' # 0x00e8 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0436' # 0x00e9 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0416' # 0x00ea -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0432' # 0x00eb -> CYRILLIC SMALL LETTER VE
|
||||
'\u0412' # 0x00ec -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u044c' # 0x00ed -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u042c' # 0x00ee -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u2116' # 0x00ef -> NUMERO SIGN
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\u044b' # 0x00f1 -> CYRILLIC SMALL LETTER YERU
|
||||
'\u042b' # 0x00f2 -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u0437' # 0x00f3 -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0417' # 0x00f4 -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0448' # 0x00f5 -> CYRILLIC SMALL LETTER SHA
|
||||
'\u0428' # 0x00f6 -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u044d' # 0x00f7 -> CYRILLIC SMALL LETTER E
|
||||
'\u042d' # 0x00f8 -> CYRILLIC CAPITAL LETTER E
|
||||
'\u0449' # 0x00f9 -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u0429' # 0x00fa -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u0447' # 0x00fb -> CYRILLIC SMALL LETTER CHE
|
||||
'\u0427' # 0x00fc -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\xa7' # 0x00fd -> SECTION SIGN
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a4: 0x00cf, # CURRENCY SIGN
|
||||
0x00a7: 0x00fd, # SECTION SIGN
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x0401: 0x0085, # CYRILLIC CAPITAL LETTER IO
|
||||
0x0402: 0x0081, # CYRILLIC CAPITAL LETTER DJE
|
||||
0x0403: 0x0083, # CYRILLIC CAPITAL LETTER GJE
|
||||
0x0404: 0x0087, # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x0405: 0x0089, # CYRILLIC CAPITAL LETTER DZE
|
||||
0x0406: 0x008b, # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x0407: 0x008d, # CYRILLIC CAPITAL LETTER YI
|
||||
0x0408: 0x008f, # CYRILLIC CAPITAL LETTER JE
|
||||
0x0409: 0x0091, # CYRILLIC CAPITAL LETTER LJE
|
||||
0x040a: 0x0093, # CYRILLIC CAPITAL LETTER NJE
|
||||
0x040b: 0x0095, # CYRILLIC CAPITAL LETTER TSHE
|
||||
0x040c: 0x0097, # CYRILLIC CAPITAL LETTER KJE
|
||||
0x040e: 0x0099, # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0x040f: 0x009b, # CYRILLIC CAPITAL LETTER DZHE
|
||||
0x0410: 0x00a1, # CYRILLIC CAPITAL LETTER A
|
||||
0x0411: 0x00a3, # CYRILLIC CAPITAL LETTER BE
|
||||
0x0412: 0x00ec, # CYRILLIC CAPITAL LETTER VE
|
||||
0x0413: 0x00ad, # CYRILLIC CAPITAL LETTER GHE
|
||||
0x0414: 0x00a7, # CYRILLIC CAPITAL LETTER DE
|
||||
0x0415: 0x00a9, # CYRILLIC CAPITAL LETTER IE
|
||||
0x0416: 0x00ea, # CYRILLIC CAPITAL LETTER ZHE
|
||||
0x0417: 0x00f4, # CYRILLIC CAPITAL LETTER ZE
|
||||
0x0418: 0x00b8, # CYRILLIC CAPITAL LETTER I
|
||||
0x0419: 0x00be, # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x041a: 0x00c7, # CYRILLIC CAPITAL LETTER KA
|
||||
0x041b: 0x00d1, # CYRILLIC CAPITAL LETTER EL
|
||||
0x041c: 0x00d3, # CYRILLIC CAPITAL LETTER EM
|
||||
0x041d: 0x00d5, # CYRILLIC CAPITAL LETTER EN
|
||||
0x041e: 0x00d7, # CYRILLIC CAPITAL LETTER O
|
||||
0x041f: 0x00dd, # CYRILLIC CAPITAL LETTER PE
|
||||
0x0420: 0x00e2, # CYRILLIC CAPITAL LETTER ER
|
||||
0x0421: 0x00e4, # CYRILLIC CAPITAL LETTER ES
|
||||
0x0422: 0x00e6, # CYRILLIC CAPITAL LETTER TE
|
||||
0x0423: 0x00e8, # CYRILLIC CAPITAL LETTER U
|
||||
0x0424: 0x00ab, # CYRILLIC CAPITAL LETTER EF
|
||||
0x0425: 0x00b6, # CYRILLIC CAPITAL LETTER HA
|
||||
0x0426: 0x00a5, # CYRILLIC CAPITAL LETTER TSE
|
||||
0x0427: 0x00fc, # CYRILLIC CAPITAL LETTER CHE
|
||||
0x0428: 0x00f6, # CYRILLIC CAPITAL LETTER SHA
|
||||
0x0429: 0x00fa, # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x042a: 0x009f, # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x042b: 0x00f2, # CYRILLIC CAPITAL LETTER YERU
|
||||
0x042c: 0x00ee, # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x042d: 0x00f8, # CYRILLIC CAPITAL LETTER E
|
||||
0x042e: 0x009d, # CYRILLIC CAPITAL LETTER YU
|
||||
0x042f: 0x00e0, # CYRILLIC CAPITAL LETTER YA
|
||||
0x0430: 0x00a0, # CYRILLIC SMALL LETTER A
|
||||
0x0431: 0x00a2, # CYRILLIC SMALL LETTER BE
|
||||
0x0432: 0x00eb, # CYRILLIC SMALL LETTER VE
|
||||
0x0433: 0x00ac, # CYRILLIC SMALL LETTER GHE
|
||||
0x0434: 0x00a6, # CYRILLIC SMALL LETTER DE
|
||||
0x0435: 0x00a8, # CYRILLIC SMALL LETTER IE
|
||||
0x0436: 0x00e9, # CYRILLIC SMALL LETTER ZHE
|
||||
0x0437: 0x00f3, # CYRILLIC SMALL LETTER ZE
|
||||
0x0438: 0x00b7, # CYRILLIC SMALL LETTER I
|
||||
0x0439: 0x00bd, # CYRILLIC SMALL LETTER SHORT I
|
||||
0x043a: 0x00c6, # CYRILLIC SMALL LETTER KA
|
||||
0x043b: 0x00d0, # CYRILLIC SMALL LETTER EL
|
||||
0x043c: 0x00d2, # CYRILLIC SMALL LETTER EM
|
||||
0x043d: 0x00d4, # CYRILLIC SMALL LETTER EN
|
||||
0x043e: 0x00d6, # CYRILLIC SMALL LETTER O
|
||||
0x043f: 0x00d8, # CYRILLIC SMALL LETTER PE
|
||||
0x0440: 0x00e1, # CYRILLIC SMALL LETTER ER
|
||||
0x0441: 0x00e3, # CYRILLIC SMALL LETTER ES
|
||||
0x0442: 0x00e5, # CYRILLIC SMALL LETTER TE
|
||||
0x0443: 0x00e7, # CYRILLIC SMALL LETTER U
|
||||
0x0444: 0x00aa, # CYRILLIC SMALL LETTER EF
|
||||
0x0445: 0x00b5, # CYRILLIC SMALL LETTER HA
|
||||
0x0446: 0x00a4, # CYRILLIC SMALL LETTER TSE
|
||||
0x0447: 0x00fb, # CYRILLIC SMALL LETTER CHE
|
||||
0x0448: 0x00f5, # CYRILLIC SMALL LETTER SHA
|
||||
0x0449: 0x00f9, # CYRILLIC SMALL LETTER SHCHA
|
||||
0x044a: 0x009e, # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x044b: 0x00f1, # CYRILLIC SMALL LETTER YERU
|
||||
0x044c: 0x00ed, # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0x044d: 0x00f7, # CYRILLIC SMALL LETTER E
|
||||
0x044e: 0x009c, # CYRILLIC SMALL LETTER YU
|
||||
0x044f: 0x00de, # CYRILLIC SMALL LETTER YA
|
||||
0x0451: 0x0084, # CYRILLIC SMALL LETTER IO
|
||||
0x0452: 0x0080, # CYRILLIC SMALL LETTER DJE
|
||||
0x0453: 0x0082, # CYRILLIC SMALL LETTER GJE
|
||||
0x0454: 0x0086, # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x0455: 0x0088, # CYRILLIC SMALL LETTER DZE
|
||||
0x0456: 0x008a, # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x0457: 0x008c, # CYRILLIC SMALL LETTER YI
|
||||
0x0458: 0x008e, # CYRILLIC SMALL LETTER JE
|
||||
0x0459: 0x0090, # CYRILLIC SMALL LETTER LJE
|
||||
0x045a: 0x0092, # CYRILLIC SMALL LETTER NJE
|
||||
0x045b: 0x0094, # CYRILLIC SMALL LETTER TSHE
|
||||
0x045c: 0x0096, # CYRILLIC SMALL LETTER KJE
|
||||
0x045e: 0x0098, # CYRILLIC SMALL LETTER SHORT U
|
||||
0x045f: 0x009a, # CYRILLIC SMALL LETTER DZHE
|
||||
0x2116: 0x00ef, # NUMERO SIGN
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp856 generated from 'MAPPINGS/VENDORS/MISC/CP856.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp856',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u05d0' # 0x80 -> HEBREW LETTER ALEF
|
||||
'\u05d1' # 0x81 -> HEBREW LETTER BET
|
||||
'\u05d2' # 0x82 -> HEBREW LETTER GIMEL
|
||||
'\u05d3' # 0x83 -> HEBREW LETTER DALET
|
||||
'\u05d4' # 0x84 -> HEBREW LETTER HE
|
||||
'\u05d5' # 0x85 -> HEBREW LETTER VAV
|
||||
'\u05d6' # 0x86 -> HEBREW LETTER ZAYIN
|
||||
'\u05d7' # 0x87 -> HEBREW LETTER HET
|
||||
'\u05d8' # 0x88 -> HEBREW LETTER TET
|
||||
'\u05d9' # 0x89 -> HEBREW LETTER YOD
|
||||
'\u05da' # 0x8A -> HEBREW LETTER FINAL KAF
|
||||
'\u05db' # 0x8B -> HEBREW LETTER KAF
|
||||
'\u05dc' # 0x8C -> HEBREW LETTER LAMED
|
||||
'\u05dd' # 0x8D -> HEBREW LETTER FINAL MEM
|
||||
'\u05de' # 0x8E -> HEBREW LETTER MEM
|
||||
'\u05df' # 0x8F -> HEBREW LETTER FINAL NUN
|
||||
'\u05e0' # 0x90 -> HEBREW LETTER NUN
|
||||
'\u05e1' # 0x91 -> HEBREW LETTER SAMEKH
|
||||
'\u05e2' # 0x92 -> HEBREW LETTER AYIN
|
||||
'\u05e3' # 0x93 -> HEBREW LETTER FINAL PE
|
||||
'\u05e4' # 0x94 -> HEBREW LETTER PE
|
||||
'\u05e5' # 0x95 -> HEBREW LETTER FINAL TSADI
|
||||
'\u05e6' # 0x96 -> HEBREW LETTER TSADI
|
||||
'\u05e7' # 0x97 -> HEBREW LETTER QOF
|
||||
'\u05e8' # 0x98 -> HEBREW LETTER RESH
|
||||
'\u05e9' # 0x99 -> HEBREW LETTER SHIN
|
||||
'\u05ea' # 0x9A -> HEBREW LETTER TAV
|
||||
'\ufffe' # 0x9B -> UNDEFINED
|
||||
'\xa3' # 0x9C -> POUND SIGN
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\xd7' # 0x9E -> MULTIPLICATION SIGN
|
||||
'\ufffe' # 0x9F -> UNDEFINED
|
||||
'\ufffe' # 0xA0 -> UNDEFINED
|
||||
'\ufffe' # 0xA1 -> UNDEFINED
|
||||
'\ufffe' # 0xA2 -> UNDEFINED
|
||||
'\ufffe' # 0xA3 -> UNDEFINED
|
||||
'\ufffe' # 0xA4 -> UNDEFINED
|
||||
'\ufffe' # 0xA5 -> UNDEFINED
|
||||
'\ufffe' # 0xA6 -> UNDEFINED
|
||||
'\ufffe' # 0xA7 -> UNDEFINED
|
||||
'\ufffe' # 0xA8 -> UNDEFINED
|
||||
'\xae' # 0xA9 -> REGISTERED SIGN
|
||||
'\xac' # 0xAA -> NOT SIGN
|
||||
'\xbd' # 0xAB -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0xAC -> VULGAR FRACTION ONE QUARTER
|
||||
'\ufffe' # 0xAD -> UNDEFINED
|
||||
'\xab' # 0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0xB0 -> LIGHT SHADE
|
||||
'\u2592' # 0xB1 -> MEDIUM SHADE
|
||||
'\u2593' # 0xB2 -> DARK SHADE
|
||||
'\u2502' # 0xB3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\ufffe' # 0xB5 -> UNDEFINED
|
||||
'\ufffe' # 0xB6 -> UNDEFINED
|
||||
'\ufffe' # 0xB7 -> UNDEFINED
|
||||
'\xa9' # 0xB8 -> COPYRIGHT SIGN
|
||||
'\u2563' # 0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0xBA -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\xa2' # 0xBD -> CENT SIGN
|
||||
'\xa5' # 0xBE -> YEN SIGN
|
||||
'\u2510' # 0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\ufffe' # 0xC6 -> UNDEFINED
|
||||
'\ufffe' # 0xC7 -> UNDEFINED
|
||||
'\u255a' # 0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa4' # 0xCF -> CURRENCY SIGN
|
||||
'\ufffe' # 0xD0 -> UNDEFINED
|
||||
'\ufffe' # 0xD1 -> UNDEFINED
|
||||
'\ufffe' # 0xD2 -> UNDEFINED
|
||||
'\ufffe' # 0xD3 -> UNDEFINEDS
|
||||
'\ufffe' # 0xD4 -> UNDEFINED
|
||||
'\ufffe' # 0xD5 -> UNDEFINED
|
||||
'\ufffe' # 0xD6 -> UNDEFINEDE
|
||||
'\ufffe' # 0xD7 -> UNDEFINED
|
||||
'\ufffe' # 0xD8 -> UNDEFINED
|
||||
'\u2518' # 0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0xDB -> FULL BLOCK
|
||||
'\u2584' # 0xDC -> LOWER HALF BLOCK
|
||||
'\xa6' # 0xDD -> BROKEN BAR
|
||||
'\ufffe' # 0xDE -> UNDEFINED
|
||||
'\u2580' # 0xDF -> UPPER HALF BLOCK
|
||||
'\ufffe' # 0xE0 -> UNDEFINED
|
||||
'\ufffe' # 0xE1 -> UNDEFINED
|
||||
'\ufffe' # 0xE2 -> UNDEFINED
|
||||
'\ufffe' # 0xE3 -> UNDEFINED
|
||||
'\ufffe' # 0xE4 -> UNDEFINED
|
||||
'\ufffe' # 0xE5 -> UNDEFINED
|
||||
'\xb5' # 0xE6 -> MICRO SIGN
|
||||
'\ufffe' # 0xE7 -> UNDEFINED
|
||||
'\ufffe' # 0xE8 -> UNDEFINED
|
||||
'\ufffe' # 0xE9 -> UNDEFINED
|
||||
'\ufffe' # 0xEA -> UNDEFINED
|
||||
'\ufffe' # 0xEB -> UNDEFINED
|
||||
'\ufffe' # 0xEC -> UNDEFINED
|
||||
'\ufffe' # 0xED -> UNDEFINED
|
||||
'\xaf' # 0xEE -> MACRON
|
||||
'\xb4' # 0xEF -> ACUTE ACCENT
|
||||
'\xad' # 0xF0 -> SOFT HYPHEN
|
||||
'\xb1' # 0xF1 -> PLUS-MINUS SIGN
|
||||
'\u2017' # 0xF2 -> DOUBLE LOW LINE
|
||||
'\xbe' # 0xF3 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xb6' # 0xF4 -> PILCROW SIGN
|
||||
'\xa7' # 0xF5 -> SECTION SIGN
|
||||
'\xf7' # 0xF6 -> DIVISION SIGN
|
||||
'\xb8' # 0xF7 -> CEDILLA
|
||||
'\xb0' # 0xF8 -> DEGREE SIGN
|
||||
'\xa8' # 0xF9 -> DIAERESIS
|
||||
'\xb7' # 0xFA -> MIDDLE DOT
|
||||
'\xb9' # 0xFB -> SUPERSCRIPT ONE
|
||||
'\xb3' # 0xFC -> SUPERSCRIPT THREE
|
||||
'\xb2' # 0xFD -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0xFE -> BLACK SQUARE
|
||||
'\xa0' # 0xFF -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,694 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP857.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp857',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x0131, # LATIN SMALL LETTER DOTLESS I
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x0130, # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x009e: 0x015e, # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0x009f: 0x015f, # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x011e, # LATIN CAPITAL LETTER G WITH BREVE
|
||||
0x00a7: 0x011f, # LATIN SMALL LETTER G WITH BREVE
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x00ae, # REGISTERED SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00b6: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00b7: 0x00c0, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00b8: 0x00a9, # COPYRIGHT SIGN
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x00a2, # CENT SIGN
|
||||
0x00be: 0x00a5, # YEN SIGN
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x00e3, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00c7: 0x00c3, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x00a4, # CURRENCY SIGN
|
||||
0x00d0: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00d1: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00d2: 0x00ca, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00d3: 0x00cb, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00d4: 0x00c8, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00d5: None, # UNDEFINED
|
||||
0x00d6: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00d7: 0x00ce, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00d8: 0x00cf, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x00a6, # BROKEN BAR
|
||||
0x00de: 0x00cc, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00e3: 0x00d2, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00e4: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00e5: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: None, # UNDEFINED
|
||||
0x00e8: 0x00d7, # MULTIPLICATION SIGN
|
||||
0x00e9: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00ea: 0x00db, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00eb: 0x00d9, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00ed: 0x00ff, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x00ee: 0x00af, # MACRON
|
||||
0x00ef: 0x00b4, # ACUTE ACCENT
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: None, # UNDEFINED
|
||||
0x00f3: 0x00be, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00f4: 0x00b6, # PILCROW SIGN
|
||||
0x00f5: 0x00a7, # SECTION SIGN
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x00b8, # CEDILLA
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x00a8, # DIAERESIS
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x00b9, # SUPERSCRIPT ONE
|
||||
0x00fc: 0x00b3, # SUPERSCRIPT THREE
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\u0131' # 0x008d -> LATIN SMALL LETTER DOTLESS I
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0x0095 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\u0130' # 0x0098 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xf8' # 0x009b -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd8' # 0x009d -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\u015e' # 0x009e -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\u015f' # 0x009f -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\u011e' # 0x00a6 -> LATIN CAPITAL LETTER G WITH BREVE
|
||||
'\u011f' # 0x00a7 -> LATIN SMALL LETTER G WITH BREVE
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\xae' # 0x00a9 -> REGISTERED SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\xc1' # 0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc0' # 0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xa9' # 0x00b8 -> COPYRIGHT SIGN
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\xa2' # 0x00bd -> CENT SIGN
|
||||
'\xa5' # 0x00be -> YEN SIGN
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\xe3' # 0x00c6 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xc3' # 0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa4' # 0x00cf -> CURRENCY SIGN
|
||||
'\xba' # 0x00d0 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xaa' # 0x00d1 -> FEMININE ORDINAL INDICATOR
|
||||
'\xca' # 0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\ufffe' # 0x00d5 -> UNDEFINED
|
||||
'\xcd' # 0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\xa6' # 0x00dd -> BROKEN BAR
|
||||
'\xcc' # 0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\xd3' # 0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\xd4' # 0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd2' # 0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xf5' # 0x00e4 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xd5' # 0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\ufffe' # 0x00e7 -> UNDEFINED
|
||||
'\xd7' # 0x00e8 -> MULTIPLICATION SIGN
|
||||
'\xda' # 0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xd9' # 0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xec' # 0x00ec -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xff' # 0x00ed -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xaf' # 0x00ee -> MACRON
|
||||
'\xb4' # 0x00ef -> ACUTE ACCENT
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\ufffe' # 0x00f2 -> UNDEFINED
|
||||
'\xbe' # 0x00f3 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xb6' # 0x00f4 -> PILCROW SIGN
|
||||
'\xa7' # 0x00f5 -> SECTION SIGN
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\xb8' # 0x00f7 -> CEDILLA
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\xa8' # 0x00f9 -> DIAERESIS
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\xb9' # 0x00fb -> SUPERSCRIPT ONE
|
||||
'\xb3' # 0x00fc -> SUPERSCRIPT THREE
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a2: 0x00bd, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a4: 0x00cf, # CURRENCY SIGN
|
||||
0x00a5: 0x00be, # YEN SIGN
|
||||
0x00a6: 0x00dd, # BROKEN BAR
|
||||
0x00a7: 0x00f5, # SECTION SIGN
|
||||
0x00a8: 0x00f9, # DIAERESIS
|
||||
0x00a9: 0x00b8, # COPYRIGHT SIGN
|
||||
0x00aa: 0x00d1, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00ae: 0x00a9, # REGISTERED SIGN
|
||||
0x00af: 0x00ee, # MACRON
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b3: 0x00fc, # SUPERSCRIPT THREE
|
||||
0x00b4: 0x00ef, # ACUTE ACCENT
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b6: 0x00f4, # PILCROW SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00b8: 0x00f7, # CEDILLA
|
||||
0x00b9: 0x00fb, # SUPERSCRIPT ONE
|
||||
0x00ba: 0x00d0, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00be: 0x00f3, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c0: 0x00b7, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00c1: 0x00b5, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00c2: 0x00b6, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00c3: 0x00c7, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c8: 0x00d4, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00ca: 0x00d2, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00cb: 0x00d3, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00cc: 0x00de, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00cd: 0x00d6, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00ce: 0x00d7, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00cf: 0x00d8, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00d2: 0x00e3, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00d3: 0x00e0, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d4: 0x00e2, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00d5: 0x00e5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d7: 0x00e8, # MULTIPLICATION SIGN
|
||||
0x00d8: 0x009d, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x00d9: 0x00eb, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00da: 0x00e9, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00db: 0x00ea, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e3: 0x00c6, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ec: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00ef: 0x008b, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f2: 0x0095, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f5: 0x00e4, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f8: 0x009b, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00ff: 0x00ed, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x011e: 0x00a6, # LATIN CAPITAL LETTER G WITH BREVE
|
||||
0x011f: 0x00a7, # LATIN SMALL LETTER G WITH BREVE
|
||||
0x0130: 0x0098, # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0x0131: 0x008d, # LATIN SMALL LETTER DOTLESS I
|
||||
0x015e: 0x009e, # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0x015f: 0x009f, # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec for CP858, modified from cp850.
|
||||
|
||||
"""
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp858',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x00ff, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x009e: 0x00d7, # MULTIPLICATION SIGN
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00a7: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x00ae, # REGISTERED SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00b6: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00b7: 0x00c0, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00b8: 0x00a9, # COPYRIGHT SIGN
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x00a2, # CENT SIGN
|
||||
0x00be: 0x00a5, # YEN SIGN
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x00e3, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00c7: 0x00c3, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x00a4, # CURRENCY SIGN
|
||||
0x00d0: 0x00f0, # LATIN SMALL LETTER ETH
|
||||
0x00d1: 0x00d0, # LATIN CAPITAL LETTER ETH
|
||||
0x00d2: 0x00ca, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00d3: 0x00cb, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00d4: 0x00c8, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00d5: 0x20ac, # EURO SIGN
|
||||
0x00d6: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00d7: 0x00ce, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00d8: 0x00cf, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x00a6, # BROKEN BAR
|
||||
0x00de: 0x00cc, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00e3: 0x00d2, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00e4: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00e5: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x00fe, # LATIN SMALL LETTER THORN
|
||||
0x00e8: 0x00de, # LATIN CAPITAL LETTER THORN
|
||||
0x00e9: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00ea: 0x00db, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00eb: 0x00d9, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00ec: 0x00fd, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x00ed: 0x00dd, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00ee: 0x00af, # MACRON
|
||||
0x00ef: 0x00b4, # ACUTE ACCENT
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2017, # DOUBLE LOW LINE
|
||||
0x00f3: 0x00be, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00f4: 0x00b6, # PILCROW SIGN
|
||||
0x00f5: 0x00a7, # SECTION SIGN
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x00b8, # CEDILLA
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x00a8, # DIAERESIS
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x00b9, # SUPERSCRIPT ONE
|
||||
0x00fc: 0x00b3, # SUPERSCRIPT THREE
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xec' # 0x008d -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0x0095 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xff' # 0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xf8' # 0x009b -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd8' # 0x009d -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd7' # 0x009e -> MULTIPLICATION SIGN
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xaa' # 0x00a6 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x00a7 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\xae' # 0x00a9 -> REGISTERED SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\xc1' # 0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc0' # 0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xa9' # 0x00b8 -> COPYRIGHT SIGN
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\xa2' # 0x00bd -> CENT SIGN
|
||||
'\xa5' # 0x00be -> YEN SIGN
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\xe3' # 0x00c6 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xc3' # 0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa4' # 0x00cf -> CURRENCY SIGN
|
||||
'\xf0' # 0x00d0 -> LATIN SMALL LETTER ETH
|
||||
'\xd0' # 0x00d1 -> LATIN CAPITAL LETTER ETH
|
||||
'\xca' # 0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xc8' # 0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\u20ac' # 0x00d5 -> EURO SIGN
|
||||
'\xcd' # 0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\xa6' # 0x00dd -> BROKEN BAR
|
||||
'\xcc' # 0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\xd3' # 0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\xd4' # 0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd2' # 0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xf5' # 0x00e4 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xd5' # 0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\xfe' # 0x00e7 -> LATIN SMALL LETTER THORN
|
||||
'\xde' # 0x00e8 -> LATIN CAPITAL LETTER THORN
|
||||
'\xda' # 0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xd9' # 0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xfd' # 0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xdd' # 0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xaf' # 0x00ee -> MACRON
|
||||
'\xb4' # 0x00ef -> ACUTE ACCENT
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2017' # 0x00f2 -> DOUBLE LOW LINE
|
||||
'\xbe' # 0x00f3 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xb6' # 0x00f4 -> PILCROW SIGN
|
||||
'\xa7' # 0x00f5 -> SECTION SIGN
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\xb8' # 0x00f7 -> CEDILLA
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\xa8' # 0x00f9 -> DIAERESIS
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\xb9' # 0x00fb -> SUPERSCRIPT ONE
|
||||
'\xb3' # 0x00fc -> SUPERSCRIPT THREE
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a2: 0x00bd, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a4: 0x00cf, # CURRENCY SIGN
|
||||
0x00a5: 0x00be, # YEN SIGN
|
||||
0x00a6: 0x00dd, # BROKEN BAR
|
||||
0x00a7: 0x00f5, # SECTION SIGN
|
||||
0x00a8: 0x00f9, # DIAERESIS
|
||||
0x00a9: 0x00b8, # COPYRIGHT SIGN
|
||||
0x00aa: 0x00a6, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00ae: 0x00a9, # REGISTERED SIGN
|
||||
0x00af: 0x00ee, # MACRON
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b3: 0x00fc, # SUPERSCRIPT THREE
|
||||
0x00b4: 0x00ef, # ACUTE ACCENT
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b6: 0x00f4, # PILCROW SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00b8: 0x00f7, # CEDILLA
|
||||
0x00b9: 0x00fb, # SUPERSCRIPT ONE
|
||||
0x00ba: 0x00a7, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00be: 0x00f3, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c0: 0x00b7, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00c1: 0x00b5, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00c2: 0x00b6, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00c3: 0x00c7, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c8: 0x00d4, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00ca: 0x00d2, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00cb: 0x00d3, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00cc: 0x00de, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00cd: 0x00d6, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00ce: 0x00d7, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00cf: 0x00d8, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d0: 0x00d1, # LATIN CAPITAL LETTER ETH
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00d2: 0x00e3, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00d3: 0x00e0, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d4: 0x00e2, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00d5: 0x00e5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d7: 0x009e, # MULTIPLICATION SIGN
|
||||
0x00d8: 0x009d, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x00d9: 0x00eb, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00da: 0x00e9, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00db: 0x00ea, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00dd: 0x00ed, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00de: 0x00e8, # LATIN CAPITAL LETTER THORN
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e3: 0x00c6, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ec: 0x008d, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00ef: 0x008b, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x00f0: 0x00d0, # LATIN SMALL LETTER ETH
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f2: 0x0095, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f5: 0x00e4, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f8: 0x009b, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00fd: 0x00ec, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x00fe: 0x00e7, # LATIN SMALL LETTER THORN
|
||||
0x00ff: 0x0098, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x20ac: 0x00d5, # EURO SIGN
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x2017: 0x00f2, # DOUBLE LOW LINE
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP860.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp860',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e3, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00ca, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x008c: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x008d: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x008e: 0x00c3, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x008f: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00c0, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x0092: 0x00c8, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x0095: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x0096: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x00cc, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x0099: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00a2, # CENT SIGN
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d9, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x009e: 0x20a7, # PESETA SIGN
|
||||
0x009f: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00a7: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x00d2, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00e3: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00e4: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00e5: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00e8: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00e9: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ea: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00eb: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00ec: 0x221e, # INFINITY
|
||||
0x00ed: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ee: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00ef: 0x2229, # INTERSECTION
|
||||
0x00f0: 0x2261, # IDENTICAL TO
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x2320, # TOP HALF INTEGRAL
|
||||
0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0x0084 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xc1' # 0x0086 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xca' # 0x0089 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xcd' # 0x008b -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xd4' # 0x008c -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xec' # 0x008d -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xc3' # 0x008e -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc2' # 0x008f -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xc0' # 0x0091 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc8' # 0x0092 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0x0094 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf2' # 0x0095 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xda' # 0x0096 -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xcc' # 0x0098 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xd5' # 0x0099 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xa2' # 0x009b -> CENT SIGN
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd9' # 0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\u20a7' # 0x009e -> PESETA SIGN
|
||||
'\xd3' # 0x009f -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xaa' # 0x00a6 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x00a7 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\xd2' # 0x00a9 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b1' # 0x00e0 -> GREEK SMALL LETTER ALPHA
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\u0393' # 0x00e2 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u03c0' # 0x00e3 -> GREEK SMALL LETTER PI
|
||||
'\u03a3' # 0x00e4 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03c3' # 0x00e5 -> GREEK SMALL LETTER SIGMA
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u03c4' # 0x00e7 -> GREEK SMALL LETTER TAU
|
||||
'\u03a6' # 0x00e8 -> GREEK CAPITAL LETTER PHI
|
||||
'\u0398' # 0x00e9 -> GREEK CAPITAL LETTER THETA
|
||||
'\u03a9' # 0x00ea -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b4' # 0x00eb -> GREEK SMALL LETTER DELTA
|
||||
'\u221e' # 0x00ec -> INFINITY
|
||||
'\u03c6' # 0x00ed -> GREEK SMALL LETTER PHI
|
||||
'\u03b5' # 0x00ee -> GREEK SMALL LETTER EPSILON
|
||||
'\u2229' # 0x00ef -> INTERSECTION
|
||||
'\u2261' # 0x00f0 -> IDENTICAL TO
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u2320' # 0x00f4 -> TOP HALF INTEGRAL
|
||||
'\u2321' # 0x00f5 -> BOTTOM HALF INTEGRAL
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a2: 0x009b, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00aa: 0x00a6, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00ba: 0x00a7, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c0: 0x0091, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00c1: 0x0086, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00c2: 0x008f, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00c3: 0x008e, # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c8: 0x0092, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00ca: 0x0089, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00cc: 0x0098, # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x00cd: 0x008b, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00d2: 0x00a9, # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0x00d3: 0x009f, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d4: 0x008c, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00d5: 0x0099, # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x00d9: 0x009d, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00da: 0x0096, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e3: 0x0084, # LATIN SMALL LETTER A WITH TILDE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00ec: 0x008d, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f2: 0x0095, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f5: 0x0094, # LATIN SMALL LETTER O WITH TILDE
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0393: 0x00e2, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0398: 0x00e9, # GREEK CAPITAL LETTER THETA
|
||||
0x03a3: 0x00e4, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a6: 0x00e8, # GREEK CAPITAL LETTER PHI
|
||||
0x03a9: 0x00ea, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03b1: 0x00e0, # GREEK SMALL LETTER ALPHA
|
||||
0x03b4: 0x00eb, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00ee, # GREEK SMALL LETTER EPSILON
|
||||
0x03c0: 0x00e3, # GREEK SMALL LETTER PI
|
||||
0x03c3: 0x00e5, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00e7, # GREEK SMALL LETTER TAU
|
||||
0x03c6: 0x00ed, # GREEK SMALL LETTER PHI
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x20a7: 0x009e, # PESETA SIGN
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x221e: 0x00ec, # INFINITY
|
||||
0x2229: 0x00ef, # INTERSECTION
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2261: 0x00f0, # IDENTICAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2320: 0x00f4, # TOP HALF INTEGRAL
|
||||
0x2321: 0x00f5, # BOTTOM HALF INTEGRAL
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP861.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp861',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00d0, # LATIN CAPITAL LETTER ETH
|
||||
0x008c: 0x00f0, # LATIN SMALL LETTER ETH
|
||||
0x008d: 0x00de, # LATIN CAPITAL LETTER THORN
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x00fe, # LATIN SMALL LETTER THORN
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00dd, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x0098: 0x00fd, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x009e: 0x20a7, # PESETA SIGN
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00a5: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00a6: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00a7: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x2310, # REVERSED NOT SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00e3: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00e4: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00e5: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00e8: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00e9: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ea: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00eb: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00ec: 0x221e, # INFINITY
|
||||
0x00ed: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ee: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00ef: 0x2229, # INTERSECTION
|
||||
0x00f0: 0x2261, # IDENTICAL TO
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x2320, # TOP HALF INTEGRAL
|
||||
0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xd0' # 0x008b -> LATIN CAPITAL LETTER ETH
|
||||
'\xf0' # 0x008c -> LATIN SMALL LETTER ETH
|
||||
'\xde' # 0x008d -> LATIN CAPITAL LETTER THORN
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xfe' # 0x0095 -> LATIN SMALL LETTER THORN
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xdd' # 0x0097 -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xfd' # 0x0098 -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xf8' # 0x009b -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd8' # 0x009d -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\u20a7' # 0x009e -> PESETA SIGN
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xc1' # 0x00a4 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xcd' # 0x00a5 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xd3' # 0x00a6 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xda' # 0x00a7 -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\u2310' # 0x00a9 -> REVERSED NOT SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b1' # 0x00e0 -> GREEK SMALL LETTER ALPHA
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\u0393' # 0x00e2 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u03c0' # 0x00e3 -> GREEK SMALL LETTER PI
|
||||
'\u03a3' # 0x00e4 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03c3' # 0x00e5 -> GREEK SMALL LETTER SIGMA
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u03c4' # 0x00e7 -> GREEK SMALL LETTER TAU
|
||||
'\u03a6' # 0x00e8 -> GREEK CAPITAL LETTER PHI
|
||||
'\u0398' # 0x00e9 -> GREEK CAPITAL LETTER THETA
|
||||
'\u03a9' # 0x00ea -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b4' # 0x00eb -> GREEK SMALL LETTER DELTA
|
||||
'\u221e' # 0x00ec -> INFINITY
|
||||
'\u03c6' # 0x00ed -> GREEK SMALL LETTER PHI
|
||||
'\u03b5' # 0x00ee -> GREEK SMALL LETTER EPSILON
|
||||
'\u2229' # 0x00ef -> INTERSECTION
|
||||
'\u2261' # 0x00f0 -> IDENTICAL TO
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u2320' # 0x00f4 -> TOP HALF INTEGRAL
|
||||
'\u2321' # 0x00f5 -> BOTTOM HALF INTEGRAL
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c1: 0x00a4, # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00cd: 0x00a5, # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x00d0: 0x008b, # LATIN CAPITAL LETTER ETH
|
||||
0x00d3: 0x00a6, # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d8: 0x009d, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x00da: 0x00a7, # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00dd: 0x0097, # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x00de: 0x008d, # LATIN CAPITAL LETTER THORN
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00f0: 0x008c, # LATIN SMALL LETTER ETH
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f8: 0x009b, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00fd: 0x0098, # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x00fe: 0x0095, # LATIN SMALL LETTER THORN
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x0393: 0x00e2, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0398: 0x00e9, # GREEK CAPITAL LETTER THETA
|
||||
0x03a3: 0x00e4, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a6: 0x00e8, # GREEK CAPITAL LETTER PHI
|
||||
0x03a9: 0x00ea, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03b1: 0x00e0, # GREEK SMALL LETTER ALPHA
|
||||
0x03b4: 0x00eb, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00ee, # GREEK SMALL LETTER EPSILON
|
||||
0x03c0: 0x00e3, # GREEK SMALL LETTER PI
|
||||
0x03c3: 0x00e5, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00e7, # GREEK SMALL LETTER TAU
|
||||
0x03c6: 0x00ed, # GREEK SMALL LETTER PHI
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x20a7: 0x009e, # PESETA SIGN
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x221e: 0x00ec, # INFINITY
|
||||
0x2229: 0x00ef, # INTERSECTION
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2261: 0x00f0, # IDENTICAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2310: 0x00a9, # REVERSED NOT SIGN
|
||||
0x2320: 0x00f4, # TOP HALF INTEGRAL
|
||||
0x2321: 0x00f5, # BOTTOM HALF INTEGRAL
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP862.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp862',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x05d0, # HEBREW LETTER ALEF
|
||||
0x0081: 0x05d1, # HEBREW LETTER BET
|
||||
0x0082: 0x05d2, # HEBREW LETTER GIMEL
|
||||
0x0083: 0x05d3, # HEBREW LETTER DALET
|
||||
0x0084: 0x05d4, # HEBREW LETTER HE
|
||||
0x0085: 0x05d5, # HEBREW LETTER VAV
|
||||
0x0086: 0x05d6, # HEBREW LETTER ZAYIN
|
||||
0x0087: 0x05d7, # HEBREW LETTER HET
|
||||
0x0088: 0x05d8, # HEBREW LETTER TET
|
||||
0x0089: 0x05d9, # HEBREW LETTER YOD
|
||||
0x008a: 0x05da, # HEBREW LETTER FINAL KAF
|
||||
0x008b: 0x05db, # HEBREW LETTER KAF
|
||||
0x008c: 0x05dc, # HEBREW LETTER LAMED
|
||||
0x008d: 0x05dd, # HEBREW LETTER FINAL MEM
|
||||
0x008e: 0x05de, # HEBREW LETTER MEM
|
||||
0x008f: 0x05df, # HEBREW LETTER FINAL NUN
|
||||
0x0090: 0x05e0, # HEBREW LETTER NUN
|
||||
0x0091: 0x05e1, # HEBREW LETTER SAMEKH
|
||||
0x0092: 0x05e2, # HEBREW LETTER AYIN
|
||||
0x0093: 0x05e3, # HEBREW LETTER FINAL PE
|
||||
0x0094: 0x05e4, # HEBREW LETTER PE
|
||||
0x0095: 0x05e5, # HEBREW LETTER FINAL TSADI
|
||||
0x0096: 0x05e6, # HEBREW LETTER TSADI
|
||||
0x0097: 0x05e7, # HEBREW LETTER QOF
|
||||
0x0098: 0x05e8, # HEBREW LETTER RESH
|
||||
0x0099: 0x05e9, # HEBREW LETTER SHIN
|
||||
0x009a: 0x05ea, # HEBREW LETTER TAV
|
||||
0x009b: 0x00a2, # CENT SIGN
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00a5, # YEN SIGN
|
||||
0x009e: 0x20a7, # PESETA SIGN
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00a7: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x2310, # REVERSED NOT SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0x00e2: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00e3: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00e4: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00e5: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00e8: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00e9: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ea: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00eb: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00ec: 0x221e, # INFINITY
|
||||
0x00ed: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ee: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00ef: 0x2229, # INTERSECTION
|
||||
0x00f0: 0x2261, # IDENTICAL TO
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x2320, # TOP HALF INTEGRAL
|
||||
0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\u05d0' # 0x0080 -> HEBREW LETTER ALEF
|
||||
'\u05d1' # 0x0081 -> HEBREW LETTER BET
|
||||
'\u05d2' # 0x0082 -> HEBREW LETTER GIMEL
|
||||
'\u05d3' # 0x0083 -> HEBREW LETTER DALET
|
||||
'\u05d4' # 0x0084 -> HEBREW LETTER HE
|
||||
'\u05d5' # 0x0085 -> HEBREW LETTER VAV
|
||||
'\u05d6' # 0x0086 -> HEBREW LETTER ZAYIN
|
||||
'\u05d7' # 0x0087 -> HEBREW LETTER HET
|
||||
'\u05d8' # 0x0088 -> HEBREW LETTER TET
|
||||
'\u05d9' # 0x0089 -> HEBREW LETTER YOD
|
||||
'\u05da' # 0x008a -> HEBREW LETTER FINAL KAF
|
||||
'\u05db' # 0x008b -> HEBREW LETTER KAF
|
||||
'\u05dc' # 0x008c -> HEBREW LETTER LAMED
|
||||
'\u05dd' # 0x008d -> HEBREW LETTER FINAL MEM
|
||||
'\u05de' # 0x008e -> HEBREW LETTER MEM
|
||||
'\u05df' # 0x008f -> HEBREW LETTER FINAL NUN
|
||||
'\u05e0' # 0x0090 -> HEBREW LETTER NUN
|
||||
'\u05e1' # 0x0091 -> HEBREW LETTER SAMEKH
|
||||
'\u05e2' # 0x0092 -> HEBREW LETTER AYIN
|
||||
'\u05e3' # 0x0093 -> HEBREW LETTER FINAL PE
|
||||
'\u05e4' # 0x0094 -> HEBREW LETTER PE
|
||||
'\u05e5' # 0x0095 -> HEBREW LETTER FINAL TSADI
|
||||
'\u05e6' # 0x0096 -> HEBREW LETTER TSADI
|
||||
'\u05e7' # 0x0097 -> HEBREW LETTER QOF
|
||||
'\u05e8' # 0x0098 -> HEBREW LETTER RESH
|
||||
'\u05e9' # 0x0099 -> HEBREW LETTER SHIN
|
||||
'\u05ea' # 0x009a -> HEBREW LETTER TAV
|
||||
'\xa2' # 0x009b -> CENT SIGN
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xa5' # 0x009d -> YEN SIGN
|
||||
'\u20a7' # 0x009e -> PESETA SIGN
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xaa' # 0x00a6 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x00a7 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\u2310' # 0x00a9 -> REVERSED NOT SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b1' # 0x00e0 -> GREEK SMALL LETTER ALPHA
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
'\u0393' # 0x00e2 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u03c0' # 0x00e3 -> GREEK SMALL LETTER PI
|
||||
'\u03a3' # 0x00e4 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03c3' # 0x00e5 -> GREEK SMALL LETTER SIGMA
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u03c4' # 0x00e7 -> GREEK SMALL LETTER TAU
|
||||
'\u03a6' # 0x00e8 -> GREEK CAPITAL LETTER PHI
|
||||
'\u0398' # 0x00e9 -> GREEK CAPITAL LETTER THETA
|
||||
'\u03a9' # 0x00ea -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b4' # 0x00eb -> GREEK SMALL LETTER DELTA
|
||||
'\u221e' # 0x00ec -> INFINITY
|
||||
'\u03c6' # 0x00ed -> GREEK SMALL LETTER PHI
|
||||
'\u03b5' # 0x00ee -> GREEK SMALL LETTER EPSILON
|
||||
'\u2229' # 0x00ef -> INTERSECTION
|
||||
'\u2261' # 0x00f0 -> IDENTICAL TO
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u2320' # 0x00f4 -> TOP HALF INTEGRAL
|
||||
'\u2321' # 0x00f5 -> BOTTOM HALF INTEGRAL
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a2: 0x009b, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a5: 0x009d, # YEN SIGN
|
||||
0x00aa: 0x00a6, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00ba: 0x00a7, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x0393: 0x00e2, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0398: 0x00e9, # GREEK CAPITAL LETTER THETA
|
||||
0x03a3: 0x00e4, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a6: 0x00e8, # GREEK CAPITAL LETTER PHI
|
||||
0x03a9: 0x00ea, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03b1: 0x00e0, # GREEK SMALL LETTER ALPHA
|
||||
0x03b4: 0x00eb, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00ee, # GREEK SMALL LETTER EPSILON
|
||||
0x03c0: 0x00e3, # GREEK SMALL LETTER PI
|
||||
0x03c3: 0x00e5, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00e7, # GREEK SMALL LETTER TAU
|
||||
0x03c6: 0x00ed, # GREEK SMALL LETTER PHI
|
||||
0x05d0: 0x0080, # HEBREW LETTER ALEF
|
||||
0x05d1: 0x0081, # HEBREW LETTER BET
|
||||
0x05d2: 0x0082, # HEBREW LETTER GIMEL
|
||||
0x05d3: 0x0083, # HEBREW LETTER DALET
|
||||
0x05d4: 0x0084, # HEBREW LETTER HE
|
||||
0x05d5: 0x0085, # HEBREW LETTER VAV
|
||||
0x05d6: 0x0086, # HEBREW LETTER ZAYIN
|
||||
0x05d7: 0x0087, # HEBREW LETTER HET
|
||||
0x05d8: 0x0088, # HEBREW LETTER TET
|
||||
0x05d9: 0x0089, # HEBREW LETTER YOD
|
||||
0x05da: 0x008a, # HEBREW LETTER FINAL KAF
|
||||
0x05db: 0x008b, # HEBREW LETTER KAF
|
||||
0x05dc: 0x008c, # HEBREW LETTER LAMED
|
||||
0x05dd: 0x008d, # HEBREW LETTER FINAL MEM
|
||||
0x05de: 0x008e, # HEBREW LETTER MEM
|
||||
0x05df: 0x008f, # HEBREW LETTER FINAL NUN
|
||||
0x05e0: 0x0090, # HEBREW LETTER NUN
|
||||
0x05e1: 0x0091, # HEBREW LETTER SAMEKH
|
||||
0x05e2: 0x0092, # HEBREW LETTER AYIN
|
||||
0x05e3: 0x0093, # HEBREW LETTER FINAL PE
|
||||
0x05e4: 0x0094, # HEBREW LETTER PE
|
||||
0x05e5: 0x0095, # HEBREW LETTER FINAL TSADI
|
||||
0x05e6: 0x0096, # HEBREW LETTER TSADI
|
||||
0x05e7: 0x0097, # HEBREW LETTER QOF
|
||||
0x05e8: 0x0098, # HEBREW LETTER RESH
|
||||
0x05e9: 0x0099, # HEBREW LETTER SHIN
|
||||
0x05ea: 0x009a, # HEBREW LETTER TAV
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x20a7: 0x009e, # PESETA SIGN
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x221e: 0x00ec, # INFINITY
|
||||
0x2229: 0x00ef, # INTERSECTION
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2261: 0x00f0, # IDENTICAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2310: 0x00a9, # REVERSED NOT SIGN
|
||||
0x2320: 0x00f4, # TOP HALF INTEGRAL
|
||||
0x2321: 0x00f5, # BOTTOM HALF INTEGRAL
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP863.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp863',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00c2, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00b6, # PILCROW SIGN
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x2017, # DOUBLE LOW LINE
|
||||
0x008e: 0x00c0, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x008f: 0x00a7, # SECTION SIGN
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00c8, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x0092: 0x00ca, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00cb, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x0095: 0x00cf, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x00a4, # CURRENCY SIGN
|
||||
0x0099: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00a2, # CENT SIGN
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d9, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x009e: 0x00db, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00a6, # BROKEN BAR
|
||||
0x00a1: 0x00b4, # ACUTE ACCENT
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00a8, # DIAERESIS
|
||||
0x00a5: 0x00b8, # CEDILLA
|
||||
0x00a6: 0x00b3, # SUPERSCRIPT THREE
|
||||
0x00a7: 0x00af, # MACRON
|
||||
0x00a8: 0x00ce, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00a9: 0x2310, # REVERSED NOT SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00be, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00e3: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00e4: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00e5: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00e8: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00e9: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ea: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00eb: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00ec: 0x221e, # INFINITY
|
||||
0x00ed: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ee: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00ef: 0x2229, # INTERSECTION
|
||||
0x00f0: 0x2261, # IDENTICAL TO
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x2320, # TOP HALF INTEGRAL
|
||||
0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xc2' # 0x0084 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xb6' # 0x0086 -> PILCROW SIGN
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\u2017' # 0x008d -> DOUBLE LOW LINE
|
||||
'\xc0' # 0x008e -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xa7' # 0x008f -> SECTION SIGN
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xc8' # 0x0091 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xca' # 0x0092 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xcb' # 0x0094 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcf' # 0x0095 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xa4' # 0x0098 -> CURRENCY SIGN
|
||||
'\xd4' # 0x0099 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xa2' # 0x009b -> CENT SIGN
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd9' # 0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xdb' # 0x009e -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xa6' # 0x00a0 -> BROKEN BAR
|
||||
'\xb4' # 0x00a1 -> ACUTE ACCENT
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xa8' # 0x00a4 -> DIAERESIS
|
||||
'\xb8' # 0x00a5 -> CEDILLA
|
||||
'\xb3' # 0x00a6 -> SUPERSCRIPT THREE
|
||||
'\xaf' # 0x00a7 -> MACRON
|
||||
'\xce' # 0x00a8 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\u2310' # 0x00a9 -> REVERSED NOT SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbe' # 0x00ad -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b1' # 0x00e0 -> GREEK SMALL LETTER ALPHA
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\u0393' # 0x00e2 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u03c0' # 0x00e3 -> GREEK SMALL LETTER PI
|
||||
'\u03a3' # 0x00e4 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03c3' # 0x00e5 -> GREEK SMALL LETTER SIGMA
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u03c4' # 0x00e7 -> GREEK SMALL LETTER TAU
|
||||
'\u03a6' # 0x00e8 -> GREEK CAPITAL LETTER PHI
|
||||
'\u0398' # 0x00e9 -> GREEK CAPITAL LETTER THETA
|
||||
'\u03a9' # 0x00ea -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b4' # 0x00eb -> GREEK SMALL LETTER DELTA
|
||||
'\u221e' # 0x00ec -> INFINITY
|
||||
'\u03c6' # 0x00ed -> GREEK SMALL LETTER PHI
|
||||
'\u03b5' # 0x00ee -> GREEK SMALL LETTER EPSILON
|
||||
'\u2229' # 0x00ef -> INTERSECTION
|
||||
'\u2261' # 0x00f0 -> IDENTICAL TO
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u2320' # 0x00f4 -> TOP HALF INTEGRAL
|
||||
'\u2321' # 0x00f5 -> BOTTOM HALF INTEGRAL
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a2: 0x009b, # CENT SIGN
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a4: 0x0098, # CURRENCY SIGN
|
||||
0x00a6: 0x00a0, # BROKEN BAR
|
||||
0x00a7: 0x008f, # SECTION SIGN
|
||||
0x00a8: 0x00a4, # DIAERESIS
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00af: 0x00a7, # MACRON
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b3: 0x00a6, # SUPERSCRIPT THREE
|
||||
0x00b4: 0x00a1, # ACUTE ACCENT
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b6: 0x0086, # PILCROW SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00b8: 0x00a5, # CEDILLA
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00be: 0x00ad, # VULGAR FRACTION THREE QUARTERS
|
||||
0x00c0: 0x008e, # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x00c2: 0x0084, # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c8: 0x0091, # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00ca: 0x0092, # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x00cb: 0x0094, # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x00ce: 0x00a8, # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0x00cf: 0x0095, # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x00d4: 0x0099, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x00d9: 0x009d, # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x00db: 0x009e, # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00ef: 0x008b, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x0393: 0x00e2, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0398: 0x00e9, # GREEK CAPITAL LETTER THETA
|
||||
0x03a3: 0x00e4, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a6: 0x00e8, # GREEK CAPITAL LETTER PHI
|
||||
0x03a9: 0x00ea, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03b1: 0x00e0, # GREEK SMALL LETTER ALPHA
|
||||
0x03b4: 0x00eb, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00ee, # GREEK SMALL LETTER EPSILON
|
||||
0x03c0: 0x00e3, # GREEK SMALL LETTER PI
|
||||
0x03c3: 0x00e5, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00e7, # GREEK SMALL LETTER TAU
|
||||
0x03c6: 0x00ed, # GREEK SMALL LETTER PHI
|
||||
0x2017: 0x008d, # DOUBLE LOW LINE
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x221e: 0x00ec, # INFINITY
|
||||
0x2229: 0x00ef, # INTERSECTION
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2261: 0x00f0, # IDENTICAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2310: 0x00a9, # REVERSED NOT SIGN
|
||||
0x2320: 0x00f4, # TOP HALF INTEGRAL
|
||||
0x2321: 0x00f5, # BOTTOM HALF INTEGRAL
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,690 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP864.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp864',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0025: 0x066a, # ARABIC PERCENT SIGN
|
||||
0x0080: 0x00b0, # DEGREE SIGN
|
||||
0x0081: 0x00b7, # MIDDLE DOT
|
||||
0x0082: 0x2219, # BULLET OPERATOR
|
||||
0x0083: 0x221a, # SQUARE ROOT
|
||||
0x0084: 0x2592, # MEDIUM SHADE
|
||||
0x0085: 0x2500, # FORMS LIGHT HORIZONTAL
|
||||
0x0086: 0x2502, # FORMS LIGHT VERTICAL
|
||||
0x0087: 0x253c, # FORMS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x0088: 0x2524, # FORMS LIGHT VERTICAL AND LEFT
|
||||
0x0089: 0x252c, # FORMS LIGHT DOWN AND HORIZONTAL
|
||||
0x008a: 0x251c, # FORMS LIGHT VERTICAL AND RIGHT
|
||||
0x008b: 0x2534, # FORMS LIGHT UP AND HORIZONTAL
|
||||
0x008c: 0x2510, # FORMS LIGHT DOWN AND LEFT
|
||||
0x008d: 0x250c, # FORMS LIGHT DOWN AND RIGHT
|
||||
0x008e: 0x2514, # FORMS LIGHT UP AND RIGHT
|
||||
0x008f: 0x2518, # FORMS LIGHT UP AND LEFT
|
||||
0x0090: 0x03b2, # GREEK SMALL BETA
|
||||
0x0091: 0x221e, # INFINITY
|
||||
0x0092: 0x03c6, # GREEK SMALL PHI
|
||||
0x0093: 0x00b1, # PLUS-OR-MINUS SIGN
|
||||
0x0094: 0x00bd, # FRACTION 1/2
|
||||
0x0095: 0x00bc, # FRACTION 1/4
|
||||
0x0096: 0x2248, # ALMOST EQUAL TO
|
||||
0x0097: 0x00ab, # LEFT POINTING GUILLEMET
|
||||
0x0098: 0x00bb, # RIGHT POINTING GUILLEMET
|
||||
0x0099: 0xfef7, # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
0x009a: 0xfef8, # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
0x009b: None, # UNDEFINED
|
||||
0x009c: None, # UNDEFINED
|
||||
0x009d: 0xfefb, # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
|
||||
0x009e: 0xfefc, # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
||||
0x009f: None, # UNDEFINED
|
||||
0x00a1: 0x00ad, # SOFT HYPHEN
|
||||
0x00a2: 0xfe82, # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
|
||||
0x00a5: 0xfe84, # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
0x00a6: None, # UNDEFINED
|
||||
0x00a7: None, # UNDEFINED
|
||||
0x00a8: 0xfe8e, # ARABIC LETTER ALEF FINAL FORM
|
||||
0x00a9: 0xfe8f, # ARABIC LETTER BEH ISOLATED FORM
|
||||
0x00aa: 0xfe95, # ARABIC LETTER TEH ISOLATED FORM
|
||||
0x00ab: 0xfe99, # ARABIC LETTER THEH ISOLATED FORM
|
||||
0x00ac: 0x060c, # ARABIC COMMA
|
||||
0x00ad: 0xfe9d, # ARABIC LETTER JEEM ISOLATED FORM
|
||||
0x00ae: 0xfea1, # ARABIC LETTER HAH ISOLATED FORM
|
||||
0x00af: 0xfea5, # ARABIC LETTER KHAH ISOLATED FORM
|
||||
0x00b0: 0x0660, # ARABIC-INDIC DIGIT ZERO
|
||||
0x00b1: 0x0661, # ARABIC-INDIC DIGIT ONE
|
||||
0x00b2: 0x0662, # ARABIC-INDIC DIGIT TWO
|
||||
0x00b3: 0x0663, # ARABIC-INDIC DIGIT THREE
|
||||
0x00b4: 0x0664, # ARABIC-INDIC DIGIT FOUR
|
||||
0x00b5: 0x0665, # ARABIC-INDIC DIGIT FIVE
|
||||
0x00b6: 0x0666, # ARABIC-INDIC DIGIT SIX
|
||||
0x00b7: 0x0667, # ARABIC-INDIC DIGIT SEVEN
|
||||
0x00b8: 0x0668, # ARABIC-INDIC DIGIT EIGHT
|
||||
0x00b9: 0x0669, # ARABIC-INDIC DIGIT NINE
|
||||
0x00ba: 0xfed1, # ARABIC LETTER FEH ISOLATED FORM
|
||||
0x00bb: 0x061b, # ARABIC SEMICOLON
|
||||
0x00bc: 0xfeb1, # ARABIC LETTER SEEN ISOLATED FORM
|
||||
0x00bd: 0xfeb5, # ARABIC LETTER SHEEN ISOLATED FORM
|
||||
0x00be: 0xfeb9, # ARABIC LETTER SAD ISOLATED FORM
|
||||
0x00bf: 0x061f, # ARABIC QUESTION MARK
|
||||
0x00c0: 0x00a2, # CENT SIGN
|
||||
0x00c1: 0xfe80, # ARABIC LETTER HAMZA ISOLATED FORM
|
||||
0x00c2: 0xfe81, # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
0x00c3: 0xfe83, # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
0x00c4: 0xfe85, # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
|
||||
0x00c5: 0xfeca, # ARABIC LETTER AIN FINAL FORM
|
||||
0x00c6: 0xfe8b, # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
|
||||
0x00c7: 0xfe8d, # ARABIC LETTER ALEF ISOLATED FORM
|
||||
0x00c8: 0xfe91, # ARABIC LETTER BEH INITIAL FORM
|
||||
0x00c9: 0xfe93, # ARABIC LETTER TEH MARBUTA ISOLATED FORM
|
||||
0x00ca: 0xfe97, # ARABIC LETTER TEH INITIAL FORM
|
||||
0x00cb: 0xfe9b, # ARABIC LETTER THEH INITIAL FORM
|
||||
0x00cc: 0xfe9f, # ARABIC LETTER JEEM INITIAL FORM
|
||||
0x00cd: 0xfea3, # ARABIC LETTER HAH INITIAL FORM
|
||||
0x00ce: 0xfea7, # ARABIC LETTER KHAH INITIAL FORM
|
||||
0x00cf: 0xfea9, # ARABIC LETTER DAL ISOLATED FORM
|
||||
0x00d0: 0xfeab, # ARABIC LETTER THAL ISOLATED FORM
|
||||
0x00d1: 0xfead, # ARABIC LETTER REH ISOLATED FORM
|
||||
0x00d2: 0xfeaf, # ARABIC LETTER ZAIN ISOLATED FORM
|
||||
0x00d3: 0xfeb3, # ARABIC LETTER SEEN INITIAL FORM
|
||||
0x00d4: 0xfeb7, # ARABIC LETTER SHEEN INITIAL FORM
|
||||
0x00d5: 0xfebb, # ARABIC LETTER SAD INITIAL FORM
|
||||
0x00d6: 0xfebf, # ARABIC LETTER DAD INITIAL FORM
|
||||
0x00d7: 0xfec1, # ARABIC LETTER TAH ISOLATED FORM
|
||||
0x00d8: 0xfec5, # ARABIC LETTER ZAH ISOLATED FORM
|
||||
0x00d9: 0xfecb, # ARABIC LETTER AIN INITIAL FORM
|
||||
0x00da: 0xfecf, # ARABIC LETTER GHAIN INITIAL FORM
|
||||
0x00db: 0x00a6, # BROKEN VERTICAL BAR
|
||||
0x00dc: 0x00ac, # NOT SIGN
|
||||
0x00dd: 0x00f7, # DIVISION SIGN
|
||||
0x00de: 0x00d7, # MULTIPLICATION SIGN
|
||||
0x00df: 0xfec9, # ARABIC LETTER AIN ISOLATED FORM
|
||||
0x00e0: 0x0640, # ARABIC TATWEEL
|
||||
0x00e1: 0xfed3, # ARABIC LETTER FEH INITIAL FORM
|
||||
0x00e2: 0xfed7, # ARABIC LETTER QAF INITIAL FORM
|
||||
0x00e3: 0xfedb, # ARABIC LETTER KAF INITIAL FORM
|
||||
0x00e4: 0xfedf, # ARABIC LETTER LAM INITIAL FORM
|
||||
0x00e5: 0xfee3, # ARABIC LETTER MEEM INITIAL FORM
|
||||
0x00e6: 0xfee7, # ARABIC LETTER NOON INITIAL FORM
|
||||
0x00e7: 0xfeeb, # ARABIC LETTER HEH INITIAL FORM
|
||||
0x00e8: 0xfeed, # ARABIC LETTER WAW ISOLATED FORM
|
||||
0x00e9: 0xfeef, # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
|
||||
0x00ea: 0xfef3, # ARABIC LETTER YEH INITIAL FORM
|
||||
0x00eb: 0xfebd, # ARABIC LETTER DAD ISOLATED FORM
|
||||
0x00ec: 0xfecc, # ARABIC LETTER AIN MEDIAL FORM
|
||||
0x00ed: 0xfece, # ARABIC LETTER GHAIN FINAL FORM
|
||||
0x00ee: 0xfecd, # ARABIC LETTER GHAIN ISOLATED FORM
|
||||
0x00ef: 0xfee1, # ARABIC LETTER MEEM ISOLATED FORM
|
||||
0x00f0: 0xfe7d, # ARABIC SHADDA MEDIAL FORM
|
||||
0x00f1: 0x0651, # ARABIC SHADDAH
|
||||
0x00f2: 0xfee5, # ARABIC LETTER NOON ISOLATED FORM
|
||||
0x00f3: 0xfee9, # ARABIC LETTER HEH ISOLATED FORM
|
||||
0x00f4: 0xfeec, # ARABIC LETTER HEH MEDIAL FORM
|
||||
0x00f5: 0xfef0, # ARABIC LETTER ALEF MAKSURA FINAL FORM
|
||||
0x00f6: 0xfef2, # ARABIC LETTER YEH FINAL FORM
|
||||
0x00f7: 0xfed0, # ARABIC LETTER GHAIN MEDIAL FORM
|
||||
0x00f8: 0xfed5, # ARABIC LETTER QAF ISOLATED FORM
|
||||
0x00f9: 0xfef5, # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
0x00fa: 0xfef6, # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
|
||||
0x00fb: 0xfedd, # ARABIC LETTER LAM ISOLATED FORM
|
||||
0x00fc: 0xfed9, # ARABIC LETTER KAF ISOLATED FORM
|
||||
0x00fd: 0xfef1, # ARABIC LETTER YEH ISOLATED FORM
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: None, # UNDEFINED
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'\u066a' # 0x0025 -> ARABIC PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xb0' # 0x0080 -> DEGREE SIGN
|
||||
'\xb7' # 0x0081 -> MIDDLE DOT
|
||||
'\u2219' # 0x0082 -> BULLET OPERATOR
|
||||
'\u221a' # 0x0083 -> SQUARE ROOT
|
||||
'\u2592' # 0x0084 -> MEDIUM SHADE
|
||||
'\u2500' # 0x0085 -> FORMS LIGHT HORIZONTAL
|
||||
'\u2502' # 0x0086 -> FORMS LIGHT VERTICAL
|
||||
'\u253c' # 0x0087 -> FORMS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u2524' # 0x0088 -> FORMS LIGHT VERTICAL AND LEFT
|
||||
'\u252c' # 0x0089 -> FORMS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x008a -> FORMS LIGHT VERTICAL AND RIGHT
|
||||
'\u2534' # 0x008b -> FORMS LIGHT UP AND HORIZONTAL
|
||||
'\u2510' # 0x008c -> FORMS LIGHT DOWN AND LEFT
|
||||
'\u250c' # 0x008d -> FORMS LIGHT DOWN AND RIGHT
|
||||
'\u2514' # 0x008e -> FORMS LIGHT UP AND RIGHT
|
||||
'\u2518' # 0x008f -> FORMS LIGHT UP AND LEFT
|
||||
'\u03b2' # 0x0090 -> GREEK SMALL BETA
|
||||
'\u221e' # 0x0091 -> INFINITY
|
||||
'\u03c6' # 0x0092 -> GREEK SMALL PHI
|
||||
'\xb1' # 0x0093 -> PLUS-OR-MINUS SIGN
|
||||
'\xbd' # 0x0094 -> FRACTION 1/2
|
||||
'\xbc' # 0x0095 -> FRACTION 1/4
|
||||
'\u2248' # 0x0096 -> ALMOST EQUAL TO
|
||||
'\xab' # 0x0097 -> LEFT POINTING GUILLEMET
|
||||
'\xbb' # 0x0098 -> RIGHT POINTING GUILLEMET
|
||||
'\ufef7' # 0x0099 -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
'\ufef8' # 0x009a -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
'\ufffe' # 0x009b -> UNDEFINED
|
||||
'\ufffe' # 0x009c -> UNDEFINED
|
||||
'\ufefb' # 0x009d -> ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
|
||||
'\ufefc' # 0x009e -> ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
||||
'\ufffe' # 0x009f -> UNDEFINED
|
||||
'\xa0' # 0x00a0 -> NON-BREAKING SPACE
|
||||
'\xad' # 0x00a1 -> SOFT HYPHEN
|
||||
'\ufe82' # 0x00a2 -> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
|
||||
'\xa3' # 0x00a3 -> POUND SIGN
|
||||
'\xa4' # 0x00a4 -> CURRENCY SIGN
|
||||
'\ufe84' # 0x00a5 -> ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
'\ufffe' # 0x00a6 -> UNDEFINED
|
||||
'\ufffe' # 0x00a7 -> UNDEFINED
|
||||
'\ufe8e' # 0x00a8 -> ARABIC LETTER ALEF FINAL FORM
|
||||
'\ufe8f' # 0x00a9 -> ARABIC LETTER BEH ISOLATED FORM
|
||||
'\ufe95' # 0x00aa -> ARABIC LETTER TEH ISOLATED FORM
|
||||
'\ufe99' # 0x00ab -> ARABIC LETTER THEH ISOLATED FORM
|
||||
'\u060c' # 0x00ac -> ARABIC COMMA
|
||||
'\ufe9d' # 0x00ad -> ARABIC LETTER JEEM ISOLATED FORM
|
||||
'\ufea1' # 0x00ae -> ARABIC LETTER HAH ISOLATED FORM
|
||||
'\ufea5' # 0x00af -> ARABIC LETTER KHAH ISOLATED FORM
|
||||
'\u0660' # 0x00b0 -> ARABIC-INDIC DIGIT ZERO
|
||||
'\u0661' # 0x00b1 -> ARABIC-INDIC DIGIT ONE
|
||||
'\u0662' # 0x00b2 -> ARABIC-INDIC DIGIT TWO
|
||||
'\u0663' # 0x00b3 -> ARABIC-INDIC DIGIT THREE
|
||||
'\u0664' # 0x00b4 -> ARABIC-INDIC DIGIT FOUR
|
||||
'\u0665' # 0x00b5 -> ARABIC-INDIC DIGIT FIVE
|
||||
'\u0666' # 0x00b6 -> ARABIC-INDIC DIGIT SIX
|
||||
'\u0667' # 0x00b7 -> ARABIC-INDIC DIGIT SEVEN
|
||||
'\u0668' # 0x00b8 -> ARABIC-INDIC DIGIT EIGHT
|
||||
'\u0669' # 0x00b9 -> ARABIC-INDIC DIGIT NINE
|
||||
'\ufed1' # 0x00ba -> ARABIC LETTER FEH ISOLATED FORM
|
||||
'\u061b' # 0x00bb -> ARABIC SEMICOLON
|
||||
'\ufeb1' # 0x00bc -> ARABIC LETTER SEEN ISOLATED FORM
|
||||
'\ufeb5' # 0x00bd -> ARABIC LETTER SHEEN ISOLATED FORM
|
||||
'\ufeb9' # 0x00be -> ARABIC LETTER SAD ISOLATED FORM
|
||||
'\u061f' # 0x00bf -> ARABIC QUESTION MARK
|
||||
'\xa2' # 0x00c0 -> CENT SIGN
|
||||
'\ufe80' # 0x00c1 -> ARABIC LETTER HAMZA ISOLATED FORM
|
||||
'\ufe81' # 0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
'\ufe83' # 0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
'\ufe85' # 0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
|
||||
'\ufeca' # 0x00c5 -> ARABIC LETTER AIN FINAL FORM
|
||||
'\ufe8b' # 0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
|
||||
'\ufe8d' # 0x00c7 -> ARABIC LETTER ALEF ISOLATED FORM
|
||||
'\ufe91' # 0x00c8 -> ARABIC LETTER BEH INITIAL FORM
|
||||
'\ufe93' # 0x00c9 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
|
||||
'\ufe97' # 0x00ca -> ARABIC LETTER TEH INITIAL FORM
|
||||
'\ufe9b' # 0x00cb -> ARABIC LETTER THEH INITIAL FORM
|
||||
'\ufe9f' # 0x00cc -> ARABIC LETTER JEEM INITIAL FORM
|
||||
'\ufea3' # 0x00cd -> ARABIC LETTER HAH INITIAL FORM
|
||||
'\ufea7' # 0x00ce -> ARABIC LETTER KHAH INITIAL FORM
|
||||
'\ufea9' # 0x00cf -> ARABIC LETTER DAL ISOLATED FORM
|
||||
'\ufeab' # 0x00d0 -> ARABIC LETTER THAL ISOLATED FORM
|
||||
'\ufead' # 0x00d1 -> ARABIC LETTER REH ISOLATED FORM
|
||||
'\ufeaf' # 0x00d2 -> ARABIC LETTER ZAIN ISOLATED FORM
|
||||
'\ufeb3' # 0x00d3 -> ARABIC LETTER SEEN INITIAL FORM
|
||||
'\ufeb7' # 0x00d4 -> ARABIC LETTER SHEEN INITIAL FORM
|
||||
'\ufebb' # 0x00d5 -> ARABIC LETTER SAD INITIAL FORM
|
||||
'\ufebf' # 0x00d6 -> ARABIC LETTER DAD INITIAL FORM
|
||||
'\ufec1' # 0x00d7 -> ARABIC LETTER TAH ISOLATED FORM
|
||||
'\ufec5' # 0x00d8 -> ARABIC LETTER ZAH ISOLATED FORM
|
||||
'\ufecb' # 0x00d9 -> ARABIC LETTER AIN INITIAL FORM
|
||||
'\ufecf' # 0x00da -> ARABIC LETTER GHAIN INITIAL FORM
|
||||
'\xa6' # 0x00db -> BROKEN VERTICAL BAR
|
||||
'\xac' # 0x00dc -> NOT SIGN
|
||||
'\xf7' # 0x00dd -> DIVISION SIGN
|
||||
'\xd7' # 0x00de -> MULTIPLICATION SIGN
|
||||
'\ufec9' # 0x00df -> ARABIC LETTER AIN ISOLATED FORM
|
||||
'\u0640' # 0x00e0 -> ARABIC TATWEEL
|
||||
'\ufed3' # 0x00e1 -> ARABIC LETTER FEH INITIAL FORM
|
||||
'\ufed7' # 0x00e2 -> ARABIC LETTER QAF INITIAL FORM
|
||||
'\ufedb' # 0x00e3 -> ARABIC LETTER KAF INITIAL FORM
|
||||
'\ufedf' # 0x00e4 -> ARABIC LETTER LAM INITIAL FORM
|
||||
'\ufee3' # 0x00e5 -> ARABIC LETTER MEEM INITIAL FORM
|
||||
'\ufee7' # 0x00e6 -> ARABIC LETTER NOON INITIAL FORM
|
||||
'\ufeeb' # 0x00e7 -> ARABIC LETTER HEH INITIAL FORM
|
||||
'\ufeed' # 0x00e8 -> ARABIC LETTER WAW ISOLATED FORM
|
||||
'\ufeef' # 0x00e9 -> ARABIC LETTER ALEF MAKSURA ISOLATED FORM
|
||||
'\ufef3' # 0x00ea -> ARABIC LETTER YEH INITIAL FORM
|
||||
'\ufebd' # 0x00eb -> ARABIC LETTER DAD ISOLATED FORM
|
||||
'\ufecc' # 0x00ec -> ARABIC LETTER AIN MEDIAL FORM
|
||||
'\ufece' # 0x00ed -> ARABIC LETTER GHAIN FINAL FORM
|
||||
'\ufecd' # 0x00ee -> ARABIC LETTER GHAIN ISOLATED FORM
|
||||
'\ufee1' # 0x00ef -> ARABIC LETTER MEEM ISOLATED FORM
|
||||
'\ufe7d' # 0x00f0 -> ARABIC SHADDA MEDIAL FORM
|
||||
'\u0651' # 0x00f1 -> ARABIC SHADDAH
|
||||
'\ufee5' # 0x00f2 -> ARABIC LETTER NOON ISOLATED FORM
|
||||
'\ufee9' # 0x00f3 -> ARABIC LETTER HEH ISOLATED FORM
|
||||
'\ufeec' # 0x00f4 -> ARABIC LETTER HEH MEDIAL FORM
|
||||
'\ufef0' # 0x00f5 -> ARABIC LETTER ALEF MAKSURA FINAL FORM
|
||||
'\ufef2' # 0x00f6 -> ARABIC LETTER YEH FINAL FORM
|
||||
'\ufed0' # 0x00f7 -> ARABIC LETTER GHAIN MEDIAL FORM
|
||||
'\ufed5' # 0x00f8 -> ARABIC LETTER QAF ISOLATED FORM
|
||||
'\ufef5' # 0x00f9 -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
'\ufef6' # 0x00fa -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
|
||||
'\ufedd' # 0x00fb -> ARABIC LETTER LAM ISOLATED FORM
|
||||
'\ufed9' # 0x00fc -> ARABIC LETTER KAF ISOLATED FORM
|
||||
'\ufef1' # 0x00fd -> ARABIC LETTER YEH ISOLATED FORM
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\ufffe' # 0x00ff -> UNDEFINED
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00a0, # NON-BREAKING SPACE
|
||||
0x00a2: 0x00c0, # CENT SIGN
|
||||
0x00a3: 0x00a3, # POUND SIGN
|
||||
0x00a4: 0x00a4, # CURRENCY SIGN
|
||||
0x00a6: 0x00db, # BROKEN VERTICAL BAR
|
||||
0x00ab: 0x0097, # LEFT POINTING GUILLEMET
|
||||
0x00ac: 0x00dc, # NOT SIGN
|
||||
0x00ad: 0x00a1, # SOFT HYPHEN
|
||||
0x00b0: 0x0080, # DEGREE SIGN
|
||||
0x00b1: 0x0093, # PLUS-OR-MINUS SIGN
|
||||
0x00b7: 0x0081, # MIDDLE DOT
|
||||
0x00bb: 0x0098, # RIGHT POINTING GUILLEMET
|
||||
0x00bc: 0x0095, # FRACTION 1/4
|
||||
0x00bd: 0x0094, # FRACTION 1/2
|
||||
0x00d7: 0x00de, # MULTIPLICATION SIGN
|
||||
0x00f7: 0x00dd, # DIVISION SIGN
|
||||
0x03b2: 0x0090, # GREEK SMALL BETA
|
||||
0x03c6: 0x0092, # GREEK SMALL PHI
|
||||
0x060c: 0x00ac, # ARABIC COMMA
|
||||
0x061b: 0x00bb, # ARABIC SEMICOLON
|
||||
0x061f: 0x00bf, # ARABIC QUESTION MARK
|
||||
0x0640: 0x00e0, # ARABIC TATWEEL
|
||||
0x0651: 0x00f1, # ARABIC SHADDAH
|
||||
0x0660: 0x00b0, # ARABIC-INDIC DIGIT ZERO
|
||||
0x0661: 0x00b1, # ARABIC-INDIC DIGIT ONE
|
||||
0x0662: 0x00b2, # ARABIC-INDIC DIGIT TWO
|
||||
0x0663: 0x00b3, # ARABIC-INDIC DIGIT THREE
|
||||
0x0664: 0x00b4, # ARABIC-INDIC DIGIT FOUR
|
||||
0x0665: 0x00b5, # ARABIC-INDIC DIGIT FIVE
|
||||
0x0666: 0x00b6, # ARABIC-INDIC DIGIT SIX
|
||||
0x0667: 0x00b7, # ARABIC-INDIC DIGIT SEVEN
|
||||
0x0668: 0x00b8, # ARABIC-INDIC DIGIT EIGHT
|
||||
0x0669: 0x00b9, # ARABIC-INDIC DIGIT NINE
|
||||
0x066a: 0x0025, # ARABIC PERCENT SIGN
|
||||
0x2219: 0x0082, # BULLET OPERATOR
|
||||
0x221a: 0x0083, # SQUARE ROOT
|
||||
0x221e: 0x0091, # INFINITY
|
||||
0x2248: 0x0096, # ALMOST EQUAL TO
|
||||
0x2500: 0x0085, # FORMS LIGHT HORIZONTAL
|
||||
0x2502: 0x0086, # FORMS LIGHT VERTICAL
|
||||
0x250c: 0x008d, # FORMS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x008c, # FORMS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x008e, # FORMS LIGHT UP AND RIGHT
|
||||
0x2518: 0x008f, # FORMS LIGHT UP AND LEFT
|
||||
0x251c: 0x008a, # FORMS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x0088, # FORMS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x0089, # FORMS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x008b, # FORMS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x0087, # FORMS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2592: 0x0084, # MEDIUM SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
0xfe7d: 0x00f0, # ARABIC SHADDA MEDIAL FORM
|
||||
0xfe80: 0x00c1, # ARABIC LETTER HAMZA ISOLATED FORM
|
||||
0xfe81: 0x00c2, # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
0xfe82: 0x00a2, # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
|
||||
0xfe83: 0x00c3, # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
0xfe84: 0x00a5, # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
0xfe85: 0x00c4, # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
|
||||
0xfe8b: 0x00c6, # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
|
||||
0xfe8d: 0x00c7, # ARABIC LETTER ALEF ISOLATED FORM
|
||||
0xfe8e: 0x00a8, # ARABIC LETTER ALEF FINAL FORM
|
||||
0xfe8f: 0x00a9, # ARABIC LETTER BEH ISOLATED FORM
|
||||
0xfe91: 0x00c8, # ARABIC LETTER BEH INITIAL FORM
|
||||
0xfe93: 0x00c9, # ARABIC LETTER TEH MARBUTA ISOLATED FORM
|
||||
0xfe95: 0x00aa, # ARABIC LETTER TEH ISOLATED FORM
|
||||
0xfe97: 0x00ca, # ARABIC LETTER TEH INITIAL FORM
|
||||
0xfe99: 0x00ab, # ARABIC LETTER THEH ISOLATED FORM
|
||||
0xfe9b: 0x00cb, # ARABIC LETTER THEH INITIAL FORM
|
||||
0xfe9d: 0x00ad, # ARABIC LETTER JEEM ISOLATED FORM
|
||||
0xfe9f: 0x00cc, # ARABIC LETTER JEEM INITIAL FORM
|
||||
0xfea1: 0x00ae, # ARABIC LETTER HAH ISOLATED FORM
|
||||
0xfea3: 0x00cd, # ARABIC LETTER HAH INITIAL FORM
|
||||
0xfea5: 0x00af, # ARABIC LETTER KHAH ISOLATED FORM
|
||||
0xfea7: 0x00ce, # ARABIC LETTER KHAH INITIAL FORM
|
||||
0xfea9: 0x00cf, # ARABIC LETTER DAL ISOLATED FORM
|
||||
0xfeab: 0x00d0, # ARABIC LETTER THAL ISOLATED FORM
|
||||
0xfead: 0x00d1, # ARABIC LETTER REH ISOLATED FORM
|
||||
0xfeaf: 0x00d2, # ARABIC LETTER ZAIN ISOLATED FORM
|
||||
0xfeb1: 0x00bc, # ARABIC LETTER SEEN ISOLATED FORM
|
||||
0xfeb3: 0x00d3, # ARABIC LETTER SEEN INITIAL FORM
|
||||
0xfeb5: 0x00bd, # ARABIC LETTER SHEEN ISOLATED FORM
|
||||
0xfeb7: 0x00d4, # ARABIC LETTER SHEEN INITIAL FORM
|
||||
0xfeb9: 0x00be, # ARABIC LETTER SAD ISOLATED FORM
|
||||
0xfebb: 0x00d5, # ARABIC LETTER SAD INITIAL FORM
|
||||
0xfebd: 0x00eb, # ARABIC LETTER DAD ISOLATED FORM
|
||||
0xfebf: 0x00d6, # ARABIC LETTER DAD INITIAL FORM
|
||||
0xfec1: 0x00d7, # ARABIC LETTER TAH ISOLATED FORM
|
||||
0xfec5: 0x00d8, # ARABIC LETTER ZAH ISOLATED FORM
|
||||
0xfec9: 0x00df, # ARABIC LETTER AIN ISOLATED FORM
|
||||
0xfeca: 0x00c5, # ARABIC LETTER AIN FINAL FORM
|
||||
0xfecb: 0x00d9, # ARABIC LETTER AIN INITIAL FORM
|
||||
0xfecc: 0x00ec, # ARABIC LETTER AIN MEDIAL FORM
|
||||
0xfecd: 0x00ee, # ARABIC LETTER GHAIN ISOLATED FORM
|
||||
0xfece: 0x00ed, # ARABIC LETTER GHAIN FINAL FORM
|
||||
0xfecf: 0x00da, # ARABIC LETTER GHAIN INITIAL FORM
|
||||
0xfed0: 0x00f7, # ARABIC LETTER GHAIN MEDIAL FORM
|
||||
0xfed1: 0x00ba, # ARABIC LETTER FEH ISOLATED FORM
|
||||
0xfed3: 0x00e1, # ARABIC LETTER FEH INITIAL FORM
|
||||
0xfed5: 0x00f8, # ARABIC LETTER QAF ISOLATED FORM
|
||||
0xfed7: 0x00e2, # ARABIC LETTER QAF INITIAL FORM
|
||||
0xfed9: 0x00fc, # ARABIC LETTER KAF ISOLATED FORM
|
||||
0xfedb: 0x00e3, # ARABIC LETTER KAF INITIAL FORM
|
||||
0xfedd: 0x00fb, # ARABIC LETTER LAM ISOLATED FORM
|
||||
0xfedf: 0x00e4, # ARABIC LETTER LAM INITIAL FORM
|
||||
0xfee1: 0x00ef, # ARABIC LETTER MEEM ISOLATED FORM
|
||||
0xfee3: 0x00e5, # ARABIC LETTER MEEM INITIAL FORM
|
||||
0xfee5: 0x00f2, # ARABIC LETTER NOON ISOLATED FORM
|
||||
0xfee7: 0x00e6, # ARABIC LETTER NOON INITIAL FORM
|
||||
0xfee9: 0x00f3, # ARABIC LETTER HEH ISOLATED FORM
|
||||
0xfeeb: 0x00e7, # ARABIC LETTER HEH INITIAL FORM
|
||||
0xfeec: 0x00f4, # ARABIC LETTER HEH MEDIAL FORM
|
||||
0xfeed: 0x00e8, # ARABIC LETTER WAW ISOLATED FORM
|
||||
0xfeef: 0x00e9, # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
|
||||
0xfef0: 0x00f5, # ARABIC LETTER ALEF MAKSURA FINAL FORM
|
||||
0xfef1: 0x00fd, # ARABIC LETTER YEH ISOLATED FORM
|
||||
0xfef2: 0x00f6, # ARABIC LETTER YEH FINAL FORM
|
||||
0xfef3: 0x00ea, # ARABIC LETTER YEH INITIAL FORM
|
||||
0xfef5: 0x00f9, # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
0xfef6: 0x00fa, # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
|
||||
0xfef7: 0x0099, # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
0xfef8: 0x009a, # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
0xfefb: 0x009d, # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
|
||||
0xfefc: 0x009e, # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP865.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp865',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x0081: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x0082: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x0083: 0x00e2, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x0084: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x0085: 0x00e0, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x0086: 0x00e5, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x0087: 0x00e7, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x0088: 0x00ea, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x0089: 0x00eb, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x008a: 0x00e8, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x008b: 0x00ef, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x008c: 0x00ee, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x008d: 0x00ec, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x008e: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x008f: 0x00c5, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x0090: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x0091: 0x00e6, # LATIN SMALL LIGATURE AE
|
||||
0x0092: 0x00c6, # LATIN CAPITAL LIGATURE AE
|
||||
0x0093: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x0094: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x0095: 0x00f2, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x0096: 0x00fb, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x0097: 0x00f9, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x0098: 0x00ff, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0099: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x009a: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x009b: 0x00f8, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x00d8, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x009e: 0x20a7, # PESETA SIGN
|
||||
0x009f: 0x0192, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x00a0: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00a1: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00a2: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00a3: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00a4: 0x00f1, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00a5: 0x00d1, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00a6: 0x00aa, # FEMININE ORDINAL INDICATOR
|
||||
0x00a7: 0x00ba, # MASCULINE ORDINAL INDICATOR
|
||||
0x00a8: 0x00bf, # INVERTED QUESTION MARK
|
||||
0x00a9: 0x2310, # REVERSED NOT SIGN
|
||||
0x00aa: 0x00ac, # NOT SIGN
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x00bc, # VULGAR FRACTION ONE QUARTER
|
||||
0x00ad: 0x00a1, # INVERTED EXCLAMATION MARK
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00a4, # CURRENCY SIGN
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00e1: 0x00df, # LATIN SMALL LETTER SHARP S
|
||||
0x00e2: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00e3: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00e4: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00e5: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00e6: 0x00b5, # MICRO SIGN
|
||||
0x00e7: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00e8: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00e9: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ea: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00eb: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00ec: 0x221e, # INFINITY
|
||||
0x00ed: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00ee: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00ef: 0x2229, # INTERSECTION
|
||||
0x00f0: 0x2261, # IDENTICAL TO
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x2265, # GREATER-THAN OR EQUAL TO
|
||||
0x00f3: 0x2264, # LESS-THAN OR EQUAL TO
|
||||
0x00f4: 0x2320, # TOP HALF INTEGRAL
|
||||
0x00f5: 0x2321, # BOTTOM HALF INTEGRAL
|
||||
0x00f6: 0x00f7, # DIVISION SIGN
|
||||
0x00f7: 0x2248, # ALMOST EQUAL TO
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x207f, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x00fd: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xfc' # 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xe9' # 0x0082 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xe2' # 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe4' # 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe0' # 0x0085 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe5' # 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe7' # 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xea' # 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xe8' # 0x008a -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xef' # 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xee' # 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xec' # 0x008d -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xc4' # 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc9' # 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xe6' # 0x0091 -> LATIN SMALL LIGATURE AE
|
||||
'\xc6' # 0x0092 -> LATIN CAPITAL LIGATURE AE
|
||||
'\xf4' # 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf6' # 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf2' # 0x0095 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xfb' # 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xf9' # 0x0097 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xff' # 0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xd6' # 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xf8' # 0x009b -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\xd8' # 0x009d -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\u20a7' # 0x009e -> PESETA SIGN
|
||||
'\u0192' # 0x009f -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xe1' # 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xed' # 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf3' # 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xf1' # 0x00a4 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xd1' # 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xaa' # 0x00a6 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0x00a7 -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbf' # 0x00a8 -> INVERTED QUESTION MARK
|
||||
'\u2310' # 0x00a9 -> REVERSED NOT SIGN
|
||||
'\xac' # 0x00aa -> NOT SIGN
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\xbc' # 0x00ac -> VULGAR FRACTION ONE QUARTER
|
||||
'\xa1' # 0x00ad -> INVERTED EXCLAMATION MARK
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xa4' # 0x00af -> CURRENCY SIGN
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b1' # 0x00e0 -> GREEK SMALL LETTER ALPHA
|
||||
'\xdf' # 0x00e1 -> LATIN SMALL LETTER SHARP S
|
||||
'\u0393' # 0x00e2 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u03c0' # 0x00e3 -> GREEK SMALL LETTER PI
|
||||
'\u03a3' # 0x00e4 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03c3' # 0x00e5 -> GREEK SMALL LETTER SIGMA
|
||||
'\xb5' # 0x00e6 -> MICRO SIGN
|
||||
'\u03c4' # 0x00e7 -> GREEK SMALL LETTER TAU
|
||||
'\u03a6' # 0x00e8 -> GREEK CAPITAL LETTER PHI
|
||||
'\u0398' # 0x00e9 -> GREEK CAPITAL LETTER THETA
|
||||
'\u03a9' # 0x00ea -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b4' # 0x00eb -> GREEK SMALL LETTER DELTA
|
||||
'\u221e' # 0x00ec -> INFINITY
|
||||
'\u03c6' # 0x00ed -> GREEK SMALL LETTER PHI
|
||||
'\u03b5' # 0x00ee -> GREEK SMALL LETTER EPSILON
|
||||
'\u2229' # 0x00ef -> INTERSECTION
|
||||
'\u2261' # 0x00f0 -> IDENTICAL TO
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u2265' # 0x00f2 -> GREATER-THAN OR EQUAL TO
|
||||
'\u2264' # 0x00f3 -> LESS-THAN OR EQUAL TO
|
||||
'\u2320' # 0x00f4 -> TOP HALF INTEGRAL
|
||||
'\u2321' # 0x00f5 -> BOTTOM HALF INTEGRAL
|
||||
'\xf7' # 0x00f6 -> DIVISION SIGN
|
||||
'\u2248' # 0x00f7 -> ALMOST EQUAL TO
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u207f' # 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
|
||||
'\xb2' # 0x00fd -> SUPERSCRIPT TWO
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a1: 0x00ad, # INVERTED EXCLAMATION MARK
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a4: 0x00af, # CURRENCY SIGN
|
||||
0x00aa: 0x00a6, # FEMININE ORDINAL INDICATOR
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x00aa, # NOT SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x00fd, # SUPERSCRIPT TWO
|
||||
0x00b5: 0x00e6, # MICRO SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x00ba: 0x00a7, # MASCULINE ORDINAL INDICATOR
|
||||
0x00bc: 0x00ac, # VULGAR FRACTION ONE QUARTER
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x00bf: 0x00a8, # INVERTED QUESTION MARK
|
||||
0x00c4: 0x008e, # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x00c5: 0x008f, # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x00c6: 0x0092, # LATIN CAPITAL LIGATURE AE
|
||||
0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x00c9: 0x0090, # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x00d1: 0x00a5, # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x00d6: 0x0099, # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x00d8: 0x009d, # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x00dc: 0x009a, # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x00df: 0x00e1, # LATIN SMALL LETTER SHARP S
|
||||
0x00e0: 0x0085, # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x00e1: 0x00a0, # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x00e2: 0x0083, # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x00e4: 0x0084, # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x00e5: 0x0086, # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x00e6: 0x0091, # LATIN SMALL LIGATURE AE
|
||||
0x00e7: 0x0087, # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x00e8: 0x008a, # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x00e9: 0x0082, # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x00ea: 0x0088, # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x00eb: 0x0089, # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x00ec: 0x008d, # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x00ed: 0x00a1, # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x00ee: 0x008c, # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x00ef: 0x008b, # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x00f1: 0x00a4, # LATIN SMALL LETTER N WITH TILDE
|
||||
0x00f2: 0x0095, # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x00f3: 0x00a2, # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x00f4: 0x0093, # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x00f6: 0x0094, # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x00f7: 0x00f6, # DIVISION SIGN
|
||||
0x00f8: 0x009b, # LATIN SMALL LETTER O WITH STROKE
|
||||
0x00f9: 0x0097, # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x00fa: 0x00a3, # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x00fb: 0x0096, # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x00fc: 0x0081, # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x00ff: 0x0098, # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x0192: 0x009f, # LATIN SMALL LETTER F WITH HOOK
|
||||
0x0393: 0x00e2, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0398: 0x00e9, # GREEK CAPITAL LETTER THETA
|
||||
0x03a3: 0x00e4, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a6: 0x00e8, # GREEK CAPITAL LETTER PHI
|
||||
0x03a9: 0x00ea, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03b1: 0x00e0, # GREEK SMALL LETTER ALPHA
|
||||
0x03b4: 0x00eb, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00ee, # GREEK SMALL LETTER EPSILON
|
||||
0x03c0: 0x00e3, # GREEK SMALL LETTER PI
|
||||
0x03c3: 0x00e5, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00e7, # GREEK SMALL LETTER TAU
|
||||
0x03c6: 0x00ed, # GREEK SMALL LETTER PHI
|
||||
0x207f: 0x00fc, # SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0x20a7: 0x009e, # PESETA SIGN
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x221e: 0x00ec, # INFINITY
|
||||
0x2229: 0x00ef, # INTERSECTION
|
||||
0x2248: 0x00f7, # ALMOST EQUAL TO
|
||||
0x2261: 0x00f0, # IDENTICAL TO
|
||||
0x2264: 0x00f3, # LESS-THAN OR EQUAL TO
|
||||
0x2265: 0x00f2, # GREATER-THAN OR EQUAL TO
|
||||
0x2310: 0x00a9, # REVERSED NOT SIGN
|
||||
0x2320: 0x00f4, # TOP HALF INTEGRAL
|
||||
0x2321: 0x00f5, # BOTTOM HALF INTEGRAL
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,698 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP866.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp866',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: 0x0410, # CYRILLIC CAPITAL LETTER A
|
||||
0x0081: 0x0411, # CYRILLIC CAPITAL LETTER BE
|
||||
0x0082: 0x0412, # CYRILLIC CAPITAL LETTER VE
|
||||
0x0083: 0x0413, # CYRILLIC CAPITAL LETTER GHE
|
||||
0x0084: 0x0414, # CYRILLIC CAPITAL LETTER DE
|
||||
0x0085: 0x0415, # CYRILLIC CAPITAL LETTER IE
|
||||
0x0086: 0x0416, # CYRILLIC CAPITAL LETTER ZHE
|
||||
0x0087: 0x0417, # CYRILLIC CAPITAL LETTER ZE
|
||||
0x0088: 0x0418, # CYRILLIC CAPITAL LETTER I
|
||||
0x0089: 0x0419, # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x008a: 0x041a, # CYRILLIC CAPITAL LETTER KA
|
||||
0x008b: 0x041b, # CYRILLIC CAPITAL LETTER EL
|
||||
0x008c: 0x041c, # CYRILLIC CAPITAL LETTER EM
|
||||
0x008d: 0x041d, # CYRILLIC CAPITAL LETTER EN
|
||||
0x008e: 0x041e, # CYRILLIC CAPITAL LETTER O
|
||||
0x008f: 0x041f, # CYRILLIC CAPITAL LETTER PE
|
||||
0x0090: 0x0420, # CYRILLIC CAPITAL LETTER ER
|
||||
0x0091: 0x0421, # CYRILLIC CAPITAL LETTER ES
|
||||
0x0092: 0x0422, # CYRILLIC CAPITAL LETTER TE
|
||||
0x0093: 0x0423, # CYRILLIC CAPITAL LETTER U
|
||||
0x0094: 0x0424, # CYRILLIC CAPITAL LETTER EF
|
||||
0x0095: 0x0425, # CYRILLIC CAPITAL LETTER HA
|
||||
0x0096: 0x0426, # CYRILLIC CAPITAL LETTER TSE
|
||||
0x0097: 0x0427, # CYRILLIC CAPITAL LETTER CHE
|
||||
0x0098: 0x0428, # CYRILLIC CAPITAL LETTER SHA
|
||||
0x0099: 0x0429, # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x009a: 0x042a, # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x009b: 0x042b, # CYRILLIC CAPITAL LETTER YERU
|
||||
0x009c: 0x042c, # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x009d: 0x042d, # CYRILLIC CAPITAL LETTER E
|
||||
0x009e: 0x042e, # CYRILLIC CAPITAL LETTER YU
|
||||
0x009f: 0x042f, # CYRILLIC CAPITAL LETTER YA
|
||||
0x00a0: 0x0430, # CYRILLIC SMALL LETTER A
|
||||
0x00a1: 0x0431, # CYRILLIC SMALL LETTER BE
|
||||
0x00a2: 0x0432, # CYRILLIC SMALL LETTER VE
|
||||
0x00a3: 0x0433, # CYRILLIC SMALL LETTER GHE
|
||||
0x00a4: 0x0434, # CYRILLIC SMALL LETTER DE
|
||||
0x00a5: 0x0435, # CYRILLIC SMALL LETTER IE
|
||||
0x00a6: 0x0436, # CYRILLIC SMALL LETTER ZHE
|
||||
0x00a7: 0x0437, # CYRILLIC SMALL LETTER ZE
|
||||
0x00a8: 0x0438, # CYRILLIC SMALL LETTER I
|
||||
0x00a9: 0x0439, # CYRILLIC SMALL LETTER SHORT I
|
||||
0x00aa: 0x043a, # CYRILLIC SMALL LETTER KA
|
||||
0x00ab: 0x043b, # CYRILLIC SMALL LETTER EL
|
||||
0x00ac: 0x043c, # CYRILLIC SMALL LETTER EM
|
||||
0x00ad: 0x043d, # CYRILLIC SMALL LETTER EN
|
||||
0x00ae: 0x043e, # CYRILLIC SMALL LETTER O
|
||||
0x00af: 0x043f, # CYRILLIC SMALL LETTER PE
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x2561, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x00b6: 0x2562, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x00b7: 0x2556, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x00b8: 0x2555, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x255c, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x00be: 0x255b, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x255e, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x00c7: 0x255f, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x2567, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d0: 0x2568, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d1: 0x2564, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d2: 0x2565, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d3: 0x2559, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x00d4: 0x2558, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x00d5: 0x2552, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x00d6: 0x2553, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x00d7: 0x256b, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x00d8: 0x256a, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x258c, # LEFT HALF BLOCK
|
||||
0x00de: 0x2590, # RIGHT HALF BLOCK
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x0440, # CYRILLIC SMALL LETTER ER
|
||||
0x00e1: 0x0441, # CYRILLIC SMALL LETTER ES
|
||||
0x00e2: 0x0442, # CYRILLIC SMALL LETTER TE
|
||||
0x00e3: 0x0443, # CYRILLIC SMALL LETTER U
|
||||
0x00e4: 0x0444, # CYRILLIC SMALL LETTER EF
|
||||
0x00e5: 0x0445, # CYRILLIC SMALL LETTER HA
|
||||
0x00e6: 0x0446, # CYRILLIC SMALL LETTER TSE
|
||||
0x00e7: 0x0447, # CYRILLIC SMALL LETTER CHE
|
||||
0x00e8: 0x0448, # CYRILLIC SMALL LETTER SHA
|
||||
0x00e9: 0x0449, # CYRILLIC SMALL LETTER SHCHA
|
||||
0x00ea: 0x044a, # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x00eb: 0x044b, # CYRILLIC SMALL LETTER YERU
|
||||
0x00ec: 0x044c, # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0x00ed: 0x044d, # CYRILLIC SMALL LETTER E
|
||||
0x00ee: 0x044e, # CYRILLIC SMALL LETTER YU
|
||||
0x00ef: 0x044f, # CYRILLIC SMALL LETTER YA
|
||||
0x00f0: 0x0401, # CYRILLIC CAPITAL LETTER IO
|
||||
0x00f1: 0x0451, # CYRILLIC SMALL LETTER IO
|
||||
0x00f2: 0x0404, # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x00f3: 0x0454, # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x00f4: 0x0407, # CYRILLIC CAPITAL LETTER YI
|
||||
0x00f5: 0x0457, # CYRILLIC SMALL LETTER YI
|
||||
0x00f6: 0x040e, # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0x00f7: 0x045e, # CYRILLIC SMALL LETTER SHORT U
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x2219, # BULLET OPERATOR
|
||||
0x00fa: 0x00b7, # MIDDLE DOT
|
||||
0x00fb: 0x221a, # SQUARE ROOT
|
||||
0x00fc: 0x2116, # NUMERO SIGN
|
||||
0x00fd: 0x00a4, # CURRENCY SIGN
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\u0410' # 0x0080 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0411' # 0x0081 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0412' # 0x0082 -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u0413' # 0x0083 -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\u0414' # 0x0084 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0415' # 0x0085 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0416' # 0x0086 -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0417' # 0x0087 -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0418' # 0x0088 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u0419' # 0x0089 -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u041a' # 0x008a -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u041b' # 0x008b -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u041c' # 0x008c -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u041d' # 0x008d -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u041e' # 0x008e -> CYRILLIC CAPITAL LETTER O
|
||||
'\u041f' # 0x008f -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u0420' # 0x0090 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0421' # 0x0091 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0422' # 0x0092 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0423' # 0x0093 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0424' # 0x0094 -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0425' # 0x0095 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0426' # 0x0096 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0427' # 0x0097 -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\u0428' # 0x0098 -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u0429' # 0x0099 -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u042a' # 0x009a -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
'\u042b' # 0x009b -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u042c' # 0x009c -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u042d' # 0x009d -> CYRILLIC CAPITAL LETTER E
|
||||
'\u042e' # 0x009e -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u042f' # 0x009f -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0430' # 0x00a0 -> CYRILLIC SMALL LETTER A
|
||||
'\u0431' # 0x00a1 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0432' # 0x00a2 -> CYRILLIC SMALL LETTER VE
|
||||
'\u0433' # 0x00a3 -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0434' # 0x00a4 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0435' # 0x00a5 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0436' # 0x00a6 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0437' # 0x00a7 -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0438' # 0x00a8 -> CYRILLIC SMALL LETTER I
|
||||
'\u0439' # 0x00a9 -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u043a' # 0x00aa -> CYRILLIC SMALL LETTER KA
|
||||
'\u043b' # 0x00ab -> CYRILLIC SMALL LETTER EL
|
||||
'\u043c' # 0x00ac -> CYRILLIC SMALL LETTER EM
|
||||
'\u043d' # 0x00ad -> CYRILLIC SMALL LETTER EN
|
||||
'\u043e' # 0x00ae -> CYRILLIC SMALL LETTER O
|
||||
'\u043f' # 0x00af -> CYRILLIC SMALL LETTER PE
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u2561' # 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u2562' # 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2556' # 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2555' # 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255c' # 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255b' # 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u255e' # 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u2567' # 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2564' # 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2559' # 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u2558' # 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2552' # 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u2553' # 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u256b' # 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256a' # 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u258c' # 0x00dd -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x00de -> RIGHT HALF BLOCK
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u0440' # 0x00e0 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0441' # 0x00e1 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0442' # 0x00e2 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0443' # 0x00e3 -> CYRILLIC SMALL LETTER U
|
||||
'\u0444' # 0x00e4 -> CYRILLIC SMALL LETTER EF
|
||||
'\u0445' # 0x00e5 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0446' # 0x00e6 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0447' # 0x00e7 -> CYRILLIC SMALL LETTER CHE
|
||||
'\u0448' # 0x00e8 -> CYRILLIC SMALL LETTER SHA
|
||||
'\u0449' # 0x00e9 -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u044a' # 0x00ea -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u044b' # 0x00eb -> CYRILLIC SMALL LETTER YERU
|
||||
'\u044c' # 0x00ec -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u044d' # 0x00ed -> CYRILLIC SMALL LETTER E
|
||||
'\u044e' # 0x00ee -> CYRILLIC SMALL LETTER YU
|
||||
'\u044f' # 0x00ef -> CYRILLIC SMALL LETTER YA
|
||||
'\u0401' # 0x00f0 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\u0451' # 0x00f1 -> CYRILLIC SMALL LETTER IO
|
||||
'\u0404' # 0x00f2 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
'\u0454' # 0x00f3 -> CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
'\u0407' # 0x00f4 -> CYRILLIC CAPITAL LETTER YI
|
||||
'\u0457' # 0x00f5 -> CYRILLIC SMALL LETTER YI
|
||||
'\u040e' # 0x00f6 -> CYRILLIC CAPITAL LETTER SHORT U
|
||||
'\u045e' # 0x00f7 -> CYRILLIC SMALL LETTER SHORT U
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\u2219' # 0x00f9 -> BULLET OPERATOR
|
||||
'\xb7' # 0x00fa -> MIDDLE DOT
|
||||
'\u221a' # 0x00fb -> SQUARE ROOT
|
||||
'\u2116' # 0x00fc -> NUMERO SIGN
|
||||
'\xa4' # 0x00fd -> CURRENCY SIGN
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a4: 0x00fd, # CURRENCY SIGN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b7: 0x00fa, # MIDDLE DOT
|
||||
0x0401: 0x00f0, # CYRILLIC CAPITAL LETTER IO
|
||||
0x0404: 0x00f2, # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x0407: 0x00f4, # CYRILLIC CAPITAL LETTER YI
|
||||
0x040e: 0x00f6, # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0x0410: 0x0080, # CYRILLIC CAPITAL LETTER A
|
||||
0x0411: 0x0081, # CYRILLIC CAPITAL LETTER BE
|
||||
0x0412: 0x0082, # CYRILLIC CAPITAL LETTER VE
|
||||
0x0413: 0x0083, # CYRILLIC CAPITAL LETTER GHE
|
||||
0x0414: 0x0084, # CYRILLIC CAPITAL LETTER DE
|
||||
0x0415: 0x0085, # CYRILLIC CAPITAL LETTER IE
|
||||
0x0416: 0x0086, # CYRILLIC CAPITAL LETTER ZHE
|
||||
0x0417: 0x0087, # CYRILLIC CAPITAL LETTER ZE
|
||||
0x0418: 0x0088, # CYRILLIC CAPITAL LETTER I
|
||||
0x0419: 0x0089, # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x041a: 0x008a, # CYRILLIC CAPITAL LETTER KA
|
||||
0x041b: 0x008b, # CYRILLIC CAPITAL LETTER EL
|
||||
0x041c: 0x008c, # CYRILLIC CAPITAL LETTER EM
|
||||
0x041d: 0x008d, # CYRILLIC CAPITAL LETTER EN
|
||||
0x041e: 0x008e, # CYRILLIC CAPITAL LETTER O
|
||||
0x041f: 0x008f, # CYRILLIC CAPITAL LETTER PE
|
||||
0x0420: 0x0090, # CYRILLIC CAPITAL LETTER ER
|
||||
0x0421: 0x0091, # CYRILLIC CAPITAL LETTER ES
|
||||
0x0422: 0x0092, # CYRILLIC CAPITAL LETTER TE
|
||||
0x0423: 0x0093, # CYRILLIC CAPITAL LETTER U
|
||||
0x0424: 0x0094, # CYRILLIC CAPITAL LETTER EF
|
||||
0x0425: 0x0095, # CYRILLIC CAPITAL LETTER HA
|
||||
0x0426: 0x0096, # CYRILLIC CAPITAL LETTER TSE
|
||||
0x0427: 0x0097, # CYRILLIC CAPITAL LETTER CHE
|
||||
0x0428: 0x0098, # CYRILLIC CAPITAL LETTER SHA
|
||||
0x0429: 0x0099, # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x042a: 0x009a, # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x042b: 0x009b, # CYRILLIC CAPITAL LETTER YERU
|
||||
0x042c: 0x009c, # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x042d: 0x009d, # CYRILLIC CAPITAL LETTER E
|
||||
0x042e: 0x009e, # CYRILLIC CAPITAL LETTER YU
|
||||
0x042f: 0x009f, # CYRILLIC CAPITAL LETTER YA
|
||||
0x0430: 0x00a0, # CYRILLIC SMALL LETTER A
|
||||
0x0431: 0x00a1, # CYRILLIC SMALL LETTER BE
|
||||
0x0432: 0x00a2, # CYRILLIC SMALL LETTER VE
|
||||
0x0433: 0x00a3, # CYRILLIC SMALL LETTER GHE
|
||||
0x0434: 0x00a4, # CYRILLIC SMALL LETTER DE
|
||||
0x0435: 0x00a5, # CYRILLIC SMALL LETTER IE
|
||||
0x0436: 0x00a6, # CYRILLIC SMALL LETTER ZHE
|
||||
0x0437: 0x00a7, # CYRILLIC SMALL LETTER ZE
|
||||
0x0438: 0x00a8, # CYRILLIC SMALL LETTER I
|
||||
0x0439: 0x00a9, # CYRILLIC SMALL LETTER SHORT I
|
||||
0x043a: 0x00aa, # CYRILLIC SMALL LETTER KA
|
||||
0x043b: 0x00ab, # CYRILLIC SMALL LETTER EL
|
||||
0x043c: 0x00ac, # CYRILLIC SMALL LETTER EM
|
||||
0x043d: 0x00ad, # CYRILLIC SMALL LETTER EN
|
||||
0x043e: 0x00ae, # CYRILLIC SMALL LETTER O
|
||||
0x043f: 0x00af, # CYRILLIC SMALL LETTER PE
|
||||
0x0440: 0x00e0, # CYRILLIC SMALL LETTER ER
|
||||
0x0441: 0x00e1, # CYRILLIC SMALL LETTER ES
|
||||
0x0442: 0x00e2, # CYRILLIC SMALL LETTER TE
|
||||
0x0443: 0x00e3, # CYRILLIC SMALL LETTER U
|
||||
0x0444: 0x00e4, # CYRILLIC SMALL LETTER EF
|
||||
0x0445: 0x00e5, # CYRILLIC SMALL LETTER HA
|
||||
0x0446: 0x00e6, # CYRILLIC SMALL LETTER TSE
|
||||
0x0447: 0x00e7, # CYRILLIC SMALL LETTER CHE
|
||||
0x0448: 0x00e8, # CYRILLIC SMALL LETTER SHA
|
||||
0x0449: 0x00e9, # CYRILLIC SMALL LETTER SHCHA
|
||||
0x044a: 0x00ea, # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x044b: 0x00eb, # CYRILLIC SMALL LETTER YERU
|
||||
0x044c: 0x00ec, # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0x044d: 0x00ed, # CYRILLIC SMALL LETTER E
|
||||
0x044e: 0x00ee, # CYRILLIC SMALL LETTER YU
|
||||
0x044f: 0x00ef, # CYRILLIC SMALL LETTER YA
|
||||
0x0451: 0x00f1, # CYRILLIC SMALL LETTER IO
|
||||
0x0454: 0x00f3, # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x0457: 0x00f5, # CYRILLIC SMALL LETTER YI
|
||||
0x045e: 0x00f7, # CYRILLIC SMALL LETTER SHORT U
|
||||
0x2116: 0x00fc, # NUMERO SIGN
|
||||
0x2219: 0x00f9, # BULLET OPERATOR
|
||||
0x221a: 0x00fb, # SQUARE ROOT
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2552: 0x00d5, # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0x2553: 0x00d6, # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2555: 0x00b8, # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0x2556: 0x00b7, # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x2558: 0x00d4, # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0x2559: 0x00d3, # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255b: 0x00be, # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0x255c: 0x00bd, # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x255e: 0x00c6, # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0x255f: 0x00c7, # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2561: 0x00b5, # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0x2562: 0x00b6, # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2564: 0x00d1, # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2565: 0x00d2, # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2567: 0x00cf, # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0x2568: 0x00d0, # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256a: 0x00d8, # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0x256b: 0x00d7, # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x258c: 0x00dd, # LEFT HALF BLOCK
|
||||
0x2590: 0x00de, # RIGHT HALF BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,689 @@
|
||||
""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP869.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_map)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp869',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
### Decoding Map
|
||||
|
||||
decoding_map = codecs.make_identity_dict(range(256))
|
||||
decoding_map.update({
|
||||
0x0080: None, # UNDEFINED
|
||||
0x0081: None, # UNDEFINED
|
||||
0x0082: None, # UNDEFINED
|
||||
0x0083: None, # UNDEFINED
|
||||
0x0084: None, # UNDEFINED
|
||||
0x0085: None, # UNDEFINED
|
||||
0x0086: 0x0386, # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0x0087: None, # UNDEFINED
|
||||
0x0088: 0x00b7, # MIDDLE DOT
|
||||
0x0089: 0x00ac, # NOT SIGN
|
||||
0x008a: 0x00a6, # BROKEN BAR
|
||||
0x008b: 0x2018, # LEFT SINGLE QUOTATION MARK
|
||||
0x008c: 0x2019, # RIGHT SINGLE QUOTATION MARK
|
||||
0x008d: 0x0388, # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0x008e: 0x2015, # HORIZONTAL BAR
|
||||
0x008f: 0x0389, # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0x0090: 0x038a, # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0x0091: 0x03aa, # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0x0092: 0x038c, # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0x0093: None, # UNDEFINED
|
||||
0x0094: None, # UNDEFINED
|
||||
0x0095: 0x038e, # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0x0096: 0x03ab, # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0x0097: 0x00a9, # COPYRIGHT SIGN
|
||||
0x0098: 0x038f, # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0x0099: 0x00b2, # SUPERSCRIPT TWO
|
||||
0x009a: 0x00b3, # SUPERSCRIPT THREE
|
||||
0x009b: 0x03ac, # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0x009c: 0x00a3, # POUND SIGN
|
||||
0x009d: 0x03ad, # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0x009e: 0x03ae, # GREEK SMALL LETTER ETA WITH TONOS
|
||||
0x009f: 0x03af, # GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0x00a0: 0x03ca, # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0x00a1: 0x0390, # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
0x00a2: 0x03cc, # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0x00a3: 0x03cd, # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0x00a4: 0x0391, # GREEK CAPITAL LETTER ALPHA
|
||||
0x00a5: 0x0392, # GREEK CAPITAL LETTER BETA
|
||||
0x00a6: 0x0393, # GREEK CAPITAL LETTER GAMMA
|
||||
0x00a7: 0x0394, # GREEK CAPITAL LETTER DELTA
|
||||
0x00a8: 0x0395, # GREEK CAPITAL LETTER EPSILON
|
||||
0x00a9: 0x0396, # GREEK CAPITAL LETTER ZETA
|
||||
0x00aa: 0x0397, # GREEK CAPITAL LETTER ETA
|
||||
0x00ab: 0x00bd, # VULGAR FRACTION ONE HALF
|
||||
0x00ac: 0x0398, # GREEK CAPITAL LETTER THETA
|
||||
0x00ad: 0x0399, # GREEK CAPITAL LETTER IOTA
|
||||
0x00ae: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00af: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00b0: 0x2591, # LIGHT SHADE
|
||||
0x00b1: 0x2592, # MEDIUM SHADE
|
||||
0x00b2: 0x2593, # DARK SHADE
|
||||
0x00b3: 0x2502, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x00b4: 0x2524, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x00b5: 0x039a, # GREEK CAPITAL LETTER KAPPA
|
||||
0x00b6: 0x039b, # GREEK CAPITAL LETTER LAMDA
|
||||
0x00b7: 0x039c, # GREEK CAPITAL LETTER MU
|
||||
0x00b8: 0x039d, # GREEK CAPITAL LETTER NU
|
||||
0x00b9: 0x2563, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x00ba: 0x2551, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x00bb: 0x2557, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x00bc: 0x255d, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x00bd: 0x039e, # GREEK CAPITAL LETTER XI
|
||||
0x00be: 0x039f, # GREEK CAPITAL LETTER OMICRON
|
||||
0x00bf: 0x2510, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x00c0: 0x2514, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x00c1: 0x2534, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x00c2: 0x252c, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x00c3: 0x251c, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x00c4: 0x2500, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x00c5: 0x253c, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x00c6: 0x03a0, # GREEK CAPITAL LETTER PI
|
||||
0x00c7: 0x03a1, # GREEK CAPITAL LETTER RHO
|
||||
0x00c8: 0x255a, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x00c9: 0x2554, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x00ca: 0x2569, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x00cb: 0x2566, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x00cc: 0x2560, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x00cd: 0x2550, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x00ce: 0x256c, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x00cf: 0x03a3, # GREEK CAPITAL LETTER SIGMA
|
||||
0x00d0: 0x03a4, # GREEK CAPITAL LETTER TAU
|
||||
0x00d1: 0x03a5, # GREEK CAPITAL LETTER UPSILON
|
||||
0x00d2: 0x03a6, # GREEK CAPITAL LETTER PHI
|
||||
0x00d3: 0x03a7, # GREEK CAPITAL LETTER CHI
|
||||
0x00d4: 0x03a8, # GREEK CAPITAL LETTER PSI
|
||||
0x00d5: 0x03a9, # GREEK CAPITAL LETTER OMEGA
|
||||
0x00d6: 0x03b1, # GREEK SMALL LETTER ALPHA
|
||||
0x00d7: 0x03b2, # GREEK SMALL LETTER BETA
|
||||
0x00d8: 0x03b3, # GREEK SMALL LETTER GAMMA
|
||||
0x00d9: 0x2518, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x00da: 0x250c, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x00db: 0x2588, # FULL BLOCK
|
||||
0x00dc: 0x2584, # LOWER HALF BLOCK
|
||||
0x00dd: 0x03b4, # GREEK SMALL LETTER DELTA
|
||||
0x00de: 0x03b5, # GREEK SMALL LETTER EPSILON
|
||||
0x00df: 0x2580, # UPPER HALF BLOCK
|
||||
0x00e0: 0x03b6, # GREEK SMALL LETTER ZETA
|
||||
0x00e1: 0x03b7, # GREEK SMALL LETTER ETA
|
||||
0x00e2: 0x03b8, # GREEK SMALL LETTER THETA
|
||||
0x00e3: 0x03b9, # GREEK SMALL LETTER IOTA
|
||||
0x00e4: 0x03ba, # GREEK SMALL LETTER KAPPA
|
||||
0x00e5: 0x03bb, # GREEK SMALL LETTER LAMDA
|
||||
0x00e6: 0x03bc, # GREEK SMALL LETTER MU
|
||||
0x00e7: 0x03bd, # GREEK SMALL LETTER NU
|
||||
0x00e8: 0x03be, # GREEK SMALL LETTER XI
|
||||
0x00e9: 0x03bf, # GREEK SMALL LETTER OMICRON
|
||||
0x00ea: 0x03c0, # GREEK SMALL LETTER PI
|
||||
0x00eb: 0x03c1, # GREEK SMALL LETTER RHO
|
||||
0x00ec: 0x03c3, # GREEK SMALL LETTER SIGMA
|
||||
0x00ed: 0x03c2, # GREEK SMALL LETTER FINAL SIGMA
|
||||
0x00ee: 0x03c4, # GREEK SMALL LETTER TAU
|
||||
0x00ef: 0x0384, # GREEK TONOS
|
||||
0x00f0: 0x00ad, # SOFT HYPHEN
|
||||
0x00f1: 0x00b1, # PLUS-MINUS SIGN
|
||||
0x00f2: 0x03c5, # GREEK SMALL LETTER UPSILON
|
||||
0x00f3: 0x03c6, # GREEK SMALL LETTER PHI
|
||||
0x00f4: 0x03c7, # GREEK SMALL LETTER CHI
|
||||
0x00f5: 0x00a7, # SECTION SIGN
|
||||
0x00f6: 0x03c8, # GREEK SMALL LETTER PSI
|
||||
0x00f7: 0x0385, # GREEK DIALYTIKA TONOS
|
||||
0x00f8: 0x00b0, # DEGREE SIGN
|
||||
0x00f9: 0x00a8, # DIAERESIS
|
||||
0x00fa: 0x03c9, # GREEK SMALL LETTER OMEGA
|
||||
0x00fb: 0x03cb, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0x00fc: 0x03b0, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
0x00fd: 0x03ce, # GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0x00fe: 0x25a0, # BLACK SQUARE
|
||||
0x00ff: 0x00a0, # NO-BREAK SPACE
|
||||
})
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x0000 -> NULL
|
||||
'\x01' # 0x0001 -> START OF HEADING
|
||||
'\x02' # 0x0002 -> START OF TEXT
|
||||
'\x03' # 0x0003 -> END OF TEXT
|
||||
'\x04' # 0x0004 -> END OF TRANSMISSION
|
||||
'\x05' # 0x0005 -> ENQUIRY
|
||||
'\x06' # 0x0006 -> ACKNOWLEDGE
|
||||
'\x07' # 0x0007 -> BELL
|
||||
'\x08' # 0x0008 -> BACKSPACE
|
||||
'\t' # 0x0009 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x000a -> LINE FEED
|
||||
'\x0b' # 0x000b -> VERTICAL TABULATION
|
||||
'\x0c' # 0x000c -> FORM FEED
|
||||
'\r' # 0x000d -> CARRIAGE RETURN
|
||||
'\x0e' # 0x000e -> SHIFT OUT
|
||||
'\x0f' # 0x000f -> SHIFT IN
|
||||
'\x10' # 0x0010 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x0011 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x0012 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x0013 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x0014 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x0016 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x0018 -> CANCEL
|
||||
'\x19' # 0x0019 -> END OF MEDIUM
|
||||
'\x1a' # 0x001a -> SUBSTITUTE
|
||||
'\x1b' # 0x001b -> ESCAPE
|
||||
'\x1c' # 0x001c -> FILE SEPARATOR
|
||||
'\x1d' # 0x001d -> GROUP SEPARATOR
|
||||
'\x1e' # 0x001e -> RECORD SEPARATOR
|
||||
'\x1f' # 0x001f -> UNIT SEPARATOR
|
||||
' ' # 0x0020 -> SPACE
|
||||
'!' # 0x0021 -> EXCLAMATION MARK
|
||||
'"' # 0x0022 -> QUOTATION MARK
|
||||
'#' # 0x0023 -> NUMBER SIGN
|
||||
'$' # 0x0024 -> DOLLAR SIGN
|
||||
'%' # 0x0025 -> PERCENT SIGN
|
||||
'&' # 0x0026 -> AMPERSAND
|
||||
"'" # 0x0027 -> APOSTROPHE
|
||||
'(' # 0x0028 -> LEFT PARENTHESIS
|
||||
')' # 0x0029 -> RIGHT PARENTHESIS
|
||||
'*' # 0x002a -> ASTERISK
|
||||
'+' # 0x002b -> PLUS SIGN
|
||||
',' # 0x002c -> COMMA
|
||||
'-' # 0x002d -> HYPHEN-MINUS
|
||||
'.' # 0x002e -> FULL STOP
|
||||
'/' # 0x002f -> SOLIDUS
|
||||
'0' # 0x0030 -> DIGIT ZERO
|
||||
'1' # 0x0031 -> DIGIT ONE
|
||||
'2' # 0x0032 -> DIGIT TWO
|
||||
'3' # 0x0033 -> DIGIT THREE
|
||||
'4' # 0x0034 -> DIGIT FOUR
|
||||
'5' # 0x0035 -> DIGIT FIVE
|
||||
'6' # 0x0036 -> DIGIT SIX
|
||||
'7' # 0x0037 -> DIGIT SEVEN
|
||||
'8' # 0x0038 -> DIGIT EIGHT
|
||||
'9' # 0x0039 -> DIGIT NINE
|
||||
':' # 0x003a -> COLON
|
||||
';' # 0x003b -> SEMICOLON
|
||||
'<' # 0x003c -> LESS-THAN SIGN
|
||||
'=' # 0x003d -> EQUALS SIGN
|
||||
'>' # 0x003e -> GREATER-THAN SIGN
|
||||
'?' # 0x003f -> QUESTION MARK
|
||||
'@' # 0x0040 -> COMMERCIAL AT
|
||||
'A' # 0x0041 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x0042 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x0043 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x0044 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x0045 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x0046 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x0047 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x0048 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x0049 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x004a -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x004b -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x004c -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x004d -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x004e -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x004f -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x0050 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x0052 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x0053 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x0054 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x0055 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x0056 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x0057 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x0058 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x005a -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x005b -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x005c -> REVERSE SOLIDUS
|
||||
']' # 0x005d -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x005e -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x005f -> LOW LINE
|
||||
'`' # 0x0060 -> GRAVE ACCENT
|
||||
'a' # 0x0061 -> LATIN SMALL LETTER A
|
||||
'b' # 0x0062 -> LATIN SMALL LETTER B
|
||||
'c' # 0x0063 -> LATIN SMALL LETTER C
|
||||
'd' # 0x0064 -> LATIN SMALL LETTER D
|
||||
'e' # 0x0065 -> LATIN SMALL LETTER E
|
||||
'f' # 0x0066 -> LATIN SMALL LETTER F
|
||||
'g' # 0x0067 -> LATIN SMALL LETTER G
|
||||
'h' # 0x0068 -> LATIN SMALL LETTER H
|
||||
'i' # 0x0069 -> LATIN SMALL LETTER I
|
||||
'j' # 0x006a -> LATIN SMALL LETTER J
|
||||
'k' # 0x006b -> LATIN SMALL LETTER K
|
||||
'l' # 0x006c -> LATIN SMALL LETTER L
|
||||
'm' # 0x006d -> LATIN SMALL LETTER M
|
||||
'n' # 0x006e -> LATIN SMALL LETTER N
|
||||
'o' # 0x006f -> LATIN SMALL LETTER O
|
||||
'p' # 0x0070 -> LATIN SMALL LETTER P
|
||||
'q' # 0x0071 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x0072 -> LATIN SMALL LETTER R
|
||||
's' # 0x0073 -> LATIN SMALL LETTER S
|
||||
't' # 0x0074 -> LATIN SMALL LETTER T
|
||||
'u' # 0x0075 -> LATIN SMALL LETTER U
|
||||
'v' # 0x0076 -> LATIN SMALL LETTER V
|
||||
'w' # 0x0077 -> LATIN SMALL LETTER W
|
||||
'x' # 0x0078 -> LATIN SMALL LETTER X
|
||||
'y' # 0x0079 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x007a -> LATIN SMALL LETTER Z
|
||||
'{' # 0x007b -> LEFT CURLY BRACKET
|
||||
'|' # 0x007c -> VERTICAL LINE
|
||||
'}' # 0x007d -> RIGHT CURLY BRACKET
|
||||
'~' # 0x007e -> TILDE
|
||||
'\x7f' # 0x007f -> DELETE
|
||||
'\ufffe' # 0x0080 -> UNDEFINED
|
||||
'\ufffe' # 0x0081 -> UNDEFINED
|
||||
'\ufffe' # 0x0082 -> UNDEFINED
|
||||
'\ufffe' # 0x0083 -> UNDEFINED
|
||||
'\ufffe' # 0x0084 -> UNDEFINED
|
||||
'\ufffe' # 0x0085 -> UNDEFINED
|
||||
'\u0386' # 0x0086 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
'\ufffe' # 0x0087 -> UNDEFINED
|
||||
'\xb7' # 0x0088 -> MIDDLE DOT
|
||||
'\xac' # 0x0089 -> NOT SIGN
|
||||
'\xa6' # 0x008a -> BROKEN BAR
|
||||
'\u2018' # 0x008b -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x008c -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u0388' # 0x008d -> GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
'\u2015' # 0x008e -> HORIZONTAL BAR
|
||||
'\u0389' # 0x008f -> GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
'\u038a' # 0x0090 -> GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
'\u03aa' # 0x0091 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
'\u038c' # 0x0092 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
'\ufffe' # 0x0093 -> UNDEFINED
|
||||
'\ufffe' # 0x0094 -> UNDEFINED
|
||||
'\u038e' # 0x0095 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
'\u03ab' # 0x0096 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
'\xa9' # 0x0097 -> COPYRIGHT SIGN
|
||||
'\u038f' # 0x0098 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
'\xb2' # 0x0099 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0x009a -> SUPERSCRIPT THREE
|
||||
'\u03ac' # 0x009b -> GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
'\xa3' # 0x009c -> POUND SIGN
|
||||
'\u03ad' # 0x009d -> GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
'\u03ae' # 0x009e -> GREEK SMALL LETTER ETA WITH TONOS
|
||||
'\u03af' # 0x009f -> GREEK SMALL LETTER IOTA WITH TONOS
|
||||
'\u03ca' # 0x00a0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
'\u0390' # 0x00a1 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
'\u03cc' # 0x00a2 -> GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
'\u03cd' # 0x00a3 -> GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
'\u0391' # 0x00a4 -> GREEK CAPITAL LETTER ALPHA
|
||||
'\u0392' # 0x00a5 -> GREEK CAPITAL LETTER BETA
|
||||
'\u0393' # 0x00a6 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u0394' # 0x00a7 -> GREEK CAPITAL LETTER DELTA
|
||||
'\u0395' # 0x00a8 -> GREEK CAPITAL LETTER EPSILON
|
||||
'\u0396' # 0x00a9 -> GREEK CAPITAL LETTER ZETA
|
||||
'\u0397' # 0x00aa -> GREEK CAPITAL LETTER ETA
|
||||
'\xbd' # 0x00ab -> VULGAR FRACTION ONE HALF
|
||||
'\u0398' # 0x00ac -> GREEK CAPITAL LETTER THETA
|
||||
'\u0399' # 0x00ad -> GREEK CAPITAL LETTER IOTA
|
||||
'\xab' # 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbb' # 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u2591' # 0x00b0 -> LIGHT SHADE
|
||||
'\u2592' # 0x00b1 -> MEDIUM SHADE
|
||||
'\u2593' # 0x00b2 -> DARK SHADE
|
||||
'\u2502' # 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u2524' # 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u039a' # 0x00b5 -> GREEK CAPITAL LETTER KAPPA
|
||||
'\u039b' # 0x00b6 -> GREEK CAPITAL LETTER LAMDA
|
||||
'\u039c' # 0x00b7 -> GREEK CAPITAL LETTER MU
|
||||
'\u039d' # 0x00b8 -> GREEK CAPITAL LETTER NU
|
||||
'\u2563' # 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2551' # 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2557' # 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u255d' # 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u039e' # 0x00bd -> GREEK CAPITAL LETTER XI
|
||||
'\u039f' # 0x00be -> GREEK CAPITAL LETTER OMICRON
|
||||
'\u2510' # 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2534' # 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u252c' # 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u251c' # 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2500' # 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u253c' # 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u03a0' # 0x00c6 -> GREEK CAPITAL LETTER PI
|
||||
'\u03a1' # 0x00c7 -> GREEK CAPITAL LETTER RHO
|
||||
'\u255a' # 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u2554' # 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2569' # 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u2566' # 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2560' # 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2550' # 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u256c' # 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\u03a3' # 0x00cf -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03a4' # 0x00d0 -> GREEK CAPITAL LETTER TAU
|
||||
'\u03a5' # 0x00d1 -> GREEK CAPITAL LETTER UPSILON
|
||||
'\u03a6' # 0x00d2 -> GREEK CAPITAL LETTER PHI
|
||||
'\u03a7' # 0x00d3 -> GREEK CAPITAL LETTER CHI
|
||||
'\u03a8' # 0x00d4 -> GREEK CAPITAL LETTER PSI
|
||||
'\u03a9' # 0x00d5 -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03b1' # 0x00d6 -> GREEK SMALL LETTER ALPHA
|
||||
'\u03b2' # 0x00d7 -> GREEK SMALL LETTER BETA
|
||||
'\u03b3' # 0x00d8 -> GREEK SMALL LETTER GAMMA
|
||||
'\u2518' # 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u250c' # 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2588' # 0x00db -> FULL BLOCK
|
||||
'\u2584' # 0x00dc -> LOWER HALF BLOCK
|
||||
'\u03b4' # 0x00dd -> GREEK SMALL LETTER DELTA
|
||||
'\u03b5' # 0x00de -> GREEK SMALL LETTER EPSILON
|
||||
'\u2580' # 0x00df -> UPPER HALF BLOCK
|
||||
'\u03b6' # 0x00e0 -> GREEK SMALL LETTER ZETA
|
||||
'\u03b7' # 0x00e1 -> GREEK SMALL LETTER ETA
|
||||
'\u03b8' # 0x00e2 -> GREEK SMALL LETTER THETA
|
||||
'\u03b9' # 0x00e3 -> GREEK SMALL LETTER IOTA
|
||||
'\u03ba' # 0x00e4 -> GREEK SMALL LETTER KAPPA
|
||||
'\u03bb' # 0x00e5 -> GREEK SMALL LETTER LAMDA
|
||||
'\u03bc' # 0x00e6 -> GREEK SMALL LETTER MU
|
||||
'\u03bd' # 0x00e7 -> GREEK SMALL LETTER NU
|
||||
'\u03be' # 0x00e8 -> GREEK SMALL LETTER XI
|
||||
'\u03bf' # 0x00e9 -> GREEK SMALL LETTER OMICRON
|
||||
'\u03c0' # 0x00ea -> GREEK SMALL LETTER PI
|
||||
'\u03c1' # 0x00eb -> GREEK SMALL LETTER RHO
|
||||
'\u03c3' # 0x00ec -> GREEK SMALL LETTER SIGMA
|
||||
'\u03c2' # 0x00ed -> GREEK SMALL LETTER FINAL SIGMA
|
||||
'\u03c4' # 0x00ee -> GREEK SMALL LETTER TAU
|
||||
'\u0384' # 0x00ef -> GREEK TONOS
|
||||
'\xad' # 0x00f0 -> SOFT HYPHEN
|
||||
'\xb1' # 0x00f1 -> PLUS-MINUS SIGN
|
||||
'\u03c5' # 0x00f2 -> GREEK SMALL LETTER UPSILON
|
||||
'\u03c6' # 0x00f3 -> GREEK SMALL LETTER PHI
|
||||
'\u03c7' # 0x00f4 -> GREEK SMALL LETTER CHI
|
||||
'\xa7' # 0x00f5 -> SECTION SIGN
|
||||
'\u03c8' # 0x00f6 -> GREEK SMALL LETTER PSI
|
||||
'\u0385' # 0x00f7 -> GREEK DIALYTIKA TONOS
|
||||
'\xb0' # 0x00f8 -> DEGREE SIGN
|
||||
'\xa8' # 0x00f9 -> DIAERESIS
|
||||
'\u03c9' # 0x00fa -> GREEK SMALL LETTER OMEGA
|
||||
'\u03cb' # 0x00fb -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03b0' # 0x00fc -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
'\u03ce' # 0x00fd -> GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
'\u25a0' # 0x00fe -> BLACK SQUARE
|
||||
'\xa0' # 0x00ff -> NO-BREAK SPACE
|
||||
)
|
||||
|
||||
### Encoding Map
|
||||
|
||||
encoding_map = {
|
||||
0x0000: 0x0000, # NULL
|
||||
0x0001: 0x0001, # START OF HEADING
|
||||
0x0002: 0x0002, # START OF TEXT
|
||||
0x0003: 0x0003, # END OF TEXT
|
||||
0x0004: 0x0004, # END OF TRANSMISSION
|
||||
0x0005: 0x0005, # ENQUIRY
|
||||
0x0006: 0x0006, # ACKNOWLEDGE
|
||||
0x0007: 0x0007, # BELL
|
||||
0x0008: 0x0008, # BACKSPACE
|
||||
0x0009: 0x0009, # HORIZONTAL TABULATION
|
||||
0x000a: 0x000a, # LINE FEED
|
||||
0x000b: 0x000b, # VERTICAL TABULATION
|
||||
0x000c: 0x000c, # FORM FEED
|
||||
0x000d: 0x000d, # CARRIAGE RETURN
|
||||
0x000e: 0x000e, # SHIFT OUT
|
||||
0x000f: 0x000f, # SHIFT IN
|
||||
0x0010: 0x0010, # DATA LINK ESCAPE
|
||||
0x0011: 0x0011, # DEVICE CONTROL ONE
|
||||
0x0012: 0x0012, # DEVICE CONTROL TWO
|
||||
0x0013: 0x0013, # DEVICE CONTROL THREE
|
||||
0x0014: 0x0014, # DEVICE CONTROL FOUR
|
||||
0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
|
||||
0x0016: 0x0016, # SYNCHRONOUS IDLE
|
||||
0x0017: 0x0017, # END OF TRANSMISSION BLOCK
|
||||
0x0018: 0x0018, # CANCEL
|
||||
0x0019: 0x0019, # END OF MEDIUM
|
||||
0x001a: 0x001a, # SUBSTITUTE
|
||||
0x001b: 0x001b, # ESCAPE
|
||||
0x001c: 0x001c, # FILE SEPARATOR
|
||||
0x001d: 0x001d, # GROUP SEPARATOR
|
||||
0x001e: 0x001e, # RECORD SEPARATOR
|
||||
0x001f: 0x001f, # UNIT SEPARATOR
|
||||
0x0020: 0x0020, # SPACE
|
||||
0x0021: 0x0021, # EXCLAMATION MARK
|
||||
0x0022: 0x0022, # QUOTATION MARK
|
||||
0x0023: 0x0023, # NUMBER SIGN
|
||||
0x0024: 0x0024, # DOLLAR SIGN
|
||||
0x0025: 0x0025, # PERCENT SIGN
|
||||
0x0026: 0x0026, # AMPERSAND
|
||||
0x0027: 0x0027, # APOSTROPHE
|
||||
0x0028: 0x0028, # LEFT PARENTHESIS
|
||||
0x0029: 0x0029, # RIGHT PARENTHESIS
|
||||
0x002a: 0x002a, # ASTERISK
|
||||
0x002b: 0x002b, # PLUS SIGN
|
||||
0x002c: 0x002c, # COMMA
|
||||
0x002d: 0x002d, # HYPHEN-MINUS
|
||||
0x002e: 0x002e, # FULL STOP
|
||||
0x002f: 0x002f, # SOLIDUS
|
||||
0x0030: 0x0030, # DIGIT ZERO
|
||||
0x0031: 0x0031, # DIGIT ONE
|
||||
0x0032: 0x0032, # DIGIT TWO
|
||||
0x0033: 0x0033, # DIGIT THREE
|
||||
0x0034: 0x0034, # DIGIT FOUR
|
||||
0x0035: 0x0035, # DIGIT FIVE
|
||||
0x0036: 0x0036, # DIGIT SIX
|
||||
0x0037: 0x0037, # DIGIT SEVEN
|
||||
0x0038: 0x0038, # DIGIT EIGHT
|
||||
0x0039: 0x0039, # DIGIT NINE
|
||||
0x003a: 0x003a, # COLON
|
||||
0x003b: 0x003b, # SEMICOLON
|
||||
0x003c: 0x003c, # LESS-THAN SIGN
|
||||
0x003d: 0x003d, # EQUALS SIGN
|
||||
0x003e: 0x003e, # GREATER-THAN SIGN
|
||||
0x003f: 0x003f, # QUESTION MARK
|
||||
0x0040: 0x0040, # COMMERCIAL AT
|
||||
0x0041: 0x0041, # LATIN CAPITAL LETTER A
|
||||
0x0042: 0x0042, # LATIN CAPITAL LETTER B
|
||||
0x0043: 0x0043, # LATIN CAPITAL LETTER C
|
||||
0x0044: 0x0044, # LATIN CAPITAL LETTER D
|
||||
0x0045: 0x0045, # LATIN CAPITAL LETTER E
|
||||
0x0046: 0x0046, # LATIN CAPITAL LETTER F
|
||||
0x0047: 0x0047, # LATIN CAPITAL LETTER G
|
||||
0x0048: 0x0048, # LATIN CAPITAL LETTER H
|
||||
0x0049: 0x0049, # LATIN CAPITAL LETTER I
|
||||
0x004a: 0x004a, # LATIN CAPITAL LETTER J
|
||||
0x004b: 0x004b, # LATIN CAPITAL LETTER K
|
||||
0x004c: 0x004c, # LATIN CAPITAL LETTER L
|
||||
0x004d: 0x004d, # LATIN CAPITAL LETTER M
|
||||
0x004e: 0x004e, # LATIN CAPITAL LETTER N
|
||||
0x004f: 0x004f, # LATIN CAPITAL LETTER O
|
||||
0x0050: 0x0050, # LATIN CAPITAL LETTER P
|
||||
0x0051: 0x0051, # LATIN CAPITAL LETTER Q
|
||||
0x0052: 0x0052, # LATIN CAPITAL LETTER R
|
||||
0x0053: 0x0053, # LATIN CAPITAL LETTER S
|
||||
0x0054: 0x0054, # LATIN CAPITAL LETTER T
|
||||
0x0055: 0x0055, # LATIN CAPITAL LETTER U
|
||||
0x0056: 0x0056, # LATIN CAPITAL LETTER V
|
||||
0x0057: 0x0057, # LATIN CAPITAL LETTER W
|
||||
0x0058: 0x0058, # LATIN CAPITAL LETTER X
|
||||
0x0059: 0x0059, # LATIN CAPITAL LETTER Y
|
||||
0x005a: 0x005a, # LATIN CAPITAL LETTER Z
|
||||
0x005b: 0x005b, # LEFT SQUARE BRACKET
|
||||
0x005c: 0x005c, # REVERSE SOLIDUS
|
||||
0x005d: 0x005d, # RIGHT SQUARE BRACKET
|
||||
0x005e: 0x005e, # CIRCUMFLEX ACCENT
|
||||
0x005f: 0x005f, # LOW LINE
|
||||
0x0060: 0x0060, # GRAVE ACCENT
|
||||
0x0061: 0x0061, # LATIN SMALL LETTER A
|
||||
0x0062: 0x0062, # LATIN SMALL LETTER B
|
||||
0x0063: 0x0063, # LATIN SMALL LETTER C
|
||||
0x0064: 0x0064, # LATIN SMALL LETTER D
|
||||
0x0065: 0x0065, # LATIN SMALL LETTER E
|
||||
0x0066: 0x0066, # LATIN SMALL LETTER F
|
||||
0x0067: 0x0067, # LATIN SMALL LETTER G
|
||||
0x0068: 0x0068, # LATIN SMALL LETTER H
|
||||
0x0069: 0x0069, # LATIN SMALL LETTER I
|
||||
0x006a: 0x006a, # LATIN SMALL LETTER J
|
||||
0x006b: 0x006b, # LATIN SMALL LETTER K
|
||||
0x006c: 0x006c, # LATIN SMALL LETTER L
|
||||
0x006d: 0x006d, # LATIN SMALL LETTER M
|
||||
0x006e: 0x006e, # LATIN SMALL LETTER N
|
||||
0x006f: 0x006f, # LATIN SMALL LETTER O
|
||||
0x0070: 0x0070, # LATIN SMALL LETTER P
|
||||
0x0071: 0x0071, # LATIN SMALL LETTER Q
|
||||
0x0072: 0x0072, # LATIN SMALL LETTER R
|
||||
0x0073: 0x0073, # LATIN SMALL LETTER S
|
||||
0x0074: 0x0074, # LATIN SMALL LETTER T
|
||||
0x0075: 0x0075, # LATIN SMALL LETTER U
|
||||
0x0076: 0x0076, # LATIN SMALL LETTER V
|
||||
0x0077: 0x0077, # LATIN SMALL LETTER W
|
||||
0x0078: 0x0078, # LATIN SMALL LETTER X
|
||||
0x0079: 0x0079, # LATIN SMALL LETTER Y
|
||||
0x007a: 0x007a, # LATIN SMALL LETTER Z
|
||||
0x007b: 0x007b, # LEFT CURLY BRACKET
|
||||
0x007c: 0x007c, # VERTICAL LINE
|
||||
0x007d: 0x007d, # RIGHT CURLY BRACKET
|
||||
0x007e: 0x007e, # TILDE
|
||||
0x007f: 0x007f, # DELETE
|
||||
0x00a0: 0x00ff, # NO-BREAK SPACE
|
||||
0x00a3: 0x009c, # POUND SIGN
|
||||
0x00a6: 0x008a, # BROKEN BAR
|
||||
0x00a7: 0x00f5, # SECTION SIGN
|
||||
0x00a8: 0x00f9, # DIAERESIS
|
||||
0x00a9: 0x0097, # COPYRIGHT SIGN
|
||||
0x00ab: 0x00ae, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00ac: 0x0089, # NOT SIGN
|
||||
0x00ad: 0x00f0, # SOFT HYPHEN
|
||||
0x00b0: 0x00f8, # DEGREE SIGN
|
||||
0x00b1: 0x00f1, # PLUS-MINUS SIGN
|
||||
0x00b2: 0x0099, # SUPERSCRIPT TWO
|
||||
0x00b3: 0x009a, # SUPERSCRIPT THREE
|
||||
0x00b7: 0x0088, # MIDDLE DOT
|
||||
0x00bb: 0x00af, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0x00bd: 0x00ab, # VULGAR FRACTION ONE HALF
|
||||
0x0384: 0x00ef, # GREEK TONOS
|
||||
0x0385: 0x00f7, # GREEK DIALYTIKA TONOS
|
||||
0x0386: 0x0086, # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0x0388: 0x008d, # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0x0389: 0x008f, # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0x038a: 0x0090, # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0x038c: 0x0092, # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0x038e: 0x0095, # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0x038f: 0x0098, # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0x0390: 0x00a1, # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
0x0391: 0x00a4, # GREEK CAPITAL LETTER ALPHA
|
||||
0x0392: 0x00a5, # GREEK CAPITAL LETTER BETA
|
||||
0x0393: 0x00a6, # GREEK CAPITAL LETTER GAMMA
|
||||
0x0394: 0x00a7, # GREEK CAPITAL LETTER DELTA
|
||||
0x0395: 0x00a8, # GREEK CAPITAL LETTER EPSILON
|
||||
0x0396: 0x00a9, # GREEK CAPITAL LETTER ZETA
|
||||
0x0397: 0x00aa, # GREEK CAPITAL LETTER ETA
|
||||
0x0398: 0x00ac, # GREEK CAPITAL LETTER THETA
|
||||
0x0399: 0x00ad, # GREEK CAPITAL LETTER IOTA
|
||||
0x039a: 0x00b5, # GREEK CAPITAL LETTER KAPPA
|
||||
0x039b: 0x00b6, # GREEK CAPITAL LETTER LAMDA
|
||||
0x039c: 0x00b7, # GREEK CAPITAL LETTER MU
|
||||
0x039d: 0x00b8, # GREEK CAPITAL LETTER NU
|
||||
0x039e: 0x00bd, # GREEK CAPITAL LETTER XI
|
||||
0x039f: 0x00be, # GREEK CAPITAL LETTER OMICRON
|
||||
0x03a0: 0x00c6, # GREEK CAPITAL LETTER PI
|
||||
0x03a1: 0x00c7, # GREEK CAPITAL LETTER RHO
|
||||
0x03a3: 0x00cf, # GREEK CAPITAL LETTER SIGMA
|
||||
0x03a4: 0x00d0, # GREEK CAPITAL LETTER TAU
|
||||
0x03a5: 0x00d1, # GREEK CAPITAL LETTER UPSILON
|
||||
0x03a6: 0x00d2, # GREEK CAPITAL LETTER PHI
|
||||
0x03a7: 0x00d3, # GREEK CAPITAL LETTER CHI
|
||||
0x03a8: 0x00d4, # GREEK CAPITAL LETTER PSI
|
||||
0x03a9: 0x00d5, # GREEK CAPITAL LETTER OMEGA
|
||||
0x03aa: 0x0091, # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0x03ab: 0x0096, # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0x03ac: 0x009b, # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0x03ad: 0x009d, # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0x03ae: 0x009e, # GREEK SMALL LETTER ETA WITH TONOS
|
||||
0x03af: 0x009f, # GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0x03b0: 0x00fc, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
0x03b1: 0x00d6, # GREEK SMALL LETTER ALPHA
|
||||
0x03b2: 0x00d7, # GREEK SMALL LETTER BETA
|
||||
0x03b3: 0x00d8, # GREEK SMALL LETTER GAMMA
|
||||
0x03b4: 0x00dd, # GREEK SMALL LETTER DELTA
|
||||
0x03b5: 0x00de, # GREEK SMALL LETTER EPSILON
|
||||
0x03b6: 0x00e0, # GREEK SMALL LETTER ZETA
|
||||
0x03b7: 0x00e1, # GREEK SMALL LETTER ETA
|
||||
0x03b8: 0x00e2, # GREEK SMALL LETTER THETA
|
||||
0x03b9: 0x00e3, # GREEK SMALL LETTER IOTA
|
||||
0x03ba: 0x00e4, # GREEK SMALL LETTER KAPPA
|
||||
0x03bb: 0x00e5, # GREEK SMALL LETTER LAMDA
|
||||
0x03bc: 0x00e6, # GREEK SMALL LETTER MU
|
||||
0x03bd: 0x00e7, # GREEK SMALL LETTER NU
|
||||
0x03be: 0x00e8, # GREEK SMALL LETTER XI
|
||||
0x03bf: 0x00e9, # GREEK SMALL LETTER OMICRON
|
||||
0x03c0: 0x00ea, # GREEK SMALL LETTER PI
|
||||
0x03c1: 0x00eb, # GREEK SMALL LETTER RHO
|
||||
0x03c2: 0x00ed, # GREEK SMALL LETTER FINAL SIGMA
|
||||
0x03c3: 0x00ec, # GREEK SMALL LETTER SIGMA
|
||||
0x03c4: 0x00ee, # GREEK SMALL LETTER TAU
|
||||
0x03c5: 0x00f2, # GREEK SMALL LETTER UPSILON
|
||||
0x03c6: 0x00f3, # GREEK SMALL LETTER PHI
|
||||
0x03c7: 0x00f4, # GREEK SMALL LETTER CHI
|
||||
0x03c8: 0x00f6, # GREEK SMALL LETTER PSI
|
||||
0x03c9: 0x00fa, # GREEK SMALL LETTER OMEGA
|
||||
0x03ca: 0x00a0, # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0x03cb: 0x00fb, # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0x03cc: 0x00a2, # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0x03cd: 0x00a3, # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0x03ce: 0x00fd, # GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0x2015: 0x008e, # HORIZONTAL BAR
|
||||
0x2018: 0x008b, # LEFT SINGLE QUOTATION MARK
|
||||
0x2019: 0x008c, # RIGHT SINGLE QUOTATION MARK
|
||||
0x2500: 0x00c4, # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x2502: 0x00b3, # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x250c: 0x00da, # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x2510: 0x00bf, # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x2514: 0x00c0, # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x2518: 0x00d9, # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x251c: 0x00c3, # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x2524: 0x00b4, # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x252c: 0x00c2, # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x2534: 0x00c1, # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x253c: 0x00c5, # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x2550: 0x00cd, # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0x2551: 0x00ba, # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0x2554: 0x00c9, # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0x2557: 0x00bb, # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0x255a: 0x00c8, # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0x255d: 0x00bc, # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0x2560: 0x00cc, # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0x2563: 0x00b9, # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0x2566: 0x00cb, # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0x2569: 0x00ca, # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0x256c: 0x00ce, # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0x2580: 0x00df, # UPPER HALF BLOCK
|
||||
0x2584: 0x00dc, # LOWER HALF BLOCK
|
||||
0x2588: 0x00db, # FULL BLOCK
|
||||
0x2591: 0x00b0, # LIGHT SHADE
|
||||
0x2592: 0x00b1, # MEDIUM SHADE
|
||||
0x2593: 0x00b2, # DARK SHADE
|
||||
0x25a0: 0x00fe, # BLACK SQUARE
|
||||
}
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp874 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP874.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp874',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u20ac' # 0x80 -> EURO SIGN
|
||||
'\ufffe' # 0x81 -> UNDEFINED
|
||||
'\ufffe' # 0x82 -> UNDEFINED
|
||||
'\ufffe' # 0x83 -> UNDEFINED
|
||||
'\ufffe' # 0x84 -> UNDEFINED
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\ufffe' # 0x86 -> UNDEFINED
|
||||
'\ufffe' # 0x87 -> UNDEFINED
|
||||
'\ufffe' # 0x88 -> UNDEFINED
|
||||
'\ufffe' # 0x89 -> UNDEFINED
|
||||
'\ufffe' # 0x8A -> UNDEFINED
|
||||
'\ufffe' # 0x8B -> UNDEFINED
|
||||
'\ufffe' # 0x8C -> UNDEFINED
|
||||
'\ufffe' # 0x8D -> UNDEFINED
|
||||
'\ufffe' # 0x8E -> UNDEFINED
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\ufffe' # 0x90 -> UNDEFINED
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\ufffe' # 0x98 -> UNDEFINED
|
||||
'\ufffe' # 0x99 -> UNDEFINED
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\ufffe' # 0x9B -> UNDEFINED
|
||||
'\ufffe' # 0x9C -> UNDEFINED
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\ufffe' # 0x9F -> UNDEFINED
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0e01' # 0xA1 -> THAI CHARACTER KO KAI
|
||||
'\u0e02' # 0xA2 -> THAI CHARACTER KHO KHAI
|
||||
'\u0e03' # 0xA3 -> THAI CHARACTER KHO KHUAT
|
||||
'\u0e04' # 0xA4 -> THAI CHARACTER KHO KHWAI
|
||||
'\u0e05' # 0xA5 -> THAI CHARACTER KHO KHON
|
||||
'\u0e06' # 0xA6 -> THAI CHARACTER KHO RAKHANG
|
||||
'\u0e07' # 0xA7 -> THAI CHARACTER NGO NGU
|
||||
'\u0e08' # 0xA8 -> THAI CHARACTER CHO CHAN
|
||||
'\u0e09' # 0xA9 -> THAI CHARACTER CHO CHING
|
||||
'\u0e0a' # 0xAA -> THAI CHARACTER CHO CHANG
|
||||
'\u0e0b' # 0xAB -> THAI CHARACTER SO SO
|
||||
'\u0e0c' # 0xAC -> THAI CHARACTER CHO CHOE
|
||||
'\u0e0d' # 0xAD -> THAI CHARACTER YO YING
|
||||
'\u0e0e' # 0xAE -> THAI CHARACTER DO CHADA
|
||||
'\u0e0f' # 0xAF -> THAI CHARACTER TO PATAK
|
||||
'\u0e10' # 0xB0 -> THAI CHARACTER THO THAN
|
||||
'\u0e11' # 0xB1 -> THAI CHARACTER THO NANGMONTHO
|
||||
'\u0e12' # 0xB2 -> THAI CHARACTER THO PHUTHAO
|
||||
'\u0e13' # 0xB3 -> THAI CHARACTER NO NEN
|
||||
'\u0e14' # 0xB4 -> THAI CHARACTER DO DEK
|
||||
'\u0e15' # 0xB5 -> THAI CHARACTER TO TAO
|
||||
'\u0e16' # 0xB6 -> THAI CHARACTER THO THUNG
|
||||
'\u0e17' # 0xB7 -> THAI CHARACTER THO THAHAN
|
||||
'\u0e18' # 0xB8 -> THAI CHARACTER THO THONG
|
||||
'\u0e19' # 0xB9 -> THAI CHARACTER NO NU
|
||||
'\u0e1a' # 0xBA -> THAI CHARACTER BO BAIMAI
|
||||
'\u0e1b' # 0xBB -> THAI CHARACTER PO PLA
|
||||
'\u0e1c' # 0xBC -> THAI CHARACTER PHO PHUNG
|
||||
'\u0e1d' # 0xBD -> THAI CHARACTER FO FA
|
||||
'\u0e1e' # 0xBE -> THAI CHARACTER PHO PHAN
|
||||
'\u0e1f' # 0xBF -> THAI CHARACTER FO FAN
|
||||
'\u0e20' # 0xC0 -> THAI CHARACTER PHO SAMPHAO
|
||||
'\u0e21' # 0xC1 -> THAI CHARACTER MO MA
|
||||
'\u0e22' # 0xC2 -> THAI CHARACTER YO YAK
|
||||
'\u0e23' # 0xC3 -> THAI CHARACTER RO RUA
|
||||
'\u0e24' # 0xC4 -> THAI CHARACTER RU
|
||||
'\u0e25' # 0xC5 -> THAI CHARACTER LO LING
|
||||
'\u0e26' # 0xC6 -> THAI CHARACTER LU
|
||||
'\u0e27' # 0xC7 -> THAI CHARACTER WO WAEN
|
||||
'\u0e28' # 0xC8 -> THAI CHARACTER SO SALA
|
||||
'\u0e29' # 0xC9 -> THAI CHARACTER SO RUSI
|
||||
'\u0e2a' # 0xCA -> THAI CHARACTER SO SUA
|
||||
'\u0e2b' # 0xCB -> THAI CHARACTER HO HIP
|
||||
'\u0e2c' # 0xCC -> THAI CHARACTER LO CHULA
|
||||
'\u0e2d' # 0xCD -> THAI CHARACTER O ANG
|
||||
'\u0e2e' # 0xCE -> THAI CHARACTER HO NOKHUK
|
||||
'\u0e2f' # 0xCF -> THAI CHARACTER PAIYANNOI
|
||||
'\u0e30' # 0xD0 -> THAI CHARACTER SARA A
|
||||
'\u0e31' # 0xD1 -> THAI CHARACTER MAI HAN-AKAT
|
||||
'\u0e32' # 0xD2 -> THAI CHARACTER SARA AA
|
||||
'\u0e33' # 0xD3 -> THAI CHARACTER SARA AM
|
||||
'\u0e34' # 0xD4 -> THAI CHARACTER SARA I
|
||||
'\u0e35' # 0xD5 -> THAI CHARACTER SARA II
|
||||
'\u0e36' # 0xD6 -> THAI CHARACTER SARA UE
|
||||
'\u0e37' # 0xD7 -> THAI CHARACTER SARA UEE
|
||||
'\u0e38' # 0xD8 -> THAI CHARACTER SARA U
|
||||
'\u0e39' # 0xD9 -> THAI CHARACTER SARA UU
|
||||
'\u0e3a' # 0xDA -> THAI CHARACTER PHINTHU
|
||||
'\ufffe' # 0xDB -> UNDEFINED
|
||||
'\ufffe' # 0xDC -> UNDEFINED
|
||||
'\ufffe' # 0xDD -> UNDEFINED
|
||||
'\ufffe' # 0xDE -> UNDEFINED
|
||||
'\u0e3f' # 0xDF -> THAI CURRENCY SYMBOL BAHT
|
||||
'\u0e40' # 0xE0 -> THAI CHARACTER SARA E
|
||||
'\u0e41' # 0xE1 -> THAI CHARACTER SARA AE
|
||||
'\u0e42' # 0xE2 -> THAI CHARACTER SARA O
|
||||
'\u0e43' # 0xE3 -> THAI CHARACTER SARA AI MAIMUAN
|
||||
'\u0e44' # 0xE4 -> THAI CHARACTER SARA AI MAIMALAI
|
||||
'\u0e45' # 0xE5 -> THAI CHARACTER LAKKHANGYAO
|
||||
'\u0e46' # 0xE6 -> THAI CHARACTER MAIYAMOK
|
||||
'\u0e47' # 0xE7 -> THAI CHARACTER MAITAIKHU
|
||||
'\u0e48' # 0xE8 -> THAI CHARACTER MAI EK
|
||||
'\u0e49' # 0xE9 -> THAI CHARACTER MAI THO
|
||||
'\u0e4a' # 0xEA -> THAI CHARACTER MAI TRI
|
||||
'\u0e4b' # 0xEB -> THAI CHARACTER MAI CHATTAWA
|
||||
'\u0e4c' # 0xEC -> THAI CHARACTER THANTHAKHAT
|
||||
'\u0e4d' # 0xED -> THAI CHARACTER NIKHAHIT
|
||||
'\u0e4e' # 0xEE -> THAI CHARACTER YAMAKKAN
|
||||
'\u0e4f' # 0xEF -> THAI CHARACTER FONGMAN
|
||||
'\u0e50' # 0xF0 -> THAI DIGIT ZERO
|
||||
'\u0e51' # 0xF1 -> THAI DIGIT ONE
|
||||
'\u0e52' # 0xF2 -> THAI DIGIT TWO
|
||||
'\u0e53' # 0xF3 -> THAI DIGIT THREE
|
||||
'\u0e54' # 0xF4 -> THAI DIGIT FOUR
|
||||
'\u0e55' # 0xF5 -> THAI DIGIT FIVE
|
||||
'\u0e56' # 0xF6 -> THAI DIGIT SIX
|
||||
'\u0e57' # 0xF7 -> THAI DIGIT SEVEN
|
||||
'\u0e58' # 0xF8 -> THAI DIGIT EIGHT
|
||||
'\u0e59' # 0xF9 -> THAI DIGIT NINE
|
||||
'\u0e5a' # 0xFA -> THAI CHARACTER ANGKHANKHU
|
||||
'\u0e5b' # 0xFB -> THAI CHARACTER KHOMUT
|
||||
'\ufffe' # 0xFC -> UNDEFINED
|
||||
'\ufffe' # 0xFD -> UNDEFINED
|
||||
'\ufffe' # 0xFE -> UNDEFINED
|
||||
'\ufffe' # 0xFF -> UNDEFINED
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec cp875 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP875.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp875',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x9c' # 0x04 -> CONTROL
|
||||
'\t' # 0x05 -> HORIZONTAL TABULATION
|
||||
'\x86' # 0x06 -> CONTROL
|
||||
'\x7f' # 0x07 -> DELETE
|
||||
'\x97' # 0x08 -> CONTROL
|
||||
'\x8d' # 0x09 -> CONTROL
|
||||
'\x8e' # 0x0A -> CONTROL
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x9d' # 0x14 -> CONTROL
|
||||
'\x85' # 0x15 -> CONTROL
|
||||
'\x08' # 0x16 -> BACKSPACE
|
||||
'\x87' # 0x17 -> CONTROL
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x92' # 0x1A -> CONTROL
|
||||
'\x8f' # 0x1B -> CONTROL
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
'\x80' # 0x20 -> CONTROL
|
||||
'\x81' # 0x21 -> CONTROL
|
||||
'\x82' # 0x22 -> CONTROL
|
||||
'\x83' # 0x23 -> CONTROL
|
||||
'\x84' # 0x24 -> CONTROL
|
||||
'\n' # 0x25 -> LINE FEED
|
||||
'\x17' # 0x26 -> END OF TRANSMISSION BLOCK
|
||||
'\x1b' # 0x27 -> ESCAPE
|
||||
'\x88' # 0x28 -> CONTROL
|
||||
'\x89' # 0x29 -> CONTROL
|
||||
'\x8a' # 0x2A -> CONTROL
|
||||
'\x8b' # 0x2B -> CONTROL
|
||||
'\x8c' # 0x2C -> CONTROL
|
||||
'\x05' # 0x2D -> ENQUIRY
|
||||
'\x06' # 0x2E -> ACKNOWLEDGE
|
||||
'\x07' # 0x2F -> BELL
|
||||
'\x90' # 0x30 -> CONTROL
|
||||
'\x91' # 0x31 -> CONTROL
|
||||
'\x16' # 0x32 -> SYNCHRONOUS IDLE
|
||||
'\x93' # 0x33 -> CONTROL
|
||||
'\x94' # 0x34 -> CONTROL
|
||||
'\x95' # 0x35 -> CONTROL
|
||||
'\x96' # 0x36 -> CONTROL
|
||||
'\x04' # 0x37 -> END OF TRANSMISSION
|
||||
'\x98' # 0x38 -> CONTROL
|
||||
'\x99' # 0x39 -> CONTROL
|
||||
'\x9a' # 0x3A -> CONTROL
|
||||
'\x9b' # 0x3B -> CONTROL
|
||||
'\x14' # 0x3C -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x3D -> NEGATIVE ACKNOWLEDGE
|
||||
'\x9e' # 0x3E -> CONTROL
|
||||
'\x1a' # 0x3F -> SUBSTITUTE
|
||||
' ' # 0x40 -> SPACE
|
||||
'\u0391' # 0x41 -> GREEK CAPITAL LETTER ALPHA
|
||||
'\u0392' # 0x42 -> GREEK CAPITAL LETTER BETA
|
||||
'\u0393' # 0x43 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u0394' # 0x44 -> GREEK CAPITAL LETTER DELTA
|
||||
'\u0395' # 0x45 -> GREEK CAPITAL LETTER EPSILON
|
||||
'\u0396' # 0x46 -> GREEK CAPITAL LETTER ZETA
|
||||
'\u0397' # 0x47 -> GREEK CAPITAL LETTER ETA
|
||||
'\u0398' # 0x48 -> GREEK CAPITAL LETTER THETA
|
||||
'\u0399' # 0x49 -> GREEK CAPITAL LETTER IOTA
|
||||
'[' # 0x4A -> LEFT SQUARE BRACKET
|
||||
'.' # 0x4B -> FULL STOP
|
||||
'<' # 0x4C -> LESS-THAN SIGN
|
||||
'(' # 0x4D -> LEFT PARENTHESIS
|
||||
'+' # 0x4E -> PLUS SIGN
|
||||
'!' # 0x4F -> EXCLAMATION MARK
|
||||
'&' # 0x50 -> AMPERSAND
|
||||
'\u039a' # 0x51 -> GREEK CAPITAL LETTER KAPPA
|
||||
'\u039b' # 0x52 -> GREEK CAPITAL LETTER LAMDA
|
||||
'\u039c' # 0x53 -> GREEK CAPITAL LETTER MU
|
||||
'\u039d' # 0x54 -> GREEK CAPITAL LETTER NU
|
||||
'\u039e' # 0x55 -> GREEK CAPITAL LETTER XI
|
||||
'\u039f' # 0x56 -> GREEK CAPITAL LETTER OMICRON
|
||||
'\u03a0' # 0x57 -> GREEK CAPITAL LETTER PI
|
||||
'\u03a1' # 0x58 -> GREEK CAPITAL LETTER RHO
|
||||
'\u03a3' # 0x59 -> GREEK CAPITAL LETTER SIGMA
|
||||
']' # 0x5A -> RIGHT SQUARE BRACKET
|
||||
'$' # 0x5B -> DOLLAR SIGN
|
||||
'*' # 0x5C -> ASTERISK
|
||||
')' # 0x5D -> RIGHT PARENTHESIS
|
||||
';' # 0x5E -> SEMICOLON
|
||||
'^' # 0x5F -> CIRCUMFLEX ACCENT
|
||||
'-' # 0x60 -> HYPHEN-MINUS
|
||||
'/' # 0x61 -> SOLIDUS
|
||||
'\u03a4' # 0x62 -> GREEK CAPITAL LETTER TAU
|
||||
'\u03a5' # 0x63 -> GREEK CAPITAL LETTER UPSILON
|
||||
'\u03a6' # 0x64 -> GREEK CAPITAL LETTER PHI
|
||||
'\u03a7' # 0x65 -> GREEK CAPITAL LETTER CHI
|
||||
'\u03a8' # 0x66 -> GREEK CAPITAL LETTER PSI
|
||||
'\u03a9' # 0x67 -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03aa' # 0x68 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03ab' # 0x69 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
'|' # 0x6A -> VERTICAL LINE
|
||||
',' # 0x6B -> COMMA
|
||||
'%' # 0x6C -> PERCENT SIGN
|
||||
'_' # 0x6D -> LOW LINE
|
||||
'>' # 0x6E -> GREATER-THAN SIGN
|
||||
'?' # 0x6F -> QUESTION MARK
|
||||
'\xa8' # 0x70 -> DIAERESIS
|
||||
'\u0386' # 0x71 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
'\u0388' # 0x72 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
'\u0389' # 0x73 -> GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
'\xa0' # 0x74 -> NO-BREAK SPACE
|
||||
'\u038a' # 0x75 -> GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
'\u038c' # 0x76 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
'\u038e' # 0x77 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
'\u038f' # 0x78 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
'`' # 0x79 -> GRAVE ACCENT
|
||||
':' # 0x7A -> COLON
|
||||
'#' # 0x7B -> NUMBER SIGN
|
||||
'@' # 0x7C -> COMMERCIAL AT
|
||||
"'" # 0x7D -> APOSTROPHE
|
||||
'=' # 0x7E -> EQUALS SIGN
|
||||
'"' # 0x7F -> QUOTATION MARK
|
||||
'\u0385' # 0x80 -> GREEK DIALYTIKA TONOS
|
||||
'a' # 0x81 -> LATIN SMALL LETTER A
|
||||
'b' # 0x82 -> LATIN SMALL LETTER B
|
||||
'c' # 0x83 -> LATIN SMALL LETTER C
|
||||
'd' # 0x84 -> LATIN SMALL LETTER D
|
||||
'e' # 0x85 -> LATIN SMALL LETTER E
|
||||
'f' # 0x86 -> LATIN SMALL LETTER F
|
||||
'g' # 0x87 -> LATIN SMALL LETTER G
|
||||
'h' # 0x88 -> LATIN SMALL LETTER H
|
||||
'i' # 0x89 -> LATIN SMALL LETTER I
|
||||
'\u03b1' # 0x8A -> GREEK SMALL LETTER ALPHA
|
||||
'\u03b2' # 0x8B -> GREEK SMALL LETTER BETA
|
||||
'\u03b3' # 0x8C -> GREEK SMALL LETTER GAMMA
|
||||
'\u03b4' # 0x8D -> GREEK SMALL LETTER DELTA
|
||||
'\u03b5' # 0x8E -> GREEK SMALL LETTER EPSILON
|
||||
'\u03b6' # 0x8F -> GREEK SMALL LETTER ZETA
|
||||
'\xb0' # 0x90 -> DEGREE SIGN
|
||||
'j' # 0x91 -> LATIN SMALL LETTER J
|
||||
'k' # 0x92 -> LATIN SMALL LETTER K
|
||||
'l' # 0x93 -> LATIN SMALL LETTER L
|
||||
'm' # 0x94 -> LATIN SMALL LETTER M
|
||||
'n' # 0x95 -> LATIN SMALL LETTER N
|
||||
'o' # 0x96 -> LATIN SMALL LETTER O
|
||||
'p' # 0x97 -> LATIN SMALL LETTER P
|
||||
'q' # 0x98 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x99 -> LATIN SMALL LETTER R
|
||||
'\u03b7' # 0x9A -> GREEK SMALL LETTER ETA
|
||||
'\u03b8' # 0x9B -> GREEK SMALL LETTER THETA
|
||||
'\u03b9' # 0x9C -> GREEK SMALL LETTER IOTA
|
||||
'\u03ba' # 0x9D -> GREEK SMALL LETTER KAPPA
|
||||
'\u03bb' # 0x9E -> GREEK SMALL LETTER LAMDA
|
||||
'\u03bc' # 0x9F -> GREEK SMALL LETTER MU
|
||||
'\xb4' # 0xA0 -> ACUTE ACCENT
|
||||
'~' # 0xA1 -> TILDE
|
||||
's' # 0xA2 -> LATIN SMALL LETTER S
|
||||
't' # 0xA3 -> LATIN SMALL LETTER T
|
||||
'u' # 0xA4 -> LATIN SMALL LETTER U
|
||||
'v' # 0xA5 -> LATIN SMALL LETTER V
|
||||
'w' # 0xA6 -> LATIN SMALL LETTER W
|
||||
'x' # 0xA7 -> LATIN SMALL LETTER X
|
||||
'y' # 0xA8 -> LATIN SMALL LETTER Y
|
||||
'z' # 0xA9 -> LATIN SMALL LETTER Z
|
||||
'\u03bd' # 0xAA -> GREEK SMALL LETTER NU
|
||||
'\u03be' # 0xAB -> GREEK SMALL LETTER XI
|
||||
'\u03bf' # 0xAC -> GREEK SMALL LETTER OMICRON
|
||||
'\u03c0' # 0xAD -> GREEK SMALL LETTER PI
|
||||
'\u03c1' # 0xAE -> GREEK SMALL LETTER RHO
|
||||
'\u03c3' # 0xAF -> GREEK SMALL LETTER SIGMA
|
||||
'\xa3' # 0xB0 -> POUND SIGN
|
||||
'\u03ac' # 0xB1 -> GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
'\u03ad' # 0xB2 -> GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
'\u03ae' # 0xB3 -> GREEK SMALL LETTER ETA WITH TONOS
|
||||
'\u03ca' # 0xB4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03af' # 0xB5 -> GREEK SMALL LETTER IOTA WITH TONOS
|
||||
'\u03cc' # 0xB6 -> GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
'\u03cd' # 0xB7 -> GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
'\u03cb' # 0xB8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03ce' # 0xB9 -> GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
'\u03c2' # 0xBA -> GREEK SMALL LETTER FINAL SIGMA
|
||||
'\u03c4' # 0xBB -> GREEK SMALL LETTER TAU
|
||||
'\u03c5' # 0xBC -> GREEK SMALL LETTER UPSILON
|
||||
'\u03c6' # 0xBD -> GREEK SMALL LETTER PHI
|
||||
'\u03c7' # 0xBE -> GREEK SMALL LETTER CHI
|
||||
'\u03c8' # 0xBF -> GREEK SMALL LETTER PSI
|
||||
'{' # 0xC0 -> LEFT CURLY BRACKET
|
||||
'A' # 0xC1 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0xC2 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0xC3 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0xC4 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0xC5 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0xC6 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0xC7 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0xC8 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0xC9 -> LATIN CAPITAL LETTER I
|
||||
'\xad' # 0xCA -> SOFT HYPHEN
|
||||
'\u03c9' # 0xCB -> GREEK SMALL LETTER OMEGA
|
||||
'\u0390' # 0xCC -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
'\u03b0' # 0xCD -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
'\u2018' # 0xCE -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2015' # 0xCF -> HORIZONTAL BAR
|
||||
'}' # 0xD0 -> RIGHT CURLY BRACKET
|
||||
'J' # 0xD1 -> LATIN CAPITAL LETTER J
|
||||
'K' # 0xD2 -> LATIN CAPITAL LETTER K
|
||||
'L' # 0xD3 -> LATIN CAPITAL LETTER L
|
||||
'M' # 0xD4 -> LATIN CAPITAL LETTER M
|
||||
'N' # 0xD5 -> LATIN CAPITAL LETTER N
|
||||
'O' # 0xD6 -> LATIN CAPITAL LETTER O
|
||||
'P' # 0xD7 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0xD8 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0xD9 -> LATIN CAPITAL LETTER R
|
||||
'\xb1' # 0xDA -> PLUS-MINUS SIGN
|
||||
'\xbd' # 0xDB -> VULGAR FRACTION ONE HALF
|
||||
'\x1a' # 0xDC -> SUBSTITUTE
|
||||
'\u0387' # 0xDD -> GREEK ANO TELEIA
|
||||
'\u2019' # 0xDE -> RIGHT SINGLE QUOTATION MARK
|
||||
'\xa6' # 0xDF -> BROKEN BAR
|
||||
'\\' # 0xE0 -> REVERSE SOLIDUS
|
||||
'\x1a' # 0xE1 -> SUBSTITUTE
|
||||
'S' # 0xE2 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0xE3 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0xE4 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0xE5 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0xE6 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0xE7 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0xE8 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0xE9 -> LATIN CAPITAL LETTER Z
|
||||
'\xb2' # 0xEA -> SUPERSCRIPT TWO
|
||||
'\xa7' # 0xEB -> SECTION SIGN
|
||||
'\x1a' # 0xEC -> SUBSTITUTE
|
||||
'\x1a' # 0xED -> SUBSTITUTE
|
||||
'\xab' # 0xEE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xEF -> NOT SIGN
|
||||
'0' # 0xF0 -> DIGIT ZERO
|
||||
'1' # 0xF1 -> DIGIT ONE
|
||||
'2' # 0xF2 -> DIGIT TWO
|
||||
'3' # 0xF3 -> DIGIT THREE
|
||||
'4' # 0xF4 -> DIGIT FOUR
|
||||
'5' # 0xF5 -> DIGIT FIVE
|
||||
'6' # 0xF6 -> DIGIT SIX
|
||||
'7' # 0xF7 -> DIGIT SEVEN
|
||||
'8' # 0xF8 -> DIGIT EIGHT
|
||||
'9' # 0xF9 -> DIGIT NINE
|
||||
'\xb3' # 0xFA -> SUPERSCRIPT THREE
|
||||
'\xa9' # 0xFB -> COPYRIGHT SIGN
|
||||
'\x1a' # 0xFC -> SUBSTITUTE
|
||||
'\x1a' # 0xFD -> SUBSTITUTE
|
||||
'\xbb' # 0xFE -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\x9f' # 0xFF -> CONTROL
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# cp932.py: Python Unicode Codec for CP932
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_jp, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_jp.getcodec('cp932')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp932',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# cp949.py: Python Unicode Codec for CP949
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_kr, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_kr.getcodec('cp949')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp949',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# cp950.py: Python Unicode Codec for CP950
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_tw, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_tw.getcodec('cp950')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='cp950',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# euc_jis_2004.py: Python Unicode Codec for EUC_JIS_2004
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_jp, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_jp.getcodec('euc_jis_2004')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='euc_jis_2004',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# euc_jisx0213.py: Python Unicode Codec for EUC_JISX0213
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_jp, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_jp.getcodec('euc_jisx0213')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='euc_jisx0213',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# euc_jp.py: Python Unicode Codec for EUC_JP
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_jp, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_jp.getcodec('euc_jp')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='euc_jp',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# euc_kr.py: Python Unicode Codec for EUC_KR
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_kr, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_kr.getcodec('euc_kr')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='euc_kr',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# gb18030.py: Python Unicode Codec for GB18030
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_cn, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_cn.getcodec('gb18030')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='gb18030',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# gb2312.py: Python Unicode Codec for GB2312
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_cn, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_cn.getcodec('gb2312')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='gb2312',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# gbk.py: Python Unicode Codec for GBK
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_cn, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_cn.getcodec('gbk')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='gbk',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,55 @@
|
||||
"""Python 'hex_codec' Codec - 2-digit hex content transfer encoding.
|
||||
|
||||
This codec de/encodes from bytes to bytes.
|
||||
|
||||
Written by Marc-Andre Lemburg (mal@lemburg.com).
|
||||
"""
|
||||
|
||||
import codecs
|
||||
import binascii
|
||||
|
||||
### Codec APIs
|
||||
|
||||
def hex_encode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (binascii.b2a_hex(input), len(input))
|
||||
|
||||
def hex_decode(input, errors='strict'):
|
||||
assert errors == 'strict'
|
||||
return (binascii.a2b_hex(input), len(input))
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
def encode(self, input, errors='strict'):
|
||||
return hex_encode(input, errors)
|
||||
def decode(self, input, errors='strict'):
|
||||
return hex_decode(input, errors)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
assert self.errors == 'strict'
|
||||
return binascii.b2a_hex(input)
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
assert self.errors == 'strict'
|
||||
return binascii.a2b_hex(input)
|
||||
|
||||
class StreamWriter(Codec, codecs.StreamWriter):
|
||||
charbuffertype = bytes
|
||||
|
||||
class StreamReader(Codec, codecs.StreamReader):
|
||||
charbuffertype = bytes
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='hex',
|
||||
encode=hex_encode,
|
||||
decode=hex_decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
_is_text_encoding=False,
|
||||
)
|
||||
@@ -0,0 +1,314 @@
|
||||
""" Python Character Mapping Codec generated from 'hp_roman8.txt' with gencodec.py.
|
||||
|
||||
Based on data from ftp://dkuug.dk/i18n/charmaps/HP-ROMAN8 (Keld Simonsen)
|
||||
|
||||
Original source: LaserJet IIP Printer User's Manual HP part no
|
||||
33471-90901, Hewlet-Packard, June 1989.
|
||||
|
||||
(Used with permission)
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='hp-roman8',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xc0' # 0xA1 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc2' # 0xA2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc8' # 0xA3 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xca' # 0xA4 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xA5 -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xce' # 0xA6 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xA7 -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xb4' # 0xA8 -> ACUTE ACCENT
|
||||
'\u02cb' # 0xA9 -> MODIFIER LETTER GRAVE ACCENT (MANDARIN CHINESE FOURTH TONE)
|
||||
'\u02c6' # 0xAA -> MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
'\xa8' # 0xAB -> DIAERESIS
|
||||
'\u02dc' # 0xAC -> SMALL TILDE
|
||||
'\xd9' # 0xAD -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xdb' # 0xAE -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\u20a4' # 0xAF -> LIRA SIGN
|
||||
'\xaf' # 0xB0 -> MACRON
|
||||
'\xdd' # 0xB1 -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xfd' # 0xB2 -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xb0' # 0xB3 -> DEGREE SIGN
|
||||
'\xc7' # 0xB4 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xe7' # 0xB5 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xd1' # 0xB6 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xf1' # 0xB7 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xa1' # 0xB8 -> INVERTED EXCLAMATION MARK
|
||||
'\xbf' # 0xB9 -> INVERTED QUESTION MARK
|
||||
'\xa4' # 0xBA -> CURRENCY SIGN
|
||||
'\xa3' # 0xBB -> POUND SIGN
|
||||
'\xa5' # 0xBC -> YEN SIGN
|
||||
'\xa7' # 0xBD -> SECTION SIGN
|
||||
'\u0192' # 0xBE -> LATIN SMALL LETTER F WITH HOOK
|
||||
'\xa2' # 0xBF -> CENT SIGN
|
||||
'\xe2' # 0xC0 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xea' # 0xC1 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xf4' # 0xC2 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xfb' # 0xC3 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xe1' # 0xC4 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe9' # 0xC5 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xf3' # 0xC6 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xfa' # 0xC7 -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xe0' # 0xC8 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe8' # 0xC9 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xf2' # 0xCA -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf9' # 0xCB -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xe4' # 0xCC -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xeb' # 0xCD -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xf6' # 0xCE -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xfc' # 0xCF -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xc5' # 0xD0 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xee' # 0xD1 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xd8' # 0xD2 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xc6' # 0xD3 -> LATIN CAPITAL LETTER AE
|
||||
'\xe5' # 0xD4 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xed' # 0xD5 -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xf8' # 0xD6 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xe6' # 0xD7 -> LATIN SMALL LETTER AE
|
||||
'\xc4' # 0xD8 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xec' # 0xD9 -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xd6' # 0xDA -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xdc' # 0xDB -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xc9' # 0xDC -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xef' # 0xDD -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xdf' # 0xDE -> LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
'\xd4' # 0xDF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xc1' # 0xE0 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc3' # 0xE1 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xe3' # 0xE2 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xd0' # 0xE3 -> LATIN CAPITAL LETTER ETH (ICELANDIC)
|
||||
'\xf0' # 0xE4 -> LATIN SMALL LETTER ETH (ICELANDIC)
|
||||
'\xcd' # 0xE5 -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xcc' # 0xE6 -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xd3' # 0xE7 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd2' # 0xE8 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd5' # 0xE9 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xf5' # 0xEA -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\u0160' # 0xEB -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u0161' # 0xEC -> LATIN SMALL LETTER S WITH CARON
|
||||
'\xda' # 0xED -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\u0178' # 0xEE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\xff' # 0xEF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
'\xde' # 0xF0 -> LATIN CAPITAL LETTER THORN (ICELANDIC)
|
||||
'\xfe' # 0xF1 -> LATIN SMALL LETTER THORN (ICELANDIC)
|
||||
'\xb7' # 0xF2 -> MIDDLE DOT
|
||||
'\xb5' # 0xF3 -> MICRO SIGN
|
||||
'\xb6' # 0xF4 -> PILCROW SIGN
|
||||
'\xbe' # 0xF5 -> VULGAR FRACTION THREE QUARTERS
|
||||
'\u2014' # 0xF6 -> EM DASH
|
||||
'\xbc' # 0xF7 -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xF8 -> VULGAR FRACTION ONE HALF
|
||||
'\xaa' # 0xF9 -> FEMININE ORDINAL INDICATOR
|
||||
'\xba' # 0xFA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xab' # 0xFB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u25a0' # 0xFC -> BLACK SQUARE
|
||||
'\xbb' # 0xFD -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xb1' # 0xFE -> PLUS-MINUS SIGN
|
||||
'\ufffe'
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# hz.py: Python Unicode Codec for HZ
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_cn, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_cn.getcodec('hz')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='hz',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,309 @@
|
||||
# This module implements the RFCs 3490 (IDNA) and 3491 (Nameprep)
|
||||
|
||||
import stringprep, re, codecs
|
||||
from unicodedata import ucd_3_2_0 as unicodedata
|
||||
|
||||
# IDNA section 3.1
|
||||
dots = re.compile("[\u002E\u3002\uFF0E\uFF61]")
|
||||
|
||||
# IDNA section 5
|
||||
ace_prefix = b"xn--"
|
||||
sace_prefix = "xn--"
|
||||
|
||||
# This assumes query strings, so AllowUnassigned is true
|
||||
def nameprep(label):
|
||||
# Map
|
||||
newlabel = []
|
||||
for c in label:
|
||||
if stringprep.in_table_b1(c):
|
||||
# Map to nothing
|
||||
continue
|
||||
newlabel.append(stringprep.map_table_b2(c))
|
||||
label = "".join(newlabel)
|
||||
|
||||
# Normalize
|
||||
label = unicodedata.normalize("NFKC", label)
|
||||
|
||||
# Prohibit
|
||||
for c in label:
|
||||
if stringprep.in_table_c12(c) or \
|
||||
stringprep.in_table_c22(c) or \
|
||||
stringprep.in_table_c3(c) or \
|
||||
stringprep.in_table_c4(c) or \
|
||||
stringprep.in_table_c5(c) or \
|
||||
stringprep.in_table_c6(c) or \
|
||||
stringprep.in_table_c7(c) or \
|
||||
stringprep.in_table_c8(c) or \
|
||||
stringprep.in_table_c9(c):
|
||||
raise UnicodeError("Invalid character %r" % c)
|
||||
|
||||
# Check bidi
|
||||
RandAL = [stringprep.in_table_d1(x) for x in label]
|
||||
for c in RandAL:
|
||||
if c:
|
||||
# There is a RandAL char in the string. Must perform further
|
||||
# tests:
|
||||
# 1) The characters in section 5.8 MUST be prohibited.
|
||||
# This is table C.8, which was already checked
|
||||
# 2) If a string contains any RandALCat character, the string
|
||||
# MUST NOT contain any LCat character.
|
||||
if any(stringprep.in_table_d2(x) for x in label):
|
||||
raise UnicodeError("Violation of BIDI requirement 2")
|
||||
|
||||
# 3) If a string contains any RandALCat character, a
|
||||
# RandALCat character MUST be the first character of the
|
||||
# string, and a RandALCat character MUST be the last
|
||||
# character of the string.
|
||||
if not RandAL[0] or not RandAL[-1]:
|
||||
raise UnicodeError("Violation of BIDI requirement 3")
|
||||
|
||||
return label
|
||||
|
||||
def ToASCII(label):
|
||||
try:
|
||||
# Step 1: try ASCII
|
||||
label = label.encode("ascii")
|
||||
except UnicodeError:
|
||||
pass
|
||||
else:
|
||||
# Skip to step 3: UseSTD3ASCIIRules is false, so
|
||||
# Skip to step 8.
|
||||
if 0 < len(label) < 64:
|
||||
return label
|
||||
raise UnicodeError("label empty or too long")
|
||||
|
||||
# Step 2: nameprep
|
||||
label = nameprep(label)
|
||||
|
||||
# Step 3: UseSTD3ASCIIRules is false
|
||||
# Step 4: try ASCII
|
||||
try:
|
||||
label = label.encode("ascii")
|
||||
except UnicodeError:
|
||||
pass
|
||||
else:
|
||||
# Skip to step 8.
|
||||
if 0 < len(label) < 64:
|
||||
return label
|
||||
raise UnicodeError("label empty or too long")
|
||||
|
||||
# Step 5: Check ACE prefix
|
||||
if label.startswith(sace_prefix):
|
||||
raise UnicodeError("Label starts with ACE prefix")
|
||||
|
||||
# Step 6: Encode with PUNYCODE
|
||||
label = label.encode("punycode")
|
||||
|
||||
# Step 7: Prepend ACE prefix
|
||||
label = ace_prefix + label
|
||||
|
||||
# Step 8: Check size
|
||||
if 0 < len(label) < 64:
|
||||
return label
|
||||
raise UnicodeError("label empty or too long")
|
||||
|
||||
def ToUnicode(label):
|
||||
# Step 1: Check for ASCII
|
||||
if isinstance(label, bytes):
|
||||
pure_ascii = True
|
||||
else:
|
||||
try:
|
||||
label = label.encode("ascii")
|
||||
pure_ascii = True
|
||||
except UnicodeError:
|
||||
pure_ascii = False
|
||||
if not pure_ascii:
|
||||
# Step 2: Perform nameprep
|
||||
label = nameprep(label)
|
||||
# It doesn't say this, but apparently, it should be ASCII now
|
||||
try:
|
||||
label = label.encode("ascii")
|
||||
except UnicodeError:
|
||||
raise UnicodeError("Invalid character in IDN label")
|
||||
# Step 3: Check for ACE prefix
|
||||
if not label.startswith(ace_prefix):
|
||||
return str(label, "ascii")
|
||||
|
||||
# Step 4: Remove ACE prefix
|
||||
label1 = label[len(ace_prefix):]
|
||||
|
||||
# Step 5: Decode using PUNYCODE
|
||||
result = label1.decode("punycode")
|
||||
|
||||
# Step 6: Apply ToASCII
|
||||
label2 = ToASCII(result)
|
||||
|
||||
# Step 7: Compare the result of step 6 with the one of step 3
|
||||
# label2 will already be in lower case.
|
||||
if str(label, "ascii").lower() != str(label2, "ascii"):
|
||||
raise UnicodeError("IDNA does not round-trip", label, label2)
|
||||
|
||||
# Step 8: return the result of step 5
|
||||
return result
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
def encode(self, input, errors='strict'):
|
||||
|
||||
if errors != 'strict':
|
||||
# IDNA is quite clear that implementations must be strict
|
||||
raise UnicodeError("unsupported error handling "+errors)
|
||||
|
||||
if not input:
|
||||
return b'', 0
|
||||
|
||||
try:
|
||||
result = input.encode('ascii')
|
||||
except UnicodeEncodeError:
|
||||
pass
|
||||
else:
|
||||
# ASCII name: fast path
|
||||
labels = result.split(b'.')
|
||||
for label in labels[:-1]:
|
||||
if not (0 < len(label) < 64):
|
||||
raise UnicodeError("label empty or too long")
|
||||
if len(labels[-1]) >= 64:
|
||||
raise UnicodeError("label too long")
|
||||
return result, len(input)
|
||||
|
||||
result = bytearray()
|
||||
labels = dots.split(input)
|
||||
if labels and not labels[-1]:
|
||||
trailing_dot = b'.'
|
||||
del labels[-1]
|
||||
else:
|
||||
trailing_dot = b''
|
||||
for label in labels:
|
||||
if result:
|
||||
# Join with U+002E
|
||||
result.extend(b'.')
|
||||
result.extend(ToASCII(label))
|
||||
return bytes(result+trailing_dot), len(input)
|
||||
|
||||
def decode(self, input, errors='strict'):
|
||||
|
||||
if errors != 'strict':
|
||||
raise UnicodeError("Unsupported error handling "+errors)
|
||||
|
||||
if not input:
|
||||
return "", 0
|
||||
|
||||
# IDNA allows decoding to operate on Unicode strings, too.
|
||||
if not isinstance(input, bytes):
|
||||
# XXX obviously wrong, see #3232
|
||||
input = bytes(input)
|
||||
|
||||
if ace_prefix not in input:
|
||||
# Fast path
|
||||
try:
|
||||
return input.decode('ascii'), len(input)
|
||||
except UnicodeDecodeError:
|
||||
pass
|
||||
|
||||
labels = input.split(b".")
|
||||
|
||||
if labels and len(labels[-1]) == 0:
|
||||
trailing_dot = '.'
|
||||
del labels[-1]
|
||||
else:
|
||||
trailing_dot = ''
|
||||
|
||||
result = []
|
||||
for label in labels:
|
||||
result.append(ToUnicode(label))
|
||||
|
||||
return ".".join(result)+trailing_dot, len(input)
|
||||
|
||||
class IncrementalEncoder(codecs.BufferedIncrementalEncoder):
|
||||
def _buffer_encode(self, input, errors, final):
|
||||
if errors != 'strict':
|
||||
# IDNA is quite clear that implementations must be strict
|
||||
raise UnicodeError("unsupported error handling "+errors)
|
||||
|
||||
if not input:
|
||||
return (b'', 0)
|
||||
|
||||
labels = dots.split(input)
|
||||
trailing_dot = b''
|
||||
if labels:
|
||||
if not labels[-1]:
|
||||
trailing_dot = b'.'
|
||||
del labels[-1]
|
||||
elif not final:
|
||||
# Keep potentially unfinished label until the next call
|
||||
del labels[-1]
|
||||
if labels:
|
||||
trailing_dot = b'.'
|
||||
|
||||
result = bytearray()
|
||||
size = 0
|
||||
for label in labels:
|
||||
if size:
|
||||
# Join with U+002E
|
||||
result.extend(b'.')
|
||||
size += 1
|
||||
result.extend(ToASCII(label))
|
||||
size += len(label)
|
||||
|
||||
result += trailing_dot
|
||||
size += len(trailing_dot)
|
||||
return (bytes(result), size)
|
||||
|
||||
class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
|
||||
def _buffer_decode(self, input, errors, final):
|
||||
if errors != 'strict':
|
||||
raise UnicodeError("Unsupported error handling "+errors)
|
||||
|
||||
if not input:
|
||||
return ("", 0)
|
||||
|
||||
# IDNA allows decoding to operate on Unicode strings, too.
|
||||
if isinstance(input, str):
|
||||
labels = dots.split(input)
|
||||
else:
|
||||
# Must be ASCII string
|
||||
input = str(input, "ascii")
|
||||
labels = input.split(".")
|
||||
|
||||
trailing_dot = ''
|
||||
if labels:
|
||||
if not labels[-1]:
|
||||
trailing_dot = '.'
|
||||
del labels[-1]
|
||||
elif not final:
|
||||
# Keep potentially unfinished label until the next call
|
||||
del labels[-1]
|
||||
if labels:
|
||||
trailing_dot = '.'
|
||||
|
||||
result = []
|
||||
size = 0
|
||||
for label in labels:
|
||||
result.append(ToUnicode(label))
|
||||
if size:
|
||||
size += 1
|
||||
size += len(label)
|
||||
|
||||
result = ".".join(result) + trailing_dot
|
||||
size += len(trailing_dot)
|
||||
return (result, size)
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='idna',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamwriter=StreamWriter,
|
||||
streamreader=StreamReader,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_jp.py: Python Unicode Codec for ISO2022_JP
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_jp')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_jp',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_jp_1.py: Python Unicode Codec for ISO2022_JP_1
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_jp_1')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_jp_1',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_jp_2.py: Python Unicode Codec for ISO2022_JP_2
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_jp_2')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_jp_2',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_jp_2004.py: Python Unicode Codec for ISO2022_JP_2004
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_jp_2004')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_jp_2004',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_jp_3.py: Python Unicode Codec for ISO2022_JP_3
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_jp_3')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_jp_3',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_jp_ext.py: Python Unicode Codec for ISO2022_JP_EXT
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_jp_ext')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_jp_ext',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# iso2022_kr.py: Python Unicode Codec for ISO2022_KR
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_iso2022, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_iso2022.getcodec('iso2022_kr')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso2022_kr',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_1 generated from 'MAPPINGS/ISO8859/8859-1.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-1',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xaa' # 0xAA -> FEMININE ORDINAL INDICATOR
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xba' # 0xBA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xd0' # 0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S (German)
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xf0' # 0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0xFE -> LATIN SMALL LETTER THORN (Icelandic)
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_10 generated from 'MAPPINGS/ISO8859/8859-10.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-10',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0104' # 0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u0112' # 0xA2 -> LATIN CAPITAL LETTER E WITH MACRON
|
||||
'\u0122' # 0xA3 -> LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
'\u012a' # 0xA4 -> LATIN CAPITAL LETTER I WITH MACRON
|
||||
'\u0128' # 0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
|
||||
'\u0136' # 0xA6 -> LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\u013b' # 0xA8 -> LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
'\u0110' # 0xA9 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\u0160' # 0xAA -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u0166' # 0xAB -> LATIN CAPITAL LETTER T WITH STROKE
|
||||
'\u017d' # 0xAC -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\u016a' # 0xAE -> LATIN CAPITAL LETTER U WITH MACRON
|
||||
'\u014a' # 0xAF -> LATIN CAPITAL LETTER ENG
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\u0105' # 0xB1 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u0113' # 0xB2 -> LATIN SMALL LETTER E WITH MACRON
|
||||
'\u0123' # 0xB3 -> LATIN SMALL LETTER G WITH CEDILLA
|
||||
'\u012b' # 0xB4 -> LATIN SMALL LETTER I WITH MACRON
|
||||
'\u0129' # 0xB5 -> LATIN SMALL LETTER I WITH TILDE
|
||||
'\u0137' # 0xB6 -> LATIN SMALL LETTER K WITH CEDILLA
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\u013c' # 0xB8 -> LATIN SMALL LETTER L WITH CEDILLA
|
||||
'\u0111' # 0xB9 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\u0161' # 0xBA -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u0167' # 0xBB -> LATIN SMALL LETTER T WITH STROKE
|
||||
'\u017e' # 0xBC -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u2015' # 0xBD -> HORIZONTAL BAR
|
||||
'\u016b' # 0xBE -> LATIN SMALL LETTER U WITH MACRON
|
||||
'\u014b' # 0xBF -> LATIN SMALL LETTER ENG
|
||||
'\u0100' # 0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\u012e' # 0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
|
||||
'\u010c' # 0xC8 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0118' # 0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\u0116' # 0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xd0' # 0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
|
||||
'\u0145' # 0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
'\u014c' # 0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\u0168' # 0xD7 -> LATIN CAPITAL LETTER U WITH TILDE
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\u0172' # 0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S (German)
|
||||
'\u0101' # 0xE0 -> LATIN SMALL LETTER A WITH MACRON
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\u012f' # 0xE7 -> LATIN SMALL LETTER I WITH OGONEK
|
||||
'\u010d' # 0xE8 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u0119' # 0xEA -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u0117' # 0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xf0' # 0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
|
||||
'\u0146' # 0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
|
||||
'\u014d' # 0xF2 -> LATIN SMALL LETTER O WITH MACRON
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\u0169' # 0xF7 -> LATIN SMALL LETTER U WITH TILDE
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\u0173' # 0xF9 -> LATIN SMALL LETTER U WITH OGONEK
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0xFE -> LATIN SMALL LETTER THORN (Icelandic)
|
||||
'\u0138' # 0xFF -> LATIN SMALL LETTER KRA
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_11 generated from 'MAPPINGS/ISO8859/8859-11.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-11',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0e01' # 0xA1 -> THAI CHARACTER KO KAI
|
||||
'\u0e02' # 0xA2 -> THAI CHARACTER KHO KHAI
|
||||
'\u0e03' # 0xA3 -> THAI CHARACTER KHO KHUAT
|
||||
'\u0e04' # 0xA4 -> THAI CHARACTER KHO KHWAI
|
||||
'\u0e05' # 0xA5 -> THAI CHARACTER KHO KHON
|
||||
'\u0e06' # 0xA6 -> THAI CHARACTER KHO RAKHANG
|
||||
'\u0e07' # 0xA7 -> THAI CHARACTER NGO NGU
|
||||
'\u0e08' # 0xA8 -> THAI CHARACTER CHO CHAN
|
||||
'\u0e09' # 0xA9 -> THAI CHARACTER CHO CHING
|
||||
'\u0e0a' # 0xAA -> THAI CHARACTER CHO CHANG
|
||||
'\u0e0b' # 0xAB -> THAI CHARACTER SO SO
|
||||
'\u0e0c' # 0xAC -> THAI CHARACTER CHO CHOE
|
||||
'\u0e0d' # 0xAD -> THAI CHARACTER YO YING
|
||||
'\u0e0e' # 0xAE -> THAI CHARACTER DO CHADA
|
||||
'\u0e0f' # 0xAF -> THAI CHARACTER TO PATAK
|
||||
'\u0e10' # 0xB0 -> THAI CHARACTER THO THAN
|
||||
'\u0e11' # 0xB1 -> THAI CHARACTER THO NANGMONTHO
|
||||
'\u0e12' # 0xB2 -> THAI CHARACTER THO PHUTHAO
|
||||
'\u0e13' # 0xB3 -> THAI CHARACTER NO NEN
|
||||
'\u0e14' # 0xB4 -> THAI CHARACTER DO DEK
|
||||
'\u0e15' # 0xB5 -> THAI CHARACTER TO TAO
|
||||
'\u0e16' # 0xB6 -> THAI CHARACTER THO THUNG
|
||||
'\u0e17' # 0xB7 -> THAI CHARACTER THO THAHAN
|
||||
'\u0e18' # 0xB8 -> THAI CHARACTER THO THONG
|
||||
'\u0e19' # 0xB9 -> THAI CHARACTER NO NU
|
||||
'\u0e1a' # 0xBA -> THAI CHARACTER BO BAIMAI
|
||||
'\u0e1b' # 0xBB -> THAI CHARACTER PO PLA
|
||||
'\u0e1c' # 0xBC -> THAI CHARACTER PHO PHUNG
|
||||
'\u0e1d' # 0xBD -> THAI CHARACTER FO FA
|
||||
'\u0e1e' # 0xBE -> THAI CHARACTER PHO PHAN
|
||||
'\u0e1f' # 0xBF -> THAI CHARACTER FO FAN
|
||||
'\u0e20' # 0xC0 -> THAI CHARACTER PHO SAMPHAO
|
||||
'\u0e21' # 0xC1 -> THAI CHARACTER MO MA
|
||||
'\u0e22' # 0xC2 -> THAI CHARACTER YO YAK
|
||||
'\u0e23' # 0xC3 -> THAI CHARACTER RO RUA
|
||||
'\u0e24' # 0xC4 -> THAI CHARACTER RU
|
||||
'\u0e25' # 0xC5 -> THAI CHARACTER LO LING
|
||||
'\u0e26' # 0xC6 -> THAI CHARACTER LU
|
||||
'\u0e27' # 0xC7 -> THAI CHARACTER WO WAEN
|
||||
'\u0e28' # 0xC8 -> THAI CHARACTER SO SALA
|
||||
'\u0e29' # 0xC9 -> THAI CHARACTER SO RUSI
|
||||
'\u0e2a' # 0xCA -> THAI CHARACTER SO SUA
|
||||
'\u0e2b' # 0xCB -> THAI CHARACTER HO HIP
|
||||
'\u0e2c' # 0xCC -> THAI CHARACTER LO CHULA
|
||||
'\u0e2d' # 0xCD -> THAI CHARACTER O ANG
|
||||
'\u0e2e' # 0xCE -> THAI CHARACTER HO NOKHUK
|
||||
'\u0e2f' # 0xCF -> THAI CHARACTER PAIYANNOI
|
||||
'\u0e30' # 0xD0 -> THAI CHARACTER SARA A
|
||||
'\u0e31' # 0xD1 -> THAI CHARACTER MAI HAN-AKAT
|
||||
'\u0e32' # 0xD2 -> THAI CHARACTER SARA AA
|
||||
'\u0e33' # 0xD3 -> THAI CHARACTER SARA AM
|
||||
'\u0e34' # 0xD4 -> THAI CHARACTER SARA I
|
||||
'\u0e35' # 0xD5 -> THAI CHARACTER SARA II
|
||||
'\u0e36' # 0xD6 -> THAI CHARACTER SARA UE
|
||||
'\u0e37' # 0xD7 -> THAI CHARACTER SARA UEE
|
||||
'\u0e38' # 0xD8 -> THAI CHARACTER SARA U
|
||||
'\u0e39' # 0xD9 -> THAI CHARACTER SARA UU
|
||||
'\u0e3a' # 0xDA -> THAI CHARACTER PHINTHU
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u0e3f' # 0xDF -> THAI CURRENCY SYMBOL BAHT
|
||||
'\u0e40' # 0xE0 -> THAI CHARACTER SARA E
|
||||
'\u0e41' # 0xE1 -> THAI CHARACTER SARA AE
|
||||
'\u0e42' # 0xE2 -> THAI CHARACTER SARA O
|
||||
'\u0e43' # 0xE3 -> THAI CHARACTER SARA AI MAIMUAN
|
||||
'\u0e44' # 0xE4 -> THAI CHARACTER SARA AI MAIMALAI
|
||||
'\u0e45' # 0xE5 -> THAI CHARACTER LAKKHANGYAO
|
||||
'\u0e46' # 0xE6 -> THAI CHARACTER MAIYAMOK
|
||||
'\u0e47' # 0xE7 -> THAI CHARACTER MAITAIKHU
|
||||
'\u0e48' # 0xE8 -> THAI CHARACTER MAI EK
|
||||
'\u0e49' # 0xE9 -> THAI CHARACTER MAI THO
|
||||
'\u0e4a' # 0xEA -> THAI CHARACTER MAI TRI
|
||||
'\u0e4b' # 0xEB -> THAI CHARACTER MAI CHATTAWA
|
||||
'\u0e4c' # 0xEC -> THAI CHARACTER THANTHAKHAT
|
||||
'\u0e4d' # 0xED -> THAI CHARACTER NIKHAHIT
|
||||
'\u0e4e' # 0xEE -> THAI CHARACTER YAMAKKAN
|
||||
'\u0e4f' # 0xEF -> THAI CHARACTER FONGMAN
|
||||
'\u0e50' # 0xF0 -> THAI DIGIT ZERO
|
||||
'\u0e51' # 0xF1 -> THAI DIGIT ONE
|
||||
'\u0e52' # 0xF2 -> THAI DIGIT TWO
|
||||
'\u0e53' # 0xF3 -> THAI DIGIT THREE
|
||||
'\u0e54' # 0xF4 -> THAI DIGIT FOUR
|
||||
'\u0e55' # 0xF5 -> THAI DIGIT FIVE
|
||||
'\u0e56' # 0xF6 -> THAI DIGIT SIX
|
||||
'\u0e57' # 0xF7 -> THAI DIGIT SEVEN
|
||||
'\u0e58' # 0xF8 -> THAI DIGIT EIGHT
|
||||
'\u0e59' # 0xF9 -> THAI DIGIT NINE
|
||||
'\u0e5a' # 0xFA -> THAI CHARACTER ANGKHANKHU
|
||||
'\u0e5b' # 0xFB -> THAI CHARACTER KHOMUT
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_13 generated from 'MAPPINGS/ISO8859/8859-13.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-13',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u201d' # 0xA1 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\u201e' # 0xA5 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xd8' # 0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u0156' # 0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xc6' # 0xAF -> LATIN CAPITAL LETTER AE
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\u201c' # 0xB4 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xf8' # 0xB8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\u0157' # 0xBA -> LATIN SMALL LETTER R WITH CEDILLA
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xe6' # 0xBF -> LATIN SMALL LETTER AE
|
||||
'\u0104' # 0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u012e' # 0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
|
||||
'\u0100' # 0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
|
||||
'\u0106' # 0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\u0118' # 0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\u0112' # 0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
|
||||
'\u010c' # 0xC8 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0179' # 0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\u0116' # 0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
'\u0122' # 0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
'\u0136' # 0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
'\u012a' # 0xCE -> LATIN CAPITAL LETTER I WITH MACRON
|
||||
'\u013b' # 0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
'\u0160' # 0xD0 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u0143' # 0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\u0145' # 0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\u014c' # 0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\u0172' # 0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
|
||||
'\u0141' # 0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\u015a' # 0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\u016a' # 0xDB -> LATIN CAPITAL LETTER U WITH MACRON
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u017b' # 0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\u017d' # 0xDE -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S (German)
|
||||
'\u0105' # 0xE0 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u012f' # 0xE1 -> LATIN SMALL LETTER I WITH OGONEK
|
||||
'\u0101' # 0xE2 -> LATIN SMALL LETTER A WITH MACRON
|
||||
'\u0107' # 0xE3 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\u0119' # 0xE6 -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\u0113' # 0xE7 -> LATIN SMALL LETTER E WITH MACRON
|
||||
'\u010d' # 0xE8 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u017a' # 0xEA -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\u0117' # 0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
'\u0123' # 0xEC -> LATIN SMALL LETTER G WITH CEDILLA
|
||||
'\u0137' # 0xED -> LATIN SMALL LETTER K WITH CEDILLA
|
||||
'\u012b' # 0xEE -> LATIN SMALL LETTER I WITH MACRON
|
||||
'\u013c' # 0xEF -> LATIN SMALL LETTER L WITH CEDILLA
|
||||
'\u0161' # 0xF0 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u0144' # 0xF1 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\u0146' # 0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\u014d' # 0xF4 -> LATIN SMALL LETTER O WITH MACRON
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\u0173' # 0xF8 -> LATIN SMALL LETTER U WITH OGONEK
|
||||
'\u0142' # 0xF9 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\u015b' # 0xFA -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\u016b' # 0xFB -> LATIN SMALL LETTER U WITH MACRON
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u017c' # 0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\u017e' # 0xFE -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u2019' # 0xFF -> RIGHT SINGLE QUOTATION MARK
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_14 generated from 'MAPPINGS/ISO8859/8859-14.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-14',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u1e02' # 0xA1 -> LATIN CAPITAL LETTER B WITH DOT ABOVE
|
||||
'\u1e03' # 0xA2 -> LATIN SMALL LETTER B WITH DOT ABOVE
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\u010a' # 0xA4 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||
'\u010b' # 0xA5 -> LATIN SMALL LETTER C WITH DOT ABOVE
|
||||
'\u1e0a' # 0xA6 -> LATIN CAPITAL LETTER D WITH DOT ABOVE
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\u1e80' # 0xA8 -> LATIN CAPITAL LETTER W WITH GRAVE
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u1e82' # 0xAA -> LATIN CAPITAL LETTER W WITH ACUTE
|
||||
'\u1e0b' # 0xAB -> LATIN SMALL LETTER D WITH DOT ABOVE
|
||||
'\u1ef2' # 0xAC -> LATIN CAPITAL LETTER Y WITH GRAVE
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\u0178' # 0xAF -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\u1e1e' # 0xB0 -> LATIN CAPITAL LETTER F WITH DOT ABOVE
|
||||
'\u1e1f' # 0xB1 -> LATIN SMALL LETTER F WITH DOT ABOVE
|
||||
'\u0120' # 0xB2 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||
'\u0121' # 0xB3 -> LATIN SMALL LETTER G WITH DOT ABOVE
|
||||
'\u1e40' # 0xB4 -> LATIN CAPITAL LETTER M WITH DOT ABOVE
|
||||
'\u1e41' # 0xB5 -> LATIN SMALL LETTER M WITH DOT ABOVE
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\u1e56' # 0xB7 -> LATIN CAPITAL LETTER P WITH DOT ABOVE
|
||||
'\u1e81' # 0xB8 -> LATIN SMALL LETTER W WITH GRAVE
|
||||
'\u1e57' # 0xB9 -> LATIN SMALL LETTER P WITH DOT ABOVE
|
||||
'\u1e83' # 0xBA -> LATIN SMALL LETTER W WITH ACUTE
|
||||
'\u1e60' # 0xBB -> LATIN CAPITAL LETTER S WITH DOT ABOVE
|
||||
'\u1ef3' # 0xBC -> LATIN SMALL LETTER Y WITH GRAVE
|
||||
'\u1e84' # 0xBD -> LATIN CAPITAL LETTER W WITH DIAERESIS
|
||||
'\u1e85' # 0xBE -> LATIN SMALL LETTER W WITH DIAERESIS
|
||||
'\u1e61' # 0xBF -> LATIN SMALL LETTER S WITH DOT ABOVE
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u0174' # 0xD0 -> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\u1e6a' # 0xD7 -> LATIN CAPITAL LETTER T WITH DOT ABOVE
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\u0176' # 0xDE -> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\u0175' # 0xF0 -> LATIN SMALL LETTER W WITH CIRCUMFLEX
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\u1e6b' # 0xF7 -> LATIN SMALL LETTER T WITH DOT ABOVE
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\u0177' # 0xFE -> LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_15 generated from 'MAPPINGS/ISO8859/8859-15.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-15',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\u20ac' # 0xA4 -> EURO SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\u0160' # 0xA6 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\u0161' # 0xA8 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xaa' # 0xAA -> FEMININE ORDINAL INDICATOR
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\u017d' # 0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\u017e' # 0xB8 -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xba' # 0xBA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u0152' # 0xBC -> LATIN CAPITAL LIGATURE OE
|
||||
'\u0153' # 0xBD -> LATIN SMALL LIGATURE OE
|
||||
'\u0178' # 0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\xd0' # 0xD0 -> LATIN CAPITAL LETTER ETH
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\xde' # 0xDE -> LATIN CAPITAL LETTER THORN
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\xf0' # 0xF0 -> LATIN SMALL LETTER ETH
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\xfe' # 0xFE -> LATIN SMALL LETTER THORN
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_16 generated from 'MAPPINGS/ISO8859/8859-16.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-16',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0104' # 0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u0105' # 0xA2 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u0141' # 0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\u20ac' # 0xA4 -> EURO SIGN
|
||||
'\u201e' # 0xA5 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u0160' # 0xA6 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\u0161' # 0xA8 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u0218' # 0xAA -> LATIN CAPITAL LETTER S WITH COMMA BELOW
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u0179' # 0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\u017a' # 0xAE -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\u017b' # 0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\u010c' # 0xB2 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\u0142' # 0xB3 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\u017d' # 0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\u201d' # 0xB5 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\u017e' # 0xB8 -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u010d' # 0xB9 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\u0219' # 0xBA -> LATIN SMALL LETTER S WITH COMMA BELOW
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u0152' # 0xBC -> LATIN CAPITAL LIGATURE OE
|
||||
'\u0153' # 0xBD -> LATIN SMALL LIGATURE OE
|
||||
'\u0178' # 0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
'\u017c' # 0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\u0102' # 0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\u0106' # 0xC5 -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u0110' # 0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\u0143' # 0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\u0150' # 0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\u015a' # 0xD7 -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\u0170' # 0xD8 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u0118' # 0xDD -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\u021a' # 0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\u0103' # 0xE3 -> LATIN SMALL LETTER A WITH BREVE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\u0107' # 0xE5 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\u0111' # 0xF0 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\u0144' # 0xF1 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\u0151' # 0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\u015b' # 0xF7 -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\u0171' # 0xF8 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u0119' # 0xFD -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\u021b' # 0xFE -> LATIN SMALL LETTER T WITH COMMA BELOW
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_2 generated from 'MAPPINGS/ISO8859/8859-2.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-2',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0104' # 0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u02d8' # 0xA2 -> BREVE
|
||||
'\u0141' # 0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\u013d' # 0xA5 -> LATIN CAPITAL LETTER L WITH CARON
|
||||
'\u015a' # 0xA6 -> LATIN CAPITAL LETTER S WITH ACUTE
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\u0160' # 0xA9 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u015e' # 0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\u0164' # 0xAB -> LATIN CAPITAL LETTER T WITH CARON
|
||||
'\u0179' # 0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\u017d' # 0xAE -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\u017b' # 0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\u0105' # 0xB1 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u02db' # 0xB2 -> OGONEK
|
||||
'\u0142' # 0xB3 -> LATIN SMALL LETTER L WITH STROKE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\u013e' # 0xB5 -> LATIN SMALL LETTER L WITH CARON
|
||||
'\u015b' # 0xB6 -> LATIN SMALL LETTER S WITH ACUTE
|
||||
'\u02c7' # 0xB7 -> CARON
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\u0161' # 0xB9 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u015f' # 0xBA -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\u0165' # 0xBB -> LATIN SMALL LETTER T WITH CARON
|
||||
'\u017a' # 0xBC -> LATIN SMALL LETTER Z WITH ACUTE
|
||||
'\u02dd' # 0xBD -> DOUBLE ACUTE ACCENT
|
||||
'\u017e' # 0xBE -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u017c' # 0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\u0154' # 0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\u0102' # 0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\u0139' # 0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
|
||||
'\u0106' # 0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\u010c' # 0xC8 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0118' # 0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\u011a' # 0xCC -> LATIN CAPITAL LETTER E WITH CARON
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\u010e' # 0xCF -> LATIN CAPITAL LETTER D WITH CARON
|
||||
'\u0110' # 0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\u0143' # 0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
|
||||
'\u0147' # 0xD2 -> LATIN CAPITAL LETTER N WITH CARON
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\u0150' # 0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\u0158' # 0xD8 -> LATIN CAPITAL LETTER R WITH CARON
|
||||
'\u016e' # 0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\u0170' # 0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\xdd' # 0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
'\u0162' # 0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\u0155' # 0xE0 -> LATIN SMALL LETTER R WITH ACUTE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\u0103' # 0xE3 -> LATIN SMALL LETTER A WITH BREVE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\u013a' # 0xE5 -> LATIN SMALL LETTER L WITH ACUTE
|
||||
'\u0107' # 0xE6 -> LATIN SMALL LETTER C WITH ACUTE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\u010d' # 0xE8 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u0119' # 0xEA -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u011b' # 0xEC -> LATIN SMALL LETTER E WITH CARON
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\u010f' # 0xEF -> LATIN SMALL LETTER D WITH CARON
|
||||
'\u0111' # 0xF0 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\u0144' # 0xF1 -> LATIN SMALL LETTER N WITH ACUTE
|
||||
'\u0148' # 0xF2 -> LATIN SMALL LETTER N WITH CARON
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\u0151' # 0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\u0159' # 0xF8 -> LATIN SMALL LETTER R WITH CARON
|
||||
'\u016f' # 0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\u0171' # 0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\xfd' # 0xFD -> LATIN SMALL LETTER Y WITH ACUTE
|
||||
'\u0163' # 0xFE -> LATIN SMALL LETTER T WITH CEDILLA
|
||||
'\u02d9' # 0xFF -> DOT ABOVE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_3 generated from 'MAPPINGS/ISO8859/8859-3.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-3',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0126' # 0xA1 -> LATIN CAPITAL LETTER H WITH STROKE
|
||||
'\u02d8' # 0xA2 -> BREVE
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\ufffe'
|
||||
'\u0124' # 0xA6 -> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\u0130' # 0xA9 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
'\u015e' # 0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\u011e' # 0xAB -> LATIN CAPITAL LETTER G WITH BREVE
|
||||
'\u0134' # 0xAC -> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\ufffe'
|
||||
'\u017b' # 0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\u0127' # 0xB1 -> LATIN SMALL LETTER H WITH STROKE
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\u0125' # 0xB6 -> LATIN SMALL LETTER H WITH CIRCUMFLEX
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\u0131' # 0xB9 -> LATIN SMALL LETTER DOTLESS I
|
||||
'\u015f' # 0xBA -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\u011f' # 0xBB -> LATIN SMALL LETTER G WITH BREVE
|
||||
'\u0135' # 0xBC -> LATIN SMALL LETTER J WITH CIRCUMFLEX
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\ufffe'
|
||||
'\u017c' # 0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\ufffe'
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\u010a' # 0xC5 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||
'\u0108' # 0xC6 -> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\ufffe'
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\u0120' # 0xD5 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\u011c' # 0xD8 -> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u016c' # 0xDD -> LATIN CAPITAL LETTER U WITH BREVE
|
||||
'\u015c' # 0xDE -> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\ufffe'
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\u010b' # 0xE5 -> LATIN SMALL LETTER C WITH DOT ABOVE
|
||||
'\u0109' # 0xE6 -> LATIN SMALL LETTER C WITH CIRCUMFLEX
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\ufffe'
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\u0121' # 0xF5 -> LATIN SMALL LETTER G WITH DOT ABOVE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\u011d' # 0xF8 -> LATIN SMALL LETTER G WITH CIRCUMFLEX
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u016d' # 0xFD -> LATIN SMALL LETTER U WITH BREVE
|
||||
'\u015d' # 0xFE -> LATIN SMALL LETTER S WITH CIRCUMFLEX
|
||||
'\u02d9' # 0xFF -> DOT ABOVE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_4 generated from 'MAPPINGS/ISO8859/8859-4.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-4',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0104' # 0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
|
||||
'\u0138' # 0xA2 -> LATIN SMALL LETTER KRA
|
||||
'\u0156' # 0xA3 -> LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\u0128' # 0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
|
||||
'\u013b' # 0xA6 -> LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\u0160' # 0xA9 -> LATIN CAPITAL LETTER S WITH CARON
|
||||
'\u0112' # 0xAA -> LATIN CAPITAL LETTER E WITH MACRON
|
||||
'\u0122' # 0xAB -> LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
'\u0166' # 0xAC -> LATIN CAPITAL LETTER T WITH STROKE
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\u017d' # 0xAE -> LATIN CAPITAL LETTER Z WITH CARON
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\u0105' # 0xB1 -> LATIN SMALL LETTER A WITH OGONEK
|
||||
'\u02db' # 0xB2 -> OGONEK
|
||||
'\u0157' # 0xB3 -> LATIN SMALL LETTER R WITH CEDILLA
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\u0129' # 0xB5 -> LATIN SMALL LETTER I WITH TILDE
|
||||
'\u013c' # 0xB6 -> LATIN SMALL LETTER L WITH CEDILLA
|
||||
'\u02c7' # 0xB7 -> CARON
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\u0161' # 0xB9 -> LATIN SMALL LETTER S WITH CARON
|
||||
'\u0113' # 0xBA -> LATIN SMALL LETTER E WITH MACRON
|
||||
'\u0123' # 0xBB -> LATIN SMALL LETTER G WITH CEDILLA
|
||||
'\u0167' # 0xBC -> LATIN SMALL LETTER T WITH STROKE
|
||||
'\u014a' # 0xBD -> LATIN CAPITAL LETTER ENG
|
||||
'\u017e' # 0xBE -> LATIN SMALL LETTER Z WITH CARON
|
||||
'\u014b' # 0xBF -> LATIN SMALL LETTER ENG
|
||||
'\u0100' # 0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\u012e' # 0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
|
||||
'\u010c' # 0xC8 -> LATIN CAPITAL LETTER C WITH CARON
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\u0118' # 0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\u0116' # 0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\u012a' # 0xCF -> LATIN CAPITAL LETTER I WITH MACRON
|
||||
'\u0110' # 0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
|
||||
'\u0145' # 0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
'\u014c' # 0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
|
||||
'\u0136' # 0xD3 -> LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\u0172' # 0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u0168' # 0xDD -> LATIN CAPITAL LETTER U WITH TILDE
|
||||
'\u016a' # 0xDE -> LATIN CAPITAL LETTER U WITH MACRON
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\u0101' # 0xE0 -> LATIN SMALL LETTER A WITH MACRON
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\u012f' # 0xE7 -> LATIN SMALL LETTER I WITH OGONEK
|
||||
'\u010d' # 0xE8 -> LATIN SMALL LETTER C WITH CARON
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\u0119' # 0xEA -> LATIN SMALL LETTER E WITH OGONEK
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\u0117' # 0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\u012b' # 0xEF -> LATIN SMALL LETTER I WITH MACRON
|
||||
'\u0111' # 0xF0 -> LATIN SMALL LETTER D WITH STROKE
|
||||
'\u0146' # 0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
|
||||
'\u014d' # 0xF2 -> LATIN SMALL LETTER O WITH MACRON
|
||||
'\u0137' # 0xF3 -> LATIN SMALL LETTER K WITH CEDILLA
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\u0173' # 0xF9 -> LATIN SMALL LETTER U WITH OGONEK
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u0169' # 0xFD -> LATIN SMALL LETTER U WITH TILDE
|
||||
'\u016b' # 0xFE -> LATIN SMALL LETTER U WITH MACRON
|
||||
'\u02d9' # 0xFF -> DOT ABOVE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_5 generated from 'MAPPINGS/ISO8859/8859-5.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-5',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u0401' # 0xA1 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\u0402' # 0xA2 -> CYRILLIC CAPITAL LETTER DJE
|
||||
'\u0403' # 0xA3 -> CYRILLIC CAPITAL LETTER GJE
|
||||
'\u0404' # 0xA4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
'\u0405' # 0xA5 -> CYRILLIC CAPITAL LETTER DZE
|
||||
'\u0406' # 0xA6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0407' # 0xA7 -> CYRILLIC CAPITAL LETTER YI
|
||||
'\u0408' # 0xA8 -> CYRILLIC CAPITAL LETTER JE
|
||||
'\u0409' # 0xA9 -> CYRILLIC CAPITAL LETTER LJE
|
||||
'\u040a' # 0xAA -> CYRILLIC CAPITAL LETTER NJE
|
||||
'\u040b' # 0xAB -> CYRILLIC CAPITAL LETTER TSHE
|
||||
'\u040c' # 0xAC -> CYRILLIC CAPITAL LETTER KJE
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\u040e' # 0xAE -> CYRILLIC CAPITAL LETTER SHORT U
|
||||
'\u040f' # 0xAF -> CYRILLIC CAPITAL LETTER DZHE
|
||||
'\u0410' # 0xB0 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0411' # 0xB1 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0412' # 0xB2 -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u0413' # 0xB3 -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\u0414' # 0xB4 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0415' # 0xB5 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0416' # 0xB6 -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0417' # 0xB7 -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0418' # 0xB8 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u0419' # 0xB9 -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u041a' # 0xBA -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u041b' # 0xBB -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u041c' # 0xBC -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u041d' # 0xBD -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u041e' # 0xBE -> CYRILLIC CAPITAL LETTER O
|
||||
'\u041f' # 0xBF -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u0420' # 0xC0 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0421' # 0xC1 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0422' # 0xC2 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0423' # 0xC3 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0424' # 0xC4 -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0425' # 0xC5 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0426' # 0xC6 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0427' # 0xC7 -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\u0428' # 0xC8 -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u0429' # 0xC9 -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u042a' # 0xCA -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
'\u042b' # 0xCB -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u042c' # 0xCC -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u042d' # 0xCD -> CYRILLIC CAPITAL LETTER E
|
||||
'\u042e' # 0xCE -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u042f' # 0xCF -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0430' # 0xD0 -> CYRILLIC SMALL LETTER A
|
||||
'\u0431' # 0xD1 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0432' # 0xD2 -> CYRILLIC SMALL LETTER VE
|
||||
'\u0433' # 0xD3 -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0434' # 0xD4 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0435' # 0xD5 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0436' # 0xD6 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0437' # 0xD7 -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0438' # 0xD8 -> CYRILLIC SMALL LETTER I
|
||||
'\u0439' # 0xD9 -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u043a' # 0xDA -> CYRILLIC SMALL LETTER KA
|
||||
'\u043b' # 0xDB -> CYRILLIC SMALL LETTER EL
|
||||
'\u043c' # 0xDC -> CYRILLIC SMALL LETTER EM
|
||||
'\u043d' # 0xDD -> CYRILLIC SMALL LETTER EN
|
||||
'\u043e' # 0xDE -> CYRILLIC SMALL LETTER O
|
||||
'\u043f' # 0xDF -> CYRILLIC SMALL LETTER PE
|
||||
'\u0440' # 0xE0 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0441' # 0xE1 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0442' # 0xE2 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0443' # 0xE3 -> CYRILLIC SMALL LETTER U
|
||||
'\u0444' # 0xE4 -> CYRILLIC SMALL LETTER EF
|
||||
'\u0445' # 0xE5 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0446' # 0xE6 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0447' # 0xE7 -> CYRILLIC SMALL LETTER CHE
|
||||
'\u0448' # 0xE8 -> CYRILLIC SMALL LETTER SHA
|
||||
'\u0449' # 0xE9 -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u044a' # 0xEA -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u044b' # 0xEB -> CYRILLIC SMALL LETTER YERU
|
||||
'\u044c' # 0xEC -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u044d' # 0xED -> CYRILLIC SMALL LETTER E
|
||||
'\u044e' # 0xEE -> CYRILLIC SMALL LETTER YU
|
||||
'\u044f' # 0xEF -> CYRILLIC SMALL LETTER YA
|
||||
'\u2116' # 0xF0 -> NUMERO SIGN
|
||||
'\u0451' # 0xF1 -> CYRILLIC SMALL LETTER IO
|
||||
'\u0452' # 0xF2 -> CYRILLIC SMALL LETTER DJE
|
||||
'\u0453' # 0xF3 -> CYRILLIC SMALL LETTER GJE
|
||||
'\u0454' # 0xF4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
'\u0455' # 0xF5 -> CYRILLIC SMALL LETTER DZE
|
||||
'\u0456' # 0xF6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
'\u0457' # 0xF7 -> CYRILLIC SMALL LETTER YI
|
||||
'\u0458' # 0xF8 -> CYRILLIC SMALL LETTER JE
|
||||
'\u0459' # 0xF9 -> CYRILLIC SMALL LETTER LJE
|
||||
'\u045a' # 0xFA -> CYRILLIC SMALL LETTER NJE
|
||||
'\u045b' # 0xFB -> CYRILLIC SMALL LETTER TSHE
|
||||
'\u045c' # 0xFC -> CYRILLIC SMALL LETTER KJE
|
||||
'\xa7' # 0xFD -> SECTION SIGN
|
||||
'\u045e' # 0xFE -> CYRILLIC SMALL LETTER SHORT U
|
||||
'\u045f' # 0xFF -> CYRILLIC SMALL LETTER DZHE
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_6 generated from 'MAPPINGS/ISO8859/8859-6.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-6',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u060c' # 0xAC -> ARABIC COMMA
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u061b' # 0xBB -> ARABIC SEMICOLON
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u061f' # 0xBF -> ARABIC QUESTION MARK
|
||||
'\ufffe'
|
||||
'\u0621' # 0xC1 -> ARABIC LETTER HAMZA
|
||||
'\u0622' # 0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
'\u0623' # 0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
'\u0624' # 0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
'\u0625' # 0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
'\u0626' # 0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
'\u0627' # 0xC7 -> ARABIC LETTER ALEF
|
||||
'\u0628' # 0xC8 -> ARABIC LETTER BEH
|
||||
'\u0629' # 0xC9 -> ARABIC LETTER TEH MARBUTA
|
||||
'\u062a' # 0xCA -> ARABIC LETTER TEH
|
||||
'\u062b' # 0xCB -> ARABIC LETTER THEH
|
||||
'\u062c' # 0xCC -> ARABIC LETTER JEEM
|
||||
'\u062d' # 0xCD -> ARABIC LETTER HAH
|
||||
'\u062e' # 0xCE -> ARABIC LETTER KHAH
|
||||
'\u062f' # 0xCF -> ARABIC LETTER DAL
|
||||
'\u0630' # 0xD0 -> ARABIC LETTER THAL
|
||||
'\u0631' # 0xD1 -> ARABIC LETTER REH
|
||||
'\u0632' # 0xD2 -> ARABIC LETTER ZAIN
|
||||
'\u0633' # 0xD3 -> ARABIC LETTER SEEN
|
||||
'\u0634' # 0xD4 -> ARABIC LETTER SHEEN
|
||||
'\u0635' # 0xD5 -> ARABIC LETTER SAD
|
||||
'\u0636' # 0xD6 -> ARABIC LETTER DAD
|
||||
'\u0637' # 0xD7 -> ARABIC LETTER TAH
|
||||
'\u0638' # 0xD8 -> ARABIC LETTER ZAH
|
||||
'\u0639' # 0xD9 -> ARABIC LETTER AIN
|
||||
'\u063a' # 0xDA -> ARABIC LETTER GHAIN
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u0640' # 0xE0 -> ARABIC TATWEEL
|
||||
'\u0641' # 0xE1 -> ARABIC LETTER FEH
|
||||
'\u0642' # 0xE2 -> ARABIC LETTER QAF
|
||||
'\u0643' # 0xE3 -> ARABIC LETTER KAF
|
||||
'\u0644' # 0xE4 -> ARABIC LETTER LAM
|
||||
'\u0645' # 0xE5 -> ARABIC LETTER MEEM
|
||||
'\u0646' # 0xE6 -> ARABIC LETTER NOON
|
||||
'\u0647' # 0xE7 -> ARABIC LETTER HEH
|
||||
'\u0648' # 0xE8 -> ARABIC LETTER WAW
|
||||
'\u0649' # 0xE9 -> ARABIC LETTER ALEF MAKSURA
|
||||
'\u064a' # 0xEA -> ARABIC LETTER YEH
|
||||
'\u064b' # 0xEB -> ARABIC FATHATAN
|
||||
'\u064c' # 0xEC -> ARABIC DAMMATAN
|
||||
'\u064d' # 0xED -> ARABIC KASRATAN
|
||||
'\u064e' # 0xEE -> ARABIC FATHA
|
||||
'\u064f' # 0xEF -> ARABIC DAMMA
|
||||
'\u0650' # 0xF0 -> ARABIC KASRA
|
||||
'\u0651' # 0xF1 -> ARABIC SHADDA
|
||||
'\u0652' # 0xF2 -> ARABIC SUKUN
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_7 generated from 'MAPPINGS/ISO8859/8859-7.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-7',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\u2018' # 0xA1 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0xA2 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\u20ac' # 0xA4 -> EURO SIGN
|
||||
'\u20af' # 0xA5 -> DRACHMA SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\u037a' # 0xAA -> GREEK YPOGEGRAMMENI
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\ufffe'
|
||||
'\u2015' # 0xAF -> HORIZONTAL BAR
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\u0384' # 0xB4 -> GREEK TONOS
|
||||
'\u0385' # 0xB5 -> GREEK DIALYTIKA TONOS
|
||||
'\u0386' # 0xB6 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\u0388' # 0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
'\u0389' # 0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
'\u038a' # 0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\u038c' # 0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\u038e' # 0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
'\u038f' # 0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
'\u0390' # 0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
'\u0391' # 0xC1 -> GREEK CAPITAL LETTER ALPHA
|
||||
'\u0392' # 0xC2 -> GREEK CAPITAL LETTER BETA
|
||||
'\u0393' # 0xC3 -> GREEK CAPITAL LETTER GAMMA
|
||||
'\u0394' # 0xC4 -> GREEK CAPITAL LETTER DELTA
|
||||
'\u0395' # 0xC5 -> GREEK CAPITAL LETTER EPSILON
|
||||
'\u0396' # 0xC6 -> GREEK CAPITAL LETTER ZETA
|
||||
'\u0397' # 0xC7 -> GREEK CAPITAL LETTER ETA
|
||||
'\u0398' # 0xC8 -> GREEK CAPITAL LETTER THETA
|
||||
'\u0399' # 0xC9 -> GREEK CAPITAL LETTER IOTA
|
||||
'\u039a' # 0xCA -> GREEK CAPITAL LETTER KAPPA
|
||||
'\u039b' # 0xCB -> GREEK CAPITAL LETTER LAMDA
|
||||
'\u039c' # 0xCC -> GREEK CAPITAL LETTER MU
|
||||
'\u039d' # 0xCD -> GREEK CAPITAL LETTER NU
|
||||
'\u039e' # 0xCE -> GREEK CAPITAL LETTER XI
|
||||
'\u039f' # 0xCF -> GREEK CAPITAL LETTER OMICRON
|
||||
'\u03a0' # 0xD0 -> GREEK CAPITAL LETTER PI
|
||||
'\u03a1' # 0xD1 -> GREEK CAPITAL LETTER RHO
|
||||
'\ufffe'
|
||||
'\u03a3' # 0xD3 -> GREEK CAPITAL LETTER SIGMA
|
||||
'\u03a4' # 0xD4 -> GREEK CAPITAL LETTER TAU
|
||||
'\u03a5' # 0xD5 -> GREEK CAPITAL LETTER UPSILON
|
||||
'\u03a6' # 0xD6 -> GREEK CAPITAL LETTER PHI
|
||||
'\u03a7' # 0xD7 -> GREEK CAPITAL LETTER CHI
|
||||
'\u03a8' # 0xD8 -> GREEK CAPITAL LETTER PSI
|
||||
'\u03a9' # 0xD9 -> GREEK CAPITAL LETTER OMEGA
|
||||
'\u03aa' # 0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03ab' # 0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03ac' # 0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
'\u03ad' # 0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
'\u03ae' # 0xDE -> GREEK SMALL LETTER ETA WITH TONOS
|
||||
'\u03af' # 0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
|
||||
'\u03b0' # 0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
'\u03b1' # 0xE1 -> GREEK SMALL LETTER ALPHA
|
||||
'\u03b2' # 0xE2 -> GREEK SMALL LETTER BETA
|
||||
'\u03b3' # 0xE3 -> GREEK SMALL LETTER GAMMA
|
||||
'\u03b4' # 0xE4 -> GREEK SMALL LETTER DELTA
|
||||
'\u03b5' # 0xE5 -> GREEK SMALL LETTER EPSILON
|
||||
'\u03b6' # 0xE6 -> GREEK SMALL LETTER ZETA
|
||||
'\u03b7' # 0xE7 -> GREEK SMALL LETTER ETA
|
||||
'\u03b8' # 0xE8 -> GREEK SMALL LETTER THETA
|
||||
'\u03b9' # 0xE9 -> GREEK SMALL LETTER IOTA
|
||||
'\u03ba' # 0xEA -> GREEK SMALL LETTER KAPPA
|
||||
'\u03bb' # 0xEB -> GREEK SMALL LETTER LAMDA
|
||||
'\u03bc' # 0xEC -> GREEK SMALL LETTER MU
|
||||
'\u03bd' # 0xED -> GREEK SMALL LETTER NU
|
||||
'\u03be' # 0xEE -> GREEK SMALL LETTER XI
|
||||
'\u03bf' # 0xEF -> GREEK SMALL LETTER OMICRON
|
||||
'\u03c0' # 0xF0 -> GREEK SMALL LETTER PI
|
||||
'\u03c1' # 0xF1 -> GREEK SMALL LETTER RHO
|
||||
'\u03c2' # 0xF2 -> GREEK SMALL LETTER FINAL SIGMA
|
||||
'\u03c3' # 0xF3 -> GREEK SMALL LETTER SIGMA
|
||||
'\u03c4' # 0xF4 -> GREEK SMALL LETTER TAU
|
||||
'\u03c5' # 0xF5 -> GREEK SMALL LETTER UPSILON
|
||||
'\u03c6' # 0xF6 -> GREEK SMALL LETTER PHI
|
||||
'\u03c7' # 0xF7 -> GREEK SMALL LETTER CHI
|
||||
'\u03c8' # 0xF8 -> GREEK SMALL LETTER PSI
|
||||
'\u03c9' # 0xF9 -> GREEK SMALL LETTER OMEGA
|
||||
'\u03ca' # 0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
'\u03cb' # 0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
'\u03cc' # 0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
'\u03cd' # 0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
'\u03ce' # 0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
'\ufffe'
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_8 generated from 'MAPPINGS/ISO8859/8859-8.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-8',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\ufffe'
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xd7' # 0xAA -> MULTIPLICATION SIGN
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xf7' # 0xBA -> DIVISION SIGN
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u2017' # 0xDF -> DOUBLE LOW LINE
|
||||
'\u05d0' # 0xE0 -> HEBREW LETTER ALEF
|
||||
'\u05d1' # 0xE1 -> HEBREW LETTER BET
|
||||
'\u05d2' # 0xE2 -> HEBREW LETTER GIMEL
|
||||
'\u05d3' # 0xE3 -> HEBREW LETTER DALET
|
||||
'\u05d4' # 0xE4 -> HEBREW LETTER HE
|
||||
'\u05d5' # 0xE5 -> HEBREW LETTER VAV
|
||||
'\u05d6' # 0xE6 -> HEBREW LETTER ZAYIN
|
||||
'\u05d7' # 0xE7 -> HEBREW LETTER HET
|
||||
'\u05d8' # 0xE8 -> HEBREW LETTER TET
|
||||
'\u05d9' # 0xE9 -> HEBREW LETTER YOD
|
||||
'\u05da' # 0xEA -> HEBREW LETTER FINAL KAF
|
||||
'\u05db' # 0xEB -> HEBREW LETTER KAF
|
||||
'\u05dc' # 0xEC -> HEBREW LETTER LAMED
|
||||
'\u05dd' # 0xED -> HEBREW LETTER FINAL MEM
|
||||
'\u05de' # 0xEE -> HEBREW LETTER MEM
|
||||
'\u05df' # 0xEF -> HEBREW LETTER FINAL NUN
|
||||
'\u05e0' # 0xF0 -> HEBREW LETTER NUN
|
||||
'\u05e1' # 0xF1 -> HEBREW LETTER SAMEKH
|
||||
'\u05e2' # 0xF2 -> HEBREW LETTER AYIN
|
||||
'\u05e3' # 0xF3 -> HEBREW LETTER FINAL PE
|
||||
'\u05e4' # 0xF4 -> HEBREW LETTER PE
|
||||
'\u05e5' # 0xF5 -> HEBREW LETTER FINAL TSADI
|
||||
'\u05e6' # 0xF6 -> HEBREW LETTER TSADI
|
||||
'\u05e7' # 0xF7 -> HEBREW LETTER QOF
|
||||
'\u05e8' # 0xF8 -> HEBREW LETTER RESH
|
||||
'\u05e9' # 0xF9 -> HEBREW LETTER SHIN
|
||||
'\u05ea' # 0xFA -> HEBREW LETTER TAV
|
||||
'\ufffe'
|
||||
'\ufffe'
|
||||
'\u200e' # 0xFD -> LEFT-TO-RIGHT MARK
|
||||
'\u200f' # 0xFE -> RIGHT-TO-LEFT MARK
|
||||
'\ufffe'
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec iso8859_9 generated from 'MAPPINGS/ISO8859/8859-9.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='iso8859-9',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\x80' # 0x80 -> <control>
|
||||
'\x81' # 0x81 -> <control>
|
||||
'\x82' # 0x82 -> <control>
|
||||
'\x83' # 0x83 -> <control>
|
||||
'\x84' # 0x84 -> <control>
|
||||
'\x85' # 0x85 -> <control>
|
||||
'\x86' # 0x86 -> <control>
|
||||
'\x87' # 0x87 -> <control>
|
||||
'\x88' # 0x88 -> <control>
|
||||
'\x89' # 0x89 -> <control>
|
||||
'\x8a' # 0x8A -> <control>
|
||||
'\x8b' # 0x8B -> <control>
|
||||
'\x8c' # 0x8C -> <control>
|
||||
'\x8d' # 0x8D -> <control>
|
||||
'\x8e' # 0x8E -> <control>
|
||||
'\x8f' # 0x8F -> <control>
|
||||
'\x90' # 0x90 -> <control>
|
||||
'\x91' # 0x91 -> <control>
|
||||
'\x92' # 0x92 -> <control>
|
||||
'\x93' # 0x93 -> <control>
|
||||
'\x94' # 0x94 -> <control>
|
||||
'\x95' # 0x95 -> <control>
|
||||
'\x96' # 0x96 -> <control>
|
||||
'\x97' # 0x97 -> <control>
|
||||
'\x98' # 0x98 -> <control>
|
||||
'\x99' # 0x99 -> <control>
|
||||
'\x9a' # 0x9A -> <control>
|
||||
'\x9b' # 0x9B -> <control>
|
||||
'\x9c' # 0x9C -> <control>
|
||||
'\x9d' # 0x9D -> <control>
|
||||
'\x9e' # 0x9E -> <control>
|
||||
'\x9f' # 0x9F -> <control>
|
||||
'\xa0' # 0xA0 -> NO-BREAK SPACE
|
||||
'\xa1' # 0xA1 -> INVERTED EXCLAMATION MARK
|
||||
'\xa2' # 0xA2 -> CENT SIGN
|
||||
'\xa3' # 0xA3 -> POUND SIGN
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\xa5' # 0xA5 -> YEN SIGN
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\xa8' # 0xA8 -> DIAERESIS
|
||||
'\xa9' # 0xA9 -> COPYRIGHT SIGN
|
||||
'\xaa' # 0xAA -> FEMININE ORDINAL INDICATOR
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\xaf' # 0xAF -> MACRON
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\xb3' # 0xB3 -> SUPERSCRIPT THREE
|
||||
'\xb4' # 0xB4 -> ACUTE ACCENT
|
||||
'\xb5' # 0xB5 -> MICRO SIGN
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\xb8' # 0xB8 -> CEDILLA
|
||||
'\xb9' # 0xB9 -> SUPERSCRIPT ONE
|
||||
'\xba' # 0xBA -> MASCULINE ORDINAL INDICATOR
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
|
||||
'\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
|
||||
'\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
|
||||
'\xbf' # 0xBF -> INVERTED QUESTION MARK
|
||||
'\xc0' # 0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
|
||||
'\xc1' # 0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
|
||||
'\xc2' # 0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
'\xc3' # 0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
|
||||
'\xc4' # 0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
'\xc5' # 0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
'\xc6' # 0xC6 -> LATIN CAPITAL LETTER AE
|
||||
'\xc7' # 0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
'\xc8' # 0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
|
||||
'\xc9' # 0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
|
||||
'\xca' # 0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
'\xcb' # 0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
'\xcc' # 0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
|
||||
'\xcd' # 0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
|
||||
'\xce' # 0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
'\xcf' # 0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
'\u011e' # 0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
|
||||
'\xd1' # 0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
|
||||
'\xd2' # 0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
|
||||
'\xd3' # 0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
|
||||
'\xd4' # 0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
'\xd5' # 0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
|
||||
'\xd6' # 0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
'\xd7' # 0xD7 -> MULTIPLICATION SIGN
|
||||
'\xd8' # 0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
|
||||
'\xd9' # 0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
|
||||
'\xda' # 0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
|
||||
'\xdb' # 0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
'\xdc' # 0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
'\u0130' # 0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
'\u015e' # 0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
'\xdf' # 0xDF -> LATIN SMALL LETTER SHARP S
|
||||
'\xe0' # 0xE0 -> LATIN SMALL LETTER A WITH GRAVE
|
||||
'\xe1' # 0xE1 -> LATIN SMALL LETTER A WITH ACUTE
|
||||
'\xe2' # 0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
'\xe3' # 0xE3 -> LATIN SMALL LETTER A WITH TILDE
|
||||
'\xe4' # 0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
|
||||
'\xe5' # 0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
|
||||
'\xe6' # 0xE6 -> LATIN SMALL LETTER AE
|
||||
'\xe7' # 0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
|
||||
'\xe8' # 0xE8 -> LATIN SMALL LETTER E WITH GRAVE
|
||||
'\xe9' # 0xE9 -> LATIN SMALL LETTER E WITH ACUTE
|
||||
'\xea' # 0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
'\xeb' # 0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
|
||||
'\xec' # 0xEC -> LATIN SMALL LETTER I WITH GRAVE
|
||||
'\xed' # 0xED -> LATIN SMALL LETTER I WITH ACUTE
|
||||
'\xee' # 0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
'\xef' # 0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
|
||||
'\u011f' # 0xF0 -> LATIN SMALL LETTER G WITH BREVE
|
||||
'\xf1' # 0xF1 -> LATIN SMALL LETTER N WITH TILDE
|
||||
'\xf2' # 0xF2 -> LATIN SMALL LETTER O WITH GRAVE
|
||||
'\xf3' # 0xF3 -> LATIN SMALL LETTER O WITH ACUTE
|
||||
'\xf4' # 0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
'\xf5' # 0xF5 -> LATIN SMALL LETTER O WITH TILDE
|
||||
'\xf6' # 0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
|
||||
'\xf7' # 0xF7 -> DIVISION SIGN
|
||||
'\xf8' # 0xF8 -> LATIN SMALL LETTER O WITH STROKE
|
||||
'\xf9' # 0xF9 -> LATIN SMALL LETTER U WITH GRAVE
|
||||
'\xfa' # 0xFA -> LATIN SMALL LETTER U WITH ACUTE
|
||||
'\xfb' # 0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
|
||||
'\u0131' # 0xFD -> LATIN SMALL LETTER DOTLESS I
|
||||
'\u015f' # 0xFE -> LATIN SMALL LETTER S WITH CEDILLA
|
||||
'\xff' # 0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# johab.py: Python Unicode Codec for JOHAB
|
||||
#
|
||||
# Written by Hye-Shik Chang <perky@FreeBSD.org>
|
||||
#
|
||||
|
||||
import _codecs_kr, codecs
|
||||
import _multibytecodec as mbc
|
||||
|
||||
codec = _codecs_kr.getcodec('johab')
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
encode = codec.encode
|
||||
decode = codec.decode
|
||||
|
||||
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
|
||||
codecs.IncrementalEncoder):
|
||||
codec = codec
|
||||
|
||||
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
|
||||
codecs.IncrementalDecoder):
|
||||
codec = codec
|
||||
|
||||
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
|
||||
codec = codec
|
||||
|
||||
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
|
||||
codec = codec
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='johab',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
@@ -0,0 +1,307 @@
|
||||
""" Python Character Mapping Codec koi8_r generated from 'MAPPINGS/VENDORS/MISC/KOI8-R.TXT' with gencodec.py.
|
||||
|
||||
"""#"
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='koi8-r',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u2500' # 0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
|
||||
'\u2502' # 0x81 -> BOX DRAWINGS LIGHT VERTICAL
|
||||
'\u250c' # 0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
'\u2510' # 0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
'\u2514' # 0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
'\u2518' # 0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
|
||||
'\u251c' # 0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
'\u2524' # 0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
'\u252c' # 0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
'\u2534' # 0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
'\u253c' # 0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
'\u2580' # 0x8B -> UPPER HALF BLOCK
|
||||
'\u2584' # 0x8C -> LOWER HALF BLOCK
|
||||
'\u2588' # 0x8D -> FULL BLOCK
|
||||
'\u258c' # 0x8E -> LEFT HALF BLOCK
|
||||
'\u2590' # 0x8F -> RIGHT HALF BLOCK
|
||||
'\u2591' # 0x90 -> LIGHT SHADE
|
||||
'\u2592' # 0x91 -> MEDIUM SHADE
|
||||
'\u2593' # 0x92 -> DARK SHADE
|
||||
'\u2320' # 0x93 -> TOP HALF INTEGRAL
|
||||
'\u25a0' # 0x94 -> BLACK SQUARE
|
||||
'\u2219' # 0x95 -> BULLET OPERATOR
|
||||
'\u221a' # 0x96 -> SQUARE ROOT
|
||||
'\u2248' # 0x97 -> ALMOST EQUAL TO
|
||||
'\u2264' # 0x98 -> LESS-THAN OR EQUAL TO
|
||||
'\u2265' # 0x99 -> GREATER-THAN OR EQUAL TO
|
||||
'\xa0' # 0x9A -> NO-BREAK SPACE
|
||||
'\u2321' # 0x9B -> BOTTOM HALF INTEGRAL
|
||||
'\xb0' # 0x9C -> DEGREE SIGN
|
||||
'\xb2' # 0x9D -> SUPERSCRIPT TWO
|
||||
'\xb7' # 0x9E -> MIDDLE DOT
|
||||
'\xf7' # 0x9F -> DIVISION SIGN
|
||||
'\u2550' # 0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
'\u2551' # 0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
|
||||
'\u2552' # 0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
'\u0451' # 0xA3 -> CYRILLIC SMALL LETTER IO
|
||||
'\u2553' # 0xA4 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
'\u2554' # 0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
'\u2555' # 0xA6 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
'\u2556' # 0xA7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
'\u2557' # 0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
'\u2558' # 0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
'\u2559' # 0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
'\u255a' # 0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
'\u255b' # 0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
'\u255c' # 0xAD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
'\u255d' # 0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
'\u255e' # 0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
'\u255f' # 0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
'\u2560' # 0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
'\u2561' # 0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
'\u0401' # 0xB3 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\u2562' # 0xB4 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
'\u2563' # 0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
'\u2564' # 0xB6 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2565' # 0xB7 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2566' # 0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
'\u2567' # 0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u2568' # 0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u2569' # 0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
'\u256a' # 0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
'\u256b' # 0xBD -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
'\u256c' # 0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
'\xa9' # 0xBF -> COPYRIGHT SIGN
|
||||
'\u044e' # 0xC0 -> CYRILLIC SMALL LETTER YU
|
||||
'\u0430' # 0xC1 -> CYRILLIC SMALL LETTER A
|
||||
'\u0431' # 0xC2 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0446' # 0xC3 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0434' # 0xC4 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0435' # 0xC5 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0444' # 0xC6 -> CYRILLIC SMALL LETTER EF
|
||||
'\u0433' # 0xC7 -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0445' # 0xC8 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0438' # 0xC9 -> CYRILLIC SMALL LETTER I
|
||||
'\u0439' # 0xCA -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u043a' # 0xCB -> CYRILLIC SMALL LETTER KA
|
||||
'\u043b' # 0xCC -> CYRILLIC SMALL LETTER EL
|
||||
'\u043c' # 0xCD -> CYRILLIC SMALL LETTER EM
|
||||
'\u043d' # 0xCE -> CYRILLIC SMALL LETTER EN
|
||||
'\u043e' # 0xCF -> CYRILLIC SMALL LETTER O
|
||||
'\u043f' # 0xD0 -> CYRILLIC SMALL LETTER PE
|
||||
'\u044f' # 0xD1 -> CYRILLIC SMALL LETTER YA
|
||||
'\u0440' # 0xD2 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0441' # 0xD3 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0442' # 0xD4 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0443' # 0xD5 -> CYRILLIC SMALL LETTER U
|
||||
'\u0436' # 0xD6 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0432' # 0xD7 -> CYRILLIC SMALL LETTER VE
|
||||
'\u044c' # 0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u044b' # 0xD9 -> CYRILLIC SMALL LETTER YERU
|
||||
'\u0437' # 0xDA -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0448' # 0xDB -> CYRILLIC SMALL LETTER SHA
|
||||
'\u044d' # 0xDC -> CYRILLIC SMALL LETTER E
|
||||
'\u0449' # 0xDD -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u0447' # 0xDE -> CYRILLIC SMALL LETTER CHE
|
||||
'\u044a' # 0xDF -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u042e' # 0xE0 -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u0410' # 0xE1 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0411' # 0xE2 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0426' # 0xE3 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0414' # 0xE4 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0415' # 0xE5 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0424' # 0xE6 -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0413' # 0xE7 -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\u0425' # 0xE8 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0418' # 0xE9 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u0419' # 0xEA -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u041a' # 0xEB -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u041b' # 0xEC -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u041c' # 0xED -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u041d' # 0xEE -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u041e' # 0xEF -> CYRILLIC CAPITAL LETTER O
|
||||
'\u041f' # 0xF0 -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u042f' # 0xF1 -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0420' # 0xF2 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0421' # 0xF3 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0422' # 0xF4 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0423' # 0xF5 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0416' # 0xF6 -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0412' # 0xF7 -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u042c' # 0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u042b' # 0xF9 -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u0417' # 0xFA -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0428' # 0xFB -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u042d' # 0xFC -> CYRILLIC CAPITAL LETTER E
|
||||
'\u0429' # 0xFD -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u0427' # 0xFE -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\u042a' # 0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
@@ -0,0 +1,308 @@
|
||||
""" Python Character Mapping Codec koi8_t
|
||||
"""
|
||||
# http://ru.wikipedia.org/wiki/КОИ-8
|
||||
# http://www.opensource.apple.com/source/libiconv/libiconv-4/libiconv/tests/KOI8-T.TXT
|
||||
|
||||
import codecs
|
||||
|
||||
### Codec APIs
|
||||
|
||||
class Codec(codecs.Codec):
|
||||
|
||||
def encode(self,input,errors='strict'):
|
||||
return codecs.charmap_encode(input,errors,encoding_table)
|
||||
|
||||
def decode(self,input,errors='strict'):
|
||||
return codecs.charmap_decode(input,errors,decoding_table)
|
||||
|
||||
class IncrementalEncoder(codecs.IncrementalEncoder):
|
||||
def encode(self, input, final=False):
|
||||
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
|
||||
|
||||
class IncrementalDecoder(codecs.IncrementalDecoder):
|
||||
def decode(self, input, final=False):
|
||||
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
|
||||
|
||||
class StreamWriter(Codec,codecs.StreamWriter):
|
||||
pass
|
||||
|
||||
class StreamReader(Codec,codecs.StreamReader):
|
||||
pass
|
||||
|
||||
### encodings module API
|
||||
|
||||
def getregentry():
|
||||
return codecs.CodecInfo(
|
||||
name='koi8-t',
|
||||
encode=Codec().encode,
|
||||
decode=Codec().decode,
|
||||
incrementalencoder=IncrementalEncoder,
|
||||
incrementaldecoder=IncrementalDecoder,
|
||||
streamreader=StreamReader,
|
||||
streamwriter=StreamWriter,
|
||||
)
|
||||
|
||||
|
||||
### Decoding Table
|
||||
|
||||
decoding_table = (
|
||||
'\x00' # 0x00 -> NULL
|
||||
'\x01' # 0x01 -> START OF HEADING
|
||||
'\x02' # 0x02 -> START OF TEXT
|
||||
'\x03' # 0x03 -> END OF TEXT
|
||||
'\x04' # 0x04 -> END OF TRANSMISSION
|
||||
'\x05' # 0x05 -> ENQUIRY
|
||||
'\x06' # 0x06 -> ACKNOWLEDGE
|
||||
'\x07' # 0x07 -> BELL
|
||||
'\x08' # 0x08 -> BACKSPACE
|
||||
'\t' # 0x09 -> HORIZONTAL TABULATION
|
||||
'\n' # 0x0A -> LINE FEED
|
||||
'\x0b' # 0x0B -> VERTICAL TABULATION
|
||||
'\x0c' # 0x0C -> FORM FEED
|
||||
'\r' # 0x0D -> CARRIAGE RETURN
|
||||
'\x0e' # 0x0E -> SHIFT OUT
|
||||
'\x0f' # 0x0F -> SHIFT IN
|
||||
'\x10' # 0x10 -> DATA LINK ESCAPE
|
||||
'\x11' # 0x11 -> DEVICE CONTROL ONE
|
||||
'\x12' # 0x12 -> DEVICE CONTROL TWO
|
||||
'\x13' # 0x13 -> DEVICE CONTROL THREE
|
||||
'\x14' # 0x14 -> DEVICE CONTROL FOUR
|
||||
'\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
|
||||
'\x16' # 0x16 -> SYNCHRONOUS IDLE
|
||||
'\x17' # 0x17 -> END OF TRANSMISSION BLOCK
|
||||
'\x18' # 0x18 -> CANCEL
|
||||
'\x19' # 0x19 -> END OF MEDIUM
|
||||
'\x1a' # 0x1A -> SUBSTITUTE
|
||||
'\x1b' # 0x1B -> ESCAPE
|
||||
'\x1c' # 0x1C -> FILE SEPARATOR
|
||||
'\x1d' # 0x1D -> GROUP SEPARATOR
|
||||
'\x1e' # 0x1E -> RECORD SEPARATOR
|
||||
'\x1f' # 0x1F -> UNIT SEPARATOR
|
||||
' ' # 0x20 -> SPACE
|
||||
'!' # 0x21 -> EXCLAMATION MARK
|
||||
'"' # 0x22 -> QUOTATION MARK
|
||||
'#' # 0x23 -> NUMBER SIGN
|
||||
'$' # 0x24 -> DOLLAR SIGN
|
||||
'%' # 0x25 -> PERCENT SIGN
|
||||
'&' # 0x26 -> AMPERSAND
|
||||
"'" # 0x27 -> APOSTROPHE
|
||||
'(' # 0x28 -> LEFT PARENTHESIS
|
||||
')' # 0x29 -> RIGHT PARENTHESIS
|
||||
'*' # 0x2A -> ASTERISK
|
||||
'+' # 0x2B -> PLUS SIGN
|
||||
',' # 0x2C -> COMMA
|
||||
'-' # 0x2D -> HYPHEN-MINUS
|
||||
'.' # 0x2E -> FULL STOP
|
||||
'/' # 0x2F -> SOLIDUS
|
||||
'0' # 0x30 -> DIGIT ZERO
|
||||
'1' # 0x31 -> DIGIT ONE
|
||||
'2' # 0x32 -> DIGIT TWO
|
||||
'3' # 0x33 -> DIGIT THREE
|
||||
'4' # 0x34 -> DIGIT FOUR
|
||||
'5' # 0x35 -> DIGIT FIVE
|
||||
'6' # 0x36 -> DIGIT SIX
|
||||
'7' # 0x37 -> DIGIT SEVEN
|
||||
'8' # 0x38 -> DIGIT EIGHT
|
||||
'9' # 0x39 -> DIGIT NINE
|
||||
':' # 0x3A -> COLON
|
||||
';' # 0x3B -> SEMICOLON
|
||||
'<' # 0x3C -> LESS-THAN SIGN
|
||||
'=' # 0x3D -> EQUALS SIGN
|
||||
'>' # 0x3E -> GREATER-THAN SIGN
|
||||
'?' # 0x3F -> QUESTION MARK
|
||||
'@' # 0x40 -> COMMERCIAL AT
|
||||
'A' # 0x41 -> LATIN CAPITAL LETTER A
|
||||
'B' # 0x42 -> LATIN CAPITAL LETTER B
|
||||
'C' # 0x43 -> LATIN CAPITAL LETTER C
|
||||
'D' # 0x44 -> LATIN CAPITAL LETTER D
|
||||
'E' # 0x45 -> LATIN CAPITAL LETTER E
|
||||
'F' # 0x46 -> LATIN CAPITAL LETTER F
|
||||
'G' # 0x47 -> LATIN CAPITAL LETTER G
|
||||
'H' # 0x48 -> LATIN CAPITAL LETTER H
|
||||
'I' # 0x49 -> LATIN CAPITAL LETTER I
|
||||
'J' # 0x4A -> LATIN CAPITAL LETTER J
|
||||
'K' # 0x4B -> LATIN CAPITAL LETTER K
|
||||
'L' # 0x4C -> LATIN CAPITAL LETTER L
|
||||
'M' # 0x4D -> LATIN CAPITAL LETTER M
|
||||
'N' # 0x4E -> LATIN CAPITAL LETTER N
|
||||
'O' # 0x4F -> LATIN CAPITAL LETTER O
|
||||
'P' # 0x50 -> LATIN CAPITAL LETTER P
|
||||
'Q' # 0x51 -> LATIN CAPITAL LETTER Q
|
||||
'R' # 0x52 -> LATIN CAPITAL LETTER R
|
||||
'S' # 0x53 -> LATIN CAPITAL LETTER S
|
||||
'T' # 0x54 -> LATIN CAPITAL LETTER T
|
||||
'U' # 0x55 -> LATIN CAPITAL LETTER U
|
||||
'V' # 0x56 -> LATIN CAPITAL LETTER V
|
||||
'W' # 0x57 -> LATIN CAPITAL LETTER W
|
||||
'X' # 0x58 -> LATIN CAPITAL LETTER X
|
||||
'Y' # 0x59 -> LATIN CAPITAL LETTER Y
|
||||
'Z' # 0x5A -> LATIN CAPITAL LETTER Z
|
||||
'[' # 0x5B -> LEFT SQUARE BRACKET
|
||||
'\\' # 0x5C -> REVERSE SOLIDUS
|
||||
']' # 0x5D -> RIGHT SQUARE BRACKET
|
||||
'^' # 0x5E -> CIRCUMFLEX ACCENT
|
||||
'_' # 0x5F -> LOW LINE
|
||||
'`' # 0x60 -> GRAVE ACCENT
|
||||
'a' # 0x61 -> LATIN SMALL LETTER A
|
||||
'b' # 0x62 -> LATIN SMALL LETTER B
|
||||
'c' # 0x63 -> LATIN SMALL LETTER C
|
||||
'd' # 0x64 -> LATIN SMALL LETTER D
|
||||
'e' # 0x65 -> LATIN SMALL LETTER E
|
||||
'f' # 0x66 -> LATIN SMALL LETTER F
|
||||
'g' # 0x67 -> LATIN SMALL LETTER G
|
||||
'h' # 0x68 -> LATIN SMALL LETTER H
|
||||
'i' # 0x69 -> LATIN SMALL LETTER I
|
||||
'j' # 0x6A -> LATIN SMALL LETTER J
|
||||
'k' # 0x6B -> LATIN SMALL LETTER K
|
||||
'l' # 0x6C -> LATIN SMALL LETTER L
|
||||
'm' # 0x6D -> LATIN SMALL LETTER M
|
||||
'n' # 0x6E -> LATIN SMALL LETTER N
|
||||
'o' # 0x6F -> LATIN SMALL LETTER O
|
||||
'p' # 0x70 -> LATIN SMALL LETTER P
|
||||
'q' # 0x71 -> LATIN SMALL LETTER Q
|
||||
'r' # 0x72 -> LATIN SMALL LETTER R
|
||||
's' # 0x73 -> LATIN SMALL LETTER S
|
||||
't' # 0x74 -> LATIN SMALL LETTER T
|
||||
'u' # 0x75 -> LATIN SMALL LETTER U
|
||||
'v' # 0x76 -> LATIN SMALL LETTER V
|
||||
'w' # 0x77 -> LATIN SMALL LETTER W
|
||||
'x' # 0x78 -> LATIN SMALL LETTER X
|
||||
'y' # 0x79 -> LATIN SMALL LETTER Y
|
||||
'z' # 0x7A -> LATIN SMALL LETTER Z
|
||||
'{' # 0x7B -> LEFT CURLY BRACKET
|
||||
'|' # 0x7C -> VERTICAL LINE
|
||||
'}' # 0x7D -> RIGHT CURLY BRACKET
|
||||
'~' # 0x7E -> TILDE
|
||||
'\x7f' # 0x7F -> DELETE
|
||||
'\u049b' # 0x80 -> CYRILLIC SMALL LETTER KA WITH DESCENDER
|
||||
'\u0493' # 0x81 -> CYRILLIC SMALL LETTER GHE WITH STROKE
|
||||
'\u201a' # 0x82 -> SINGLE LOW-9 QUOTATION MARK
|
||||
'\u0492' # 0x83 -> CYRILLIC CAPITAL LETTER GHE WITH STROKE
|
||||
'\u201e' # 0x84 -> DOUBLE LOW-9 QUOTATION MARK
|
||||
'\u2026' # 0x85 -> HORIZONTAL ELLIPSIS
|
||||
'\u2020' # 0x86 -> DAGGER
|
||||
'\u2021' # 0x87 -> DOUBLE DAGGER
|
||||
'\ufffe' # 0x88 -> UNDEFINED
|
||||
'\u2030' # 0x89 -> PER MILLE SIGN
|
||||
'\u04b3' # 0x8A -> CYRILLIC SMALL LETTER HA WITH DESCENDER
|
||||
'\u2039' # 0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
'\u04b2' # 0x8C -> CYRILLIC CAPITAL LETTER HA WITH DESCENDER
|
||||
'\u04b7' # 0x8D -> CYRILLIC SMALL LETTER CHE WITH DESCENDER
|
||||
'\u04b6' # 0x8E -> CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
|
||||
'\ufffe' # 0x8F -> UNDEFINED
|
||||
'\u049a' # 0x90 -> CYRILLIC CAPITAL LETTER KA WITH DESCENDER
|
||||
'\u2018' # 0x91 -> LEFT SINGLE QUOTATION MARK
|
||||
'\u2019' # 0x92 -> RIGHT SINGLE QUOTATION MARK
|
||||
'\u201c' # 0x93 -> LEFT DOUBLE QUOTATION MARK
|
||||
'\u201d' # 0x94 -> RIGHT DOUBLE QUOTATION MARK
|
||||
'\u2022' # 0x95 -> BULLET
|
||||
'\u2013' # 0x96 -> EN DASH
|
||||
'\u2014' # 0x97 -> EM DASH
|
||||
'\ufffe' # 0x98 -> UNDEFINED
|
||||
'\u2122' # 0x99 -> TRADE MARK SIGN
|
||||
'\ufffe' # 0x9A -> UNDEFINED
|
||||
'\u203a' # 0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0x9C -> UNDEFINED
|
||||
'\ufffe' # 0x9D -> UNDEFINED
|
||||
'\ufffe' # 0x9E -> UNDEFINED
|
||||
'\ufffe' # 0x9F -> UNDEFINED
|
||||
'\ufffe' # 0xA0 -> UNDEFINED
|
||||
'\u04ef' # 0xA1 -> CYRILLIC SMALL LETTER U WITH MACRON
|
||||
'\u04ee' # 0xA2 -> CYRILLIC CAPITAL LETTER U WITH MACRON
|
||||
'\u0451' # 0xA3 -> CYRILLIC SMALL LETTER IO
|
||||
'\xa4' # 0xA4 -> CURRENCY SIGN
|
||||
'\u04e3' # 0xA5 -> CYRILLIC SMALL LETTER I WITH MACRON
|
||||
'\xa6' # 0xA6 -> BROKEN BAR
|
||||
'\xa7' # 0xA7 -> SECTION SIGN
|
||||
'\ufffe' # 0xA8 -> UNDEFINED
|
||||
'\ufffe' # 0xA9 -> UNDEFINED
|
||||
'\ufffe' # 0xAA -> UNDEFINED
|
||||
'\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\xac' # 0xAC -> NOT SIGN
|
||||
'\xad' # 0xAD -> SOFT HYPHEN
|
||||
'\xae' # 0xAE -> REGISTERED SIGN
|
||||
'\ufffe' # 0xAF -> UNDEFINED
|
||||
'\xb0' # 0xB0 -> DEGREE SIGN
|
||||
'\xb1' # 0xB1 -> PLUS-MINUS SIGN
|
||||
'\xb2' # 0xB2 -> SUPERSCRIPT TWO
|
||||
'\u0401' # 0xB3 -> CYRILLIC CAPITAL LETTER IO
|
||||
'\ufffe' # 0xB4 -> UNDEFINED
|
||||
'\u04e2' # 0xB5 -> CYRILLIC CAPITAL LETTER I WITH MACRON
|
||||
'\xb6' # 0xB6 -> PILCROW SIGN
|
||||
'\xb7' # 0xB7 -> MIDDLE DOT
|
||||
'\ufffe' # 0xB8 -> UNDEFINED
|
||||
'\u2116' # 0xB9 -> NUMERO SIGN
|
||||
'\ufffe' # 0xBA -> UNDEFINED
|
||||
'\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
'\ufffe' # 0xBC -> UNDEFINED
|
||||
'\ufffe' # 0xBD -> UNDEFINED
|
||||
'\ufffe' # 0xBE -> UNDEFINED
|
||||
'\xa9' # 0xBF -> COPYRIGHT SIGN
|
||||
'\u044e' # 0xC0 -> CYRILLIC SMALL LETTER YU
|
||||
'\u0430' # 0xC1 -> CYRILLIC SMALL LETTER A
|
||||
'\u0431' # 0xC2 -> CYRILLIC SMALL LETTER BE
|
||||
'\u0446' # 0xC3 -> CYRILLIC SMALL LETTER TSE
|
||||
'\u0434' # 0xC4 -> CYRILLIC SMALL LETTER DE
|
||||
'\u0435' # 0xC5 -> CYRILLIC SMALL LETTER IE
|
||||
'\u0444' # 0xC6 -> CYRILLIC SMALL LETTER EF
|
||||
'\u0433' # 0xC7 -> CYRILLIC SMALL LETTER GHE
|
||||
'\u0445' # 0xC8 -> CYRILLIC SMALL LETTER HA
|
||||
'\u0438' # 0xC9 -> CYRILLIC SMALL LETTER I
|
||||
'\u0439' # 0xCA -> CYRILLIC SMALL LETTER SHORT I
|
||||
'\u043a' # 0xCB -> CYRILLIC SMALL LETTER KA
|
||||
'\u043b' # 0xCC -> CYRILLIC SMALL LETTER EL
|
||||
'\u043c' # 0xCD -> CYRILLIC SMALL LETTER EM
|
||||
'\u043d' # 0xCE -> CYRILLIC SMALL LETTER EN
|
||||
'\u043e' # 0xCF -> CYRILLIC SMALL LETTER O
|
||||
'\u043f' # 0xD0 -> CYRILLIC SMALL LETTER PE
|
||||
'\u044f' # 0xD1 -> CYRILLIC SMALL LETTER YA
|
||||
'\u0440' # 0xD2 -> CYRILLIC SMALL LETTER ER
|
||||
'\u0441' # 0xD3 -> CYRILLIC SMALL LETTER ES
|
||||
'\u0442' # 0xD4 -> CYRILLIC SMALL LETTER TE
|
||||
'\u0443' # 0xD5 -> CYRILLIC SMALL LETTER U
|
||||
'\u0436' # 0xD6 -> CYRILLIC SMALL LETTER ZHE
|
||||
'\u0432' # 0xD7 -> CYRILLIC SMALL LETTER VE
|
||||
'\u044c' # 0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
|
||||
'\u044b' # 0xD9 -> CYRILLIC SMALL LETTER YERU
|
||||
'\u0437' # 0xDA -> CYRILLIC SMALL LETTER ZE
|
||||
'\u0448' # 0xDB -> CYRILLIC SMALL LETTER SHA
|
||||
'\u044d' # 0xDC -> CYRILLIC SMALL LETTER E
|
||||
'\u0449' # 0xDD -> CYRILLIC SMALL LETTER SHCHA
|
||||
'\u0447' # 0xDE -> CYRILLIC SMALL LETTER CHE
|
||||
'\u044a' # 0xDF -> CYRILLIC SMALL LETTER HARD SIGN
|
||||
'\u042e' # 0xE0 -> CYRILLIC CAPITAL LETTER YU
|
||||
'\u0410' # 0xE1 -> CYRILLIC CAPITAL LETTER A
|
||||
'\u0411' # 0xE2 -> CYRILLIC CAPITAL LETTER BE
|
||||
'\u0426' # 0xE3 -> CYRILLIC CAPITAL LETTER TSE
|
||||
'\u0414' # 0xE4 -> CYRILLIC CAPITAL LETTER DE
|
||||
'\u0415' # 0xE5 -> CYRILLIC CAPITAL LETTER IE
|
||||
'\u0424' # 0xE6 -> CYRILLIC CAPITAL LETTER EF
|
||||
'\u0413' # 0xE7 -> CYRILLIC CAPITAL LETTER GHE
|
||||
'\u0425' # 0xE8 -> CYRILLIC CAPITAL LETTER HA
|
||||
'\u0418' # 0xE9 -> CYRILLIC CAPITAL LETTER I
|
||||
'\u0419' # 0xEA -> CYRILLIC CAPITAL LETTER SHORT I
|
||||
'\u041a' # 0xEB -> CYRILLIC CAPITAL LETTER KA
|
||||
'\u041b' # 0xEC -> CYRILLIC CAPITAL LETTER EL
|
||||
'\u041c' # 0xED -> CYRILLIC CAPITAL LETTER EM
|
||||
'\u041d' # 0xEE -> CYRILLIC CAPITAL LETTER EN
|
||||
'\u041e' # 0xEF -> CYRILLIC CAPITAL LETTER O
|
||||
'\u041f' # 0xF0 -> CYRILLIC CAPITAL LETTER PE
|
||||
'\u042f' # 0xF1 -> CYRILLIC CAPITAL LETTER YA
|
||||
'\u0420' # 0xF2 -> CYRILLIC CAPITAL LETTER ER
|
||||
'\u0421' # 0xF3 -> CYRILLIC CAPITAL LETTER ES
|
||||
'\u0422' # 0xF4 -> CYRILLIC CAPITAL LETTER TE
|
||||
'\u0423' # 0xF5 -> CYRILLIC CAPITAL LETTER U
|
||||
'\u0416' # 0xF6 -> CYRILLIC CAPITAL LETTER ZHE
|
||||
'\u0412' # 0xF7 -> CYRILLIC CAPITAL LETTER VE
|
||||
'\u042c' # 0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
'\u042b' # 0xF9 -> CYRILLIC CAPITAL LETTER YERU
|
||||
'\u0417' # 0xFA -> CYRILLIC CAPITAL LETTER ZE
|
||||
'\u0428' # 0xFB -> CYRILLIC CAPITAL LETTER SHA
|
||||
'\u042d' # 0xFC -> CYRILLIC CAPITAL LETTER E
|
||||
'\u0429' # 0xFD -> CYRILLIC CAPITAL LETTER SHCHA
|
||||
'\u0427' # 0xFE -> CYRILLIC CAPITAL LETTER CHE
|
||||
'\u042a' # 0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
)
|
||||
|
||||
### Encoding table
|
||||
encoding_table=codecs.charmap_build(decoding_table)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user