描述

encode()
方法以钦赐的编码格式编码字符串。errors参数可以钦点不一致的错误处理方案。



编码方法encoding()

语法

encode()方日语法:

str.encode(encoding='UTF-8',errors='strict')
1.描述

encode()
方法以钦命的编码格式编码字符串。errors参数可以钦点分裂的错误处理方案。


1.描述

decode() 方法以钦赐的编码格式解码 bytes 对象。暗中认可编码为 ‘utf-8’。


描述

  encode()
方法以钦定的编码格式编码字符串,暗中认可编码为
‘utf-8’。将字符串由string类型变成bytes类型。

金沙注册送58 ,  对应的解码方法:bytes
decode() 
方法。

参数

  • encoding — 要运用的编码,如: UTF-8。
  • errors — 设置不相同错误的处理方案。私下认可为
    ‘strict’,意为编码错误引起八个UnicodeError。 别的或许得值有 ‘ignore’,
    ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过
    codecs.register_error() 注册的其余值。
2.语法
str.encode(encoding='UTF-8',errors='strict')

2.语法
bytes.decode(encoding="utf-8", errors="strict")

语法

str.encode([encoding``=``'utf-8'``][,errors``=``'strict'``])

  • str是代表需求编码的字符串,并且是个string类型。
  • encoding
    — 可选参数,要选取的编码方案,暗中认可编码为 ‘utf-8’。
  • 与错误处理UnicodeDecodeError。errors —
    可选参数,设置差别错误的处理方案。暗中认可为
    ‘strict’,意为编码错误引起1个UnicodeError。 其余或许得值有 ‘ignore’,
    ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及由此codecs.register_error() 注册的其他值。

返回值

该方法重返编码后的字符串,它是八个 bytes 对象。

3.参数

encoding — 要利用的编码,如: UTF-8。
errors — 设置分歧错误的处理方案。暗许为
‘strict’,意为编码错误引起贰个UnicodeError。 别的只怕得值有 ‘ignore’,
‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及经过
codecs.register_error() 注册的其余值。


3.参数

encoding — 要使用的编码,如”UTF-8″。
errors — 设置差别错误的处理方案。暗许为
‘strict’,意为编码错误引起3个UnicodeError。 别的可能得值有 ‘ignore’,
‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过
codecs.register_error() 注册的别的值。


返回值

  该办法重回编码后的字符串,它是多少个bytes 对象,那几个字节对象是用于下边包车型客车解码用的。

实例

以下实例浮现了encode()方法的实例:

#!/usr/bin/python3

str = "菜包python";
str_utf8 = str.encode("UTF-8")
str_gbk = str.encode("GBK")

print(str)

print("UTF-8 编码:", str_utf8)
print("GBK 编码:", str_gbk)

print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))
print("GBK 解码:", str_gbk.decode('GBK','strict'))

上述实例输出结果如下:

菜包python
UTF-8 编码: b'\xe8\x8f\x9c\xe5\x8c\x85python'
GBK 编码: b'\xb2\xcb\xb0\xfcpython'
UTF-8 解码: 菜包python
GBK 解码: 菜包python

 

4.返回值

该措施重回编码后的字符串,它是2个 bytes 对象。


4.返回值

该方法再次来到解码后的字符串。


合法文书档案解释:

str.``encode(encoding=”utf-8″errors=”strict”)

  Return an encoded version of the string as a bytes object.
Default encoding is 'utf-8'errors may be given to set a different
error handling scheme. The default for errors is 'strict', meaning
that encoding errors   raise
UnicodeError.
Other possible values
are 'ignore''replace''xmlcharrefreplace''backslashreplace' and
any other name registered
via codecs.register_error(),
see section Error
Handlers.
For a list   of possible encodings, see section Standard
Encodings.

  Changed in
version 3.1: Support for keyword arguments added.


解码方法decode()

  decode()
方法以 encoding 钦命的编码格式来解码字符串。暗中认可编码规则是encoding=‘utf-8’

5.实例
str = "菜鸟教程";
str_utf8 = str.encode("UTF-8")
str_gbk = str.encode("GBK")

print(str)

print("UTF-8 编码:", str_utf8)
print("GBK 编码:", str_gbk)

print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))
print("GBK 解码:", str_gbk.decode('GBK','strict'))

结果

菜鸟教程
UTF-8 编码: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b'
GBK 编码: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc'
UTF-8 解码: 菜鸟教程
GBK 解码: 菜鸟教程
5.实例
str = "菜鸟教程";
str_utf8 = str.encode("UTF-8")
str_gbk = str.encode("GBK")

print(str)

print("UTF-8 编码:", str_utf8)
print("GBK 编码:", str_gbk)

print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))
print("GBK 解码:", str_gbk.decode('GBK','strict'))

结果

菜鸟教程
UTF-8 编码: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b'
GBK 编码: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc'
UTF-8 解码: 菜鸟教程
GBK 解码: 菜鸟教程

语法

  bytes.decode(encoding=’UTF-8′,errors=’strict’)

参数

  bytes是由编码方法encoding()编码转换之后获得的字符串的字节表示值。

  encoding —
