def PyUnicode_EncodeCharmap(p, mapping='latin-1', errors='strict'): ## /* the following variable is used for caching string comparisons ## * -1=not initialized, 0=unknown, 1=strict, 2=replace, ## * 3=ignore, 4=xmlcharrefreplace */ # /* Default to Latin-1 */ if mapping == None: import _codecs return _codecs.latin_1_encode(p, errors)[0] size = len(p) if (size == 0): return '' inpos = 0 res = [] while (inpos<size): #/* try to encode it */ try: x = charmapencode_output(ord(p[inpos]), mapping) res += x except KeyError: x = unicode_call_errorhandler(errors, "charmap", "character maps to <undefined>", p, inpos, inpos+1, False) try: res += [charmapencode_output(ord(y), mapping) for y in x[0]] except KeyError: raise UnicodeEncodeError("charmap", p, inpos, inpos+1, "character maps to <undefined>") inpos += 1 return res
def test_latin_1_encode(): ''' ''' #sanity new_str, size = codecs.latin_1_encode("abc") AreEqual(new_str, 'abc') AreEqual(size, 3) # so many ways to express latin 1... for x in ['iso-8859-1', 'iso8859-1', '8859', 'cp819', 'latin', 'latin1', 'L1']: AreEqual('abc'.encode(x), 'abc')