longgb246的博客

编码问题

Unicode编码问题处理

问题一

当遇见以下情况。

1
2
3
str1 = '\u82f9\u679c' # 这里没有u,当传入参数不是unicode的时候
print str1 # 结果是 : \u82f9\u679c
print u'\u82f9\u679c' # 结果是 : 苹果

解决方法:

1
2
3
4
str1 = '\u82f9\u679c'
uni_result = str1.decode("unicode-escape")
print uni_result
# 结果是 : 苹果

问题二

aa.text的结果如下

1
2
In[190]: aa.text
Out[190]: u'\xe4\xb8\x8a\xe6\xb5\xb7A\xe8\x82\xa1'

使用utf-8编码时候,出问题。打印结果不对

1
2
3
4
In[191]: aa.text.encode('utf-8')
Out[191]: '\xc3\xa4\xc2\xb8\xc2\x8a\xc3\xa6\xc2\xb5\xc2\xb7A\xc3\xa8\xc2\x82\xc2\xa1'
In[192]: print aa.text.encode('utf-8')
上海A股

可以使用

1
2
3
4
In[193]: aa.text.encode('raw_unicode_escape')
Out[193]: '\xe4\xb8\x8a\xe6\xb5\xb7A\xe8\x82\xa1'
In[194]: print aa.text.encode('raw_unicode_escape')
上海A股

或者使用

1
2
3
bb = eval(repr(aa.text).lstrip('u'))
print bb
上海A股

问题三

gb18030 - gbk - gb2312

相关阅读:
【整理】Python中字符编码的总结和对比:Python 2.x的str和unicode vs Python 3.x的bytes和str : http://www.crifan.com/summary_python_string_encoding_decoding_difference_and_comparation_python_2_x_str_unicode_vs_python_3_x_bytes_str/
【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法 : http://www.crifan.com/summary_python_2_x_common_string_encode_decode_error_reason_and_solution/
其他的讲解:
http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/6095/pdf

坚持原创技术分享,您的支持将鼓励我继续创作!