'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)

python中包含中文字符串的编码不一致问题.

通过查看编码,发现两种字符串的编码缺失不同.

例子:

In [43]: uContent = u'丽江旅游(sz002033)#股票##炒股##财经##理财##投资#推荐包赢股,盈利对半分成,不算本金,群:46251412'

In [44]: uContent
Out[44]: u'\u4e3d\u6c5f\u65c5\u6e38(sz002033)#\u80a1\u7968##\u7092\u80a1##\u8d22\u7ecf##\u7406\u8d22##\u6295\u8d44#\u63a8\u8350\u5305\u8d62\u80a1\uff0c\u76c8\u5229\u5bf9\u534a\u5206\u6210\uff0c\u4e0d\u7b97\u672c\u91d1\uff0c\u7fa4\uff1a46251412'

In [45]: content
Out[45]: '\xe4\xb8\xbd\xe6\xb1\x9f\xe6\x97\x85\xe6\xb8\xb8(sz002033)#\xe8\x82\xa1\xe7\xa5\xa8##\xe7\x82\x92\xe8\x82\xa1##\xe8\xb4\xa2\xe7\xbb\x8f##\xe7\x90\x86\xe8\xb4\xa2##\xe6\x8a\x95\xe8\xb5\x84#\xe6\x8e\xa8\xe8\x8d\x90\xe5\x8c\x85\xe8\xb5\xa2\xe8\x82\xa1\xef\xbc\x8c\xe7\x9b\x88\xe5\x88\xa9\xe5\xaf\xb9\xe5\x8d\x8a\xe5\x88\x86\xe6\x88\x90\xef\xbc\x8c\xe4\xb8\x8d\xe7\xae\x97\xe6\x9c\xac\xe9\x87\x91\xef\xbc\x8c\xe7\xbe\xa4\xef\xbc\x9a46251412'

In [46]: print content
丽江旅游(sz002033)#股票##炒股##财经##理财##投资#推荐包赢股,盈利对半分成,不算本金,群:46251412

In [47]:

解决办法:

将普通字符串转变为unicode编码格式的.

 

例子:

In [47]: newContent = unicode(content, "utf8")

In [48]: newContent
Out[48]: u'\u4e3d\u6c5f\u65c5\u6e38(sz002033)#\u80a1\u7968##\u7092\u80a1##\u8d22\u7ecf##\u7406\u8d22##\u6295\u8d44#\u63a8\u8350\u5305\u8d62\u80a1\uff0c\u76c8\u5229\u5bf9\u534a\u5206\u6210\uff0c\u4e0d\u7b97\u672c\u91d1\uff0c\u7fa4\uff1a46251412'

In [49]:

这样变解决了这个问题.

没有解决的:

     现在仍然不知道原来的普通字符串的编码格式是什么?只能通过类型查看看到二者之间简单的区别.

例子:

In [49]: type(content)
Out[49]: str

In [50]: type(uContent)
Out[50]: unicode

In [51]: type(newContent)
Out[51]: unicode

In [52]:

 

posted @ 2015-09-19 21:24  bricker  阅读(18466)  评论(0编辑  收藏  举报