Python 尝试获取示波器显示时出现UnicodedeCodeer错误

Python 尝试获取示波器显示时出现UnicodedeCodeer错误,python,ascii,decode,encode,Python,Ascii,Decode,Encode,当我试图使用SCPI命令查询我的设备(示波器)以获取屏幕截图时,在Python2.7中收到此错误 UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 10: ordinal not in range(128) 以下是相关代码行以及回溯: InfiniiVision.query(":DISPlay:DATA? PNG, COLor") #Traceback File "C:/Users/William/

当我试图使用SCPI命令查询我的设备(示波器)以获取屏幕截图时,在Python2.7中收到此错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 10: ordinal not in range(128)
以下是相关代码行以及回溯:

InfiniiVision.query(":DISPlay:DATA? PNG, COLor")

#Traceback

  File "C:/Users/William/Desktop/example3.py", line 334, in <module>
    InfiniiVision.query(":DISPlay:DATA? PNG, COLor")

  File "C:\ProgramData\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", line 407, in query
    return self.read()

  File "C:\ProgramData\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", line 332, in read
    message = self.read_raw().decode(enco)
infinivision.query(“:DISPlay:DATA?PNG,COLor”)
#回溯
文件“C:/Users/William/Desktop/example3.py”,第334行,在
infinivision.query(“:显示:数据?PNG,颜色”)
文件“C:\ProgramData\Anaconda2\lib\site packages\pyvisa\resources\messagebase.py”,第407行,在查询中
返回self.read()
文件“C:\ProgramData\Anaconda2\lib\site packages\pyvisa\resources\messagebase.py”,第332行,已读
message=self.read_raw().decode(enco)

我看过其他论坛,发现编码/解码是错误的根源,但是我刚刚开始用Python编程,仍然不知道如何编码或解码成正确的数据类型(我甚至不知道它应该是什么)。

我找到的修复方法是在更新的手册中找到的

它将代码从

sDisplay = do_query_string(":DISPlay:DATA? PNG, COLor")
sDisplay = get_definite_length_block_data(sDisplay)
更新

sDisplay = do_query_ieee_block(":DISPlay:DATA? PNG, COLor")

它成功地修复了编码错误。

数据类型为字符串,但您必须知道源代码生成的编码,才能正确地将其解码为有效字符串。Python对此很挑剔,这可能会让人沮丧,但这有一个很好的理由——太多的程序是“垃圾输入,垃圾输出”,因为程序员不理解字符编码的问题。Python 3有字节字符串的概念,但作为Python 2的一个快速而肮脏的修复,您可以指定
'latin-1'
作为应逐字接受的内容的编码。是否可能与
infinivision
重复?来自某个特定库的内容?我尝试将文件的第一行从#--coding:utf-8--更改为#--coding:latin-1--将编码更改为latin-1--但是我仍然收到相同的错误。