0
當使用SCPI命令查詢我的設備(示波器)以獲取屏幕截圖時,我在Python 2.7中收到此錯誤。嘗試獲取示波器顯示時的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