[155]python之分析decode、encode、unicode编码转换

decode()方法使用注册编码的编解码器的字符串进行解码。它默认为默认的字符串编码。decode函数可以将一个普通字符串转换为unicode对象。decode是将普通字符串按照参数中的编码格式进行解析,然后生成对应的unicode对象,比如在这里我们代码用的是utf-8,那么把一个字符串转换为unicode就是如下形式:s2=’哈’.decode(‘utf-8′),s2就是一个存储了’哈’字的unicode对象,其实就和unicode(‘哈’, ‘utf-8′)以及u’哈’是相同的。

例: str.decode(encoding='UTF-8',errors='strict')

  • 参数

encoding – 这是所使用的编码。
errors – 这可能是给定一个不同的错误处理机制。默认的错误是“严格”,即编码错误提出UnicodeError。其他可能的值是ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 并通过codecs.register_error().注册的任何其他名称。

encode()方法正好就是相反的功能,是将一个unicode对象转换为参数中编码格式的普通字符,encode正好就是相反的功能,是将一个unicode对象转换为参数中编码格式的普通字符。

例: str.encode(encoding='UTF-8',errors='strict')

  • 参数

encoding – 这是所使用的编码。对于所有的编码方案的列表,请访问:标准编码库。
errors – 这可能是给定一个不同的错误处理机制。默认的错误是“严格”,即编码错误提出UnicodeError。其他可能的值是ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 并通过codecs.register_error().注册的任何其他名称。

# 将unicode编码转换为汉字,前边带u的
str = u'\u4eac\u4e1c\u653e\u517b\u7684\u722c\u866b'
print(str.encode('utf-8'))
print(str.encode('utf-8'),type(str))
#运行结果
# 京东放养的爬虫
# ('\xe4\xba\xac\xe4\xb8\x9c\xe6\x94\xbe\xe5\x85\xbb\xe7\x9a\x84\xe7\x88\xac\xe8\x99\xab', )

str2='京东放养的爬虫'
uu=str2.decode('utf-8')
print(uu)
print(uu,type(uu))
#运行结果
# 京东放养的爬虫
# (u'\u4eac\u4e1c\u653e\u517b\u7684\u722c\u866b', )
print('--------------------------')


# 将unicode编码转换为汉字,前边不带u的
str = '\u4eac\u4e1c\u653e\u517b\u7684\u722c\u866b'

# 方法1 使用unicode_escape 解码
print (str.decode('unicode_escape'))
print (unicode(str, 'unicode_escape'))

# 方法2:若为json 格式,使用json.loads 解码
# print json.loads('"%s"' % str)

# 方法3:使用eval
print (eval('u"%s"' % str))
问题:  
将u'\u810f\u4e71'转换为'\u810f\u4e71'  
  
方法:  
s_unicode = u'\u810f\u4e71'  
s_str = s_unicode.encode('unicode-escape').decode('string_escape')   
print(s_str)
print(type(s_unicode),type(s_str))

#运行结果
# \u810f\u4e71
# (, )

你可能感兴趣的:(python前行者)