UnicodeDecodeError:cp932编解码器无法解码位置81的字节0x81

Dan*_*ona 3 python unicode python-3.x

我正在尝试使用2个python脚本打开'.obj'文件,但是当我尝试编译项目时,它会抛出下一条错误消息:

UnicodeDecodeError: cp932' codec can't decode byte 0x81 in position 81: illegal multibyte sequence 
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

CarString = 'volks.obj'
global car
global objects

obj = test3.object()    
car = obj.load_obj(CarString)

objects.append(glGenLists(1))
Run Code Online (Sandbox Code Playgroud)

类对象:

class object():
    def __init__(self, obj = None):
        if obj:
            self.load_obj(obj)
            #self.displaylist = self.crear_dl()

    def load_obj(self, file):
        with open(file, 'r') as obj:
            data = obj.read() 
Run Code Online (Sandbox Code Playgroud)

data = obj.read()
Run Code Online (Sandbox Code Playgroud)

部分是什么引发了我这个错误.我是Python的新手,所以我可以使用一些帮助来解决这个问题.谢谢.

Bil*_*lly 6

您的volks.obj文件可能是二进制数据,而不是文本.open命令中的默认数据类型是文本,因此您需要指定二进制文件.

尝试:

def load_obj(self, file):
    with open(file, 'rb') as obj:
        data = obj.read()
Run Code Online (Sandbox Code Playgroud)

如果文件确实包含文本而不是系统的默认编码(通常utf-8,但可能会查看您的错误消息cp932),则必须在open调用中指定文本编码.

with open(file, 'r', encoding=<encoding_type>) as obj:
Run Code Online (Sandbox Code Playgroud)