Python3では、Unicode文字列がサポートされていないというエラーが発生することがあります。このエラーは、Python2.7では問題なく動作していたコードがPython3で動作しなくなる一因となります。
具体的には、TypeError: unicode strings are not supported, please encode to bytes:
というエラーメッセージが表示されます。このエラーは、文字列をバイト列にエンコードする必要があることを示しています。
以下に、このエラーを解決するためのコードスニペットを示します。
import serial, time
def serialcmdw():
os.system('clear')
serialcmd = input("serial command: ")
ser.write(serialcmd.encode())
serialcmdw()
ser = serial.Serial()
os.system('clear')
ser.port = "/dev/cu.usbmodem4321"
ser.baudrate = 9600
ser.open()
time.sleep(1)
serialcmdw()
上記のコードでは、ser.write(serialcmd.encode())
の部分で、文字列serialcmd
をバイト列にエンコードしています。これにより、Unicode文字列がサポートされていないというエラーを回避できます。
このように、Python3では文字列をバイト列にエンコードすることで、多くのUnicode関連のエラーを解決できます。Python2からPython3への移行をスムーズに行うためにも、この点を理解しておくことが重要です。.