UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4'

后端 未结 1 1367
不知归路
不知归路 2020-12-06 05:05

I permanently get the following error:

UnicodeEncodeError: \'ascii\' codec can\'t encode character u\'\\xe4\' in position 27: ordinal not in range(128)


        
相关标签:
1条回答
  • 2020-12-06 05:31

    You have to discover in which encoding is this character at the source.

    I guess this is ISO-8859-1 (european languages), in which case it's "ä", but you should check. It could also be cyrillic or greek.

    See http://en.wikipedia.org/wiki/ISO/IEC_8859-1 for a complete list of characters in this encoding.

    Using this information, you can ask Python to convert it :

    In Python 2.7

    >>> s = '\xe4'
    >>> t = s.decode('iso-8859-1')
    >>> print t
    ä
    >>> for c in t:
    ...   print ord(c)
    ...
    228
    >>> u = t.encode('utf-8')
    >>> print u
    ä
    >>> for c in bytes(u):
    ...   print ord(c)
    ...
    195
    164
    

    String t is internally encoded in ISO-8859-1 in Python. String u is internally encoded in UTF-8, and that character takes 2 bytes in UTF-8. Notice also that the print instruction "knows" how to display these different encodings.

    0 讨论(0)
提交回复
热议问题