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