Я получаю эту ошибку в Python 2.7 при попытке запросить мое устройство (осциллограф) с помощью команд SCPI для получения захвата экрана.UnicodeDecodeError при попытке получить отображение осциллографа
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)
Я посмотрел на других форумах, и увидели, что кодирование/декодирование является корнем ошибки, однако есть только что начал программировать в Python, и я все еще потерял о том, как кодировать или декодировать правильный тип данных (который я даже не знаю, каким он должен быть).
Тип данных - строка, но вы должны знать кодировку, которую производит источник, чтобы правильно декодировать ее в допустимую строку. Python придирчив к этому, и это может расстраивать, но это по хорошей причине - слишком много программ «мусор, мусор», потому что программист не понимал проблем с кодировкой символов. – tripleee
Python 3 имеет понятие байтовой строки, но в качестве быстрого и грязного исправления для Python 2 вы можете указать '' latin-1'' как кодировку для материала, которая должна быть просто принята дословно. – tripleee
Возможный дубликат [Преобразование байтов в строку Python] (http://stackoverflow.com/questions/606191/convert-bytes-to-a-python-string) – tripleee