我正在寻找一种从标准输入中获取单个 unicode 字符的方法。最近,我看到this topic解决方案不适用于unicode字符,只适用于ASCII字符。
使用上述主题中引用的函数getch()
,当用户键入unicode字符时,它表示为多个ASCII字符。实际上,getch()
仅返回第一部分(字节)。剩余的字节只能再次使用getch()
访问(但我不知道如何知道剩余的字节数。)
有没有办法从输入中实际获得单个unicode字符?
谢谢!
答案 0 :(得分:0)
如果您使用的是UTF-8,则多字节字符的第一个字节会告诉您有多少字节。所以这样的事情可以起作用:
c = getch()
first_byte = ord(c)
bytes_remain = 0
while (first_byte >> (6 - bytes_remain)) & 0b11 == 0b11:
bytes_remain += 1
c += getch()