UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in position 0: ordinal not in range(128)
Peng Yu
pengyu.ut at gmail.com
Tue Jan 13 22:26:15 EST 2015
Hi,
I am trying to understand what does encode() do. What are the hex
representations of "u" in main.py? Why there is UnicodeEncodeError
when main.py is piped to xxd? Why there is no such error when it is
not piped? Thanks.
~$ cat main.py
#!/usr/bin/env python
u = unichr(40960) + u'abcd' + unichr(1972)
print u
~$ cat main_encode.py
#!/usr/bin/env python
u = unichr(40960) + u'abcd' + unichr(1972)
print u.encode('utf-8')
$ ./main.py
ꀀabcd
~$ cat main.sh
#!/usr/bin/env bash
set -v
./main.py | xxd
./main_encode.py | xxd
~$ ./main.sh
./main.py | xxd
Traceback (most recent call last):
File "./main.py", line 4, in <module>
print u
UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in
position 0: ordinal not in range(128)
./main_encode.py | xxd
0000000: ea80 8061 6263 64de b40a ...abcd...
--
Regards,
Peng
More information about the Python-list
mailing list