【发布时间】:2019-02-18 06:00:02
【问题描述】:
import msvcrt
while True:
try:
a=msvcrt.getch()
a=a.decode('utf-8')
print(a)
except:
print(a)
当我输入箭头键或向上翻页/向下翻页/删除等时,上面的代码会产生意想不到的结果。
The output is as follows:
[I/P=a]
a #expected result
[I/P=UP ARROW]
b'\xe0'
H #unexpected result
我可以理解 b'\xe0' 正在打印,但为什么 H 会随之打印?
执行此操作时未打印 H:
import msvcrt
a=msvcrt.getch()
print(a)#b'\xe0'
a=a.decode('utf-8')
print(a)
When I input UP ARROW here, it raises a UNICODEDECODERROR.
我查看了解释 msvcrt.getch() 如何工作的另一个问题,但这仍然无法解释为什么我在第一段代码中得到两个字符,而在第二段代码中只有一个字符。 为什么 a 不等待输入下一个字符,而是假定值 b'H'?
【问题讨论】:
-
为什么你解码为 UTF-8 是你的输入不是 UTF-8?