import unicodedata def half2full(c): n = unicodedata.name(c) if 'KATAKANA' not in n: return c else: return eval(r'u"\N{%s}"' % n.replace('HALFWIDTH ', '')) hf = '\xbc\xcd\xc1\xc2'.decode('cp932') print ''.join(map(half2full, hf)).encode('cp949')