解码时要选拔的编码方案,如”UTF-8″。

  errors —
设置不一致错误的拍卖方案。暗许为
‘strict’,意为编码错误引起三个UnicodeError。 其余可能得值有 ‘ignore’,
‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及因此codecs.register_error() 注册的别的值。

返回值:

  该格局重返解码后的字符串。

官方文档解释

bytes.``decode(encoding=”utf-8″errors=”strict”)bytearray.``decode(encoding=”utf-8″errors=”strict”)

  Return a string decoded from the given bytes. Default encoding
is 'utf-8'errors may be given to set a different error handling
scheme. The default for errors is 'strict', meaning that encoding
errors raise           
UnicodeError.
Other possible values are 'ignore''replace' and any other name
registered
via codecs.register_error(),
see section Error
Handlers.
For a list of possible encodings, see section Standard      
Encodings.

  Note

  Passing the encoding argument
to str allows
decoding any bytes-like
object directly,
without needing to make a temporary bytes or bytearray object.

  Changed in
version 3.1: Added support for keyword arguments.

实际编码解码的涉嫌正是之类:

 

str->bytes:encode编码

bytes->str:decode解码  

 

字符串通过编码成为字节码,字节码通过解码成为字符串。可以这样解释,编码就是将字符串转换成字节码,涉及到字符串的内部表示。解码就是将字节码转换为字符串,将比特位显示成字符。

 

 例如:

 1 >>> text = '我是文本'
 2 >>> text
 3 '我是文本'
 4 >>> print(text)
 5 我是文本
 6 >>> bytesText = text.encode()
 7 >>> bytesText
 8 b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
 9 >>> print(bytesText)
10 b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
11 >>> type(text)
12 <class 'str'>
13 >>> type(bytesText)
14 <class 'bytes'>
15 >>> textDecode = bytesText.decode()
16 >>> textDecode
17 '我是文本'
18 >>> print(textDecode)
19 我是文本

例2

 1 >>>text='我好吗'
 2 >>>byteText=text.encode('gbk')
 3 >>>byteText
 4  b'\xce\xd2\xba\xc3\xc2\xf0'
 5 >>>strText=byteText.decode('gbk')
 6 >>>strText
 7  '我好吗'
 8 >>>byteText.decode('utf-8')
 9 Traceback (most recent call last):
10   File "G:\softs\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
11     exec(code_obj, self.user_global_ns, self.user_ns)
12   File "<ipython-input-11-f0ef1443f388>", line 1, in <module>
13     byteText.decode('utf-8')
14 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte

 

地点的第9行出现了错误,是由于文本text=’作者可以吗’,是依照‘gbk’实行编码的,而在解码时是遵从‘utf-8’的编码规则举行的解码,所以会招致解码战败,即‘utf-8’无法解码‘gbk’编码规则的字节。用相对应的解码编码规则来对字符进行处理。上边给出了几条处理那种漏洞非常多的章程供参考。

并发如下错误时:

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xab in position 11126: illegal multibyte sequence

选择python的时候平常会遭逢文件的编码与解码难点,在这之中很广阔的一种解码错误如标题所示,下边介绍该错误的缓解措施,将‘gbk’换来‘utf-8’也适用。 
(1)、首先在开拓文本的时候,设置其编码格式,如:open(‘1.txt’,encoding=’gbk’); 
(2)、若(1)不能够解决,或者是文本中冒出的一部分特殊符号超出了gbk的编码范围,能够挑选编码范围更广的‘gb18030’,如:open(‘1.txt’,encoding=’gb18030’); 
(3)、若(2)仍不能够一举成功,表达文中出现了连‘gb18030’也无从编码的字符,能够动用‘ignore’属性进行忽略,如:open(‘1.txt’,encoding=’gb18030’,errors=‘ignore’); 

(4)、还有一种普遍化解方法为open(‘1.txt’).read().decode(‘gb18030’,’ignore’)

 

对此机械学习实战第陆章朴素贝叶斯一张代码达成产出的解码错误就用了上边的法门(4)解决了

 

 1 def spamTest():
 2     docList=[];classList=[];fillText=[]
 3     for i in range(1,26):
 4         wordList=textParse(open('D:/machinelearning data/machinelearninginaction/Ch04/email/spam/%d.txt' % i,encoding='utf-8',errors='ignore').read())
 5        # print('%d word:'%i)
 6         docList.append(wordList)
 7         fillText.extend(wordList)
 8         classList.append(1)
 9         wordList = textParse(open('D:/machinelearning data/machinelearninginaction/Ch04/email/ham/%d.txt' % i,encoding='utf-8',errors='ignore').read())
10         docList.append(wordList)
11         fillText.extend(wordList)
12         classList.append(0)

初稿上边代码出现谬误是因为在解析ham文件夹文件23.txt时出现解码错误,才招致整个文件运营不了,大家将文件打开的编码格局统一换来‘utf-8’,并且忽略掉出现的荒谬便得以健康运营了

参考资料:

 
1,

 
2,

 

 

相关文章

网站地图xml地图