资讯详情

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc5 in position 13: invalid continuation ...

错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc5 in position 13: invalid continuation byte

编码错误,主要是有中的编码

例如:

b'\r\nWindows IP \xc5\xe4\xd6\xc3\r\n\r\n\r\n\xd2\xd4\xcc\xab\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 \xd2\xd4\xcc\xab\xcd\xf8:\r\n\r\n   \xc3\xbd\xcc\xe5\xd7\xb4\xcc\xac  . . . . . . . . . . . . : \xc3\xbd\xcc\xe5\xd2\xd1\xb6\xcf\xbf\xaa\xc1\xac\xbd\xd3\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n\r\n\xd2\xd4\xcc\xab\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 \xd2\xd4\xcc\xab\xcd\xf8 2:\r\n\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n   \xb1\xbe\xb5\xd8\xc1\xb4\xbd\xd3 IPv6 \xb5\xd8\xd6\xb7. . . . . . . . : fe80::8d3c:21a5:cd26:3fb5\r\n   IPv4 \xb5\xd8\xd6\xb7 . . . . . . . . . . . . : 192.168.56.1\r\n   \xd7\xd3\xcd\xf8\xd1\xda\xc2\xeb  . . . . . . . . . . . . : 255.255.255.0\r\n   \xc4\xac\xc8\xcf\xcd\xf8\xb9\xd8. . . . . . . . . . . . . : \r\n\r\n\xce\xde\xcf\xdf\xbe\xd6\xd3\xf2\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 wlan0:\r\n\r\n   \xc3\xbd\xcc\xe5\xd7\xb4\xcc\xac  . . . . . . . . . . . . : \xc3\xbd\xcc\xe5\xd2\xd1\xb6\xcf\xbf\xaa\xc1\xac\xbd\xd3\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n\r\n\xce\xde\xcf\xdf\xbe\xd6\xd3\xf2\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3* 1:\r\n\r\n   \xc3\xbd\xcc\xe5\xd7\xb4\xcc\xac  . . . . . . . . . . . . : \xc3\xbd\xcc\xe5\xd2\xd1\xb6\xcf\xbf\xaa\xc1\xac\xbd\xd3\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n\r\n\xce\xde\xcf\xdf\xbe\xd6\xd3\xf2\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3* 4:\r\n\r\n   \xc3\xbd\xcc\xe5\xd7\xb4\xcc\xac  . . . . . . . . . . . . : \xc3\xbd\xcc\xe5\xd2\xd1\xb6\xcf\xbf\xaa\xc1\xac\xbd\xd3\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n\r\n\xd2\xd4\xcc\xab\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 eth0:\r\n\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n   IPv4 \xb5\xd8\xd6\xb7 . . . . . . . . . . . . : 192.168.1.103\r\n   \xd7\xd3\xcd\xf8\xd1\xda\xc2\xeb  . . . . . . . . . . . . : 255.255.255.0\r\n   \xc4\xac\xc8\xcf\xcd\xf8\xb9\xd8. . . . . . . . . . . . . : 192.168.1.1\r\n\r\n\xd2\xd4\xcc\xab\xcd\xf8\xca\xca\xc5\xe4\xc6\xf7 VMware Network Adapter VMnet8:\r\n\r\n   \xc1\xac\xbd\xd3\xcc\xd8\xb6\xa8\xb5\xc4 DNS \xba\xf3\xd7\xba . . . . . . . : \r\n   \xb1\xbe\xb5\xd8\xc1\xb4\xbd\xd3 IPv6 \xb5\xd8\xd6\xb7. . . . . . . . : fe80::e909:6c8a:32e0:f633%8\r\n   IPv4 \xb5\xd8\xd6\xb7 . . . . . . . . . . . . : 192.168.110.1\r\n   \xd7\xd3\xcd\xf8\xd1\xda\xc2\xeb  . . . . . . . . . . . . : 255.255.255.0\r\n   \xc4\xac\xc8\xcf\xcd\xf8\xb9\xd8. . . . . . . . . . . . . : \r\n' 

采用utf-8解码会报错,可以用GBK或者是“unicode_escape”进行解码

     reserve = conn.recv(10000).decode() #linux     # reserve = conn.recv(10000).decode("unicode_escape") #windows 中文     # reserve = conn.recv(10000).decode("GBK")  # windows 中文

在 python 在源代码文件中,,声明如下:

因为python 只检查 #、coding 还有编码字符串,所以你可能会看到下面的声明,这是一些人为了美丽和其他原因写的:

  1. #-*-coding:UTF-8-*-

Python内部字符串通常是 Unicode编码。所以做一些编码转换通常是必要的Unicode转换为中间编码,即首先解码其他编码的字符串(decode)成 Unicode,再从 Unicode编码(encode)另一种编码。

  • 将其他编码字符串转换为Unicode编码,egname.decode(“GB2312)GB2312编码的字符串name转换成Unicode编码
  • 的作用是将Unicode编码转换成其他编码的字符串,egname.encode(”GB2312)表示将GB2312编码的字符串name转换成GB2312编码

因此,编码转换必须首先知道 name 是那种编码,然后 decode 成 Unicode 编码,最后载 encode 需要编码的编码。当然,如果 name 已经就是 Unicode 编码,不需要进行 decode 解码转换,直接使用 encode 您可以编码成您需要的编码。 具体来说,如果在UTF-在8文件中,字符串是 UTF-8编码。它的编码取决于当前的文本编码。GB2312文本的编码是GB2312。,先用decode将文本的原始编码转换为Unicode,再用ncode将编码转换成需要转换成的编码。

eg: 由于内置函数 open() 打开文件时,read() 读取的是 str,读取后需要使用正确的编码格式进行 decode()。write() 写入时,如果参数是 Unicode,则需要使用你希望写入的编码进行 encode(),如果是其他编码格式的 str,则需要先用该 str 的编码进行 decode(),转成 Unicode 后再使用写入的编码进行 encode()。如果直接将 Unicode 作为参数传入 write() ,python 将先使用源代码文件声明的字符编码进行编码然后写入。

 
    
  1. # coding: UTF-8

  2. fp1 = open('test.txt', 'r')

  3. info1 = fp1.read()

  4. # 已知是 GBK 编码,解码成 Unicode

  5. tmp = info1.decode('GBK')

  6. fp2 = open('test.txt', 'w')

  7. # 编码成 UTF-8 编码的 str

  8. info2 = tmp.encode('UTF-8')

  9. fp2.write(info2)

  10. fp2.close()

判断是 s 字符串否为Unicode,如果是返回True,不是返回False :

    isinstance(s, unicode) 

下面代码可以获取系统默认编码:

 
    
  1. #!/usr/bin/env python

  2. #coding=utf-8

  3. import sys

  4. print sys.getdefaultencoding()

如何来改变python的默认编码呢?如下有两种方式:

方式一:在python代码中进行改变,代码如下:

 
    
  1. import sys

  2. reload(sys)

  3. sys.setdefaultencoding('utf-8')

方式二:python安装目录下的lib\site-packages文件夹下新建一个sitecustomize.py,文件中的代码为:

 
    
  1. import sys

  2. sys.setdefaultencoding('utf-8')

参考网址:python 导入数据错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start_计算法的博客-CSDN博客

标签: 低压并联电容器串接xd1电抗器连接器xcd45t4k1p40电力电容电抗器限流电抗器xd1

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台