# -*- coding: utf-8 -*- import re import _codecs_jp, codecs import _codecs_mobilejp codec = _codecs_jp.getcodec('cp932') codec_mobilejp = _codecs_mobilejp.getcodec('x_sjis_softbank') WEBCODE_RE = re.compile(r'\x1b\x24([GEFOPQ])([\x20-\x7F]+)\x0f') def _decode_webcode(matcher): high, chars = matcher.groups() high_bit = { 'G': 0xE000, 'E': 0xE100, 'F': 0xE200, 'O': 0xE300, 'P': 0xE400, 'Q': 0xE500, }[high] buf = [] for char in chars: buf.append(unichr(high_bit | ord(char) - 32).encode('cp932')) return ''.join(buf) class Codec(codecs.Codec): encode = codec_mobilejp.encode def decode(self, input, errors='strict'): webcode = WEBCODE_RE.sub(_decode_webcode, input) if webcode == input: return codec_mobilejp.decode(input, errors)
# -*- coding: utf-8 -*- import _codecs_jp, codecs import _codecs_mobilejp codec = _codecs_jp.getcodec('cp932') codec_mobilejp = _codecs_mobilejp.getcodec('x_sjis_docomo') class Codec(codecs.Codec): decode = codec.decode encode = codec_mobilejp.encode def getregentry(): return codecs.CodecInfo( name='x_sjis_docomo', encode=Codec().encode, decode=Codec().decode, )
# -*- coding: utf-8 -*- import codecs import _codecs_mobilejp codec = _codecs_mobilejp.getcodec('x_sjis_kddi_raw') class Codec(codecs.Codec): decode = codec.decode encode = codec.encode def getregentry(): return codecs.CodecInfo( name='x_sjis_kddi_raw', encode=Codec().encode, decode=Codec().decode, )
# -*- coding: utf-8 -*- import re import codecs from math import ceil import _codecs_mobilejp codec = codecs.lookup('iso2022_jp_2') mobilejp_codec = _codecs_mobilejp.getcodec('x_sjis_kddi') ISO2022JP_SPLIT_RE = re.compile(r'(\x1b\x24\x42.+?\x1b\x28\x42)') def _each_two_byte(value): for i in xrange(0, len(value), 2): part = value[i:i+2] if len(part) == 2: yield part def _jis2sjis_one(x): return (_xy(x) << 8) + _zu(x) def _xy(x): pq = x >> 8 t = int(ceil(pq / 2.0)) + 0x70 if t <= 0x9f: ans = t else: ans = t + 0x40 if 0xed == ans or ans == 0xee: