我在使用 python3 诅咒和 unicode 时遇到问题:
#!/usr/bin/env python3
import curses
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
def doStuff(stdscr):
offset = 3
stdscr.addstr(0, 0, "わたし")
stdscr.addstr(0, offset, 'hello', curses.A_BOLD)
stdscr.getch() # pauses until a key's hit
curses.wrapper(doStuff)
我可以很好地显示 unicode 字符,但是 addstr 的 y-offset 参数(我的代码中的“偏移量”)没有按预期运行;我的屏幕显示“わたhello”而不是“わたしhello”
事实上,偏移量有非常奇怪的行为:
- 0:hello
- 1:わhello
- 2:わhello
- 3:わたhello
- 4:わたhello
- 5:わたしhello
- 6:わたしhello
- 7:わたし hello
- 8:わたし hello
- 9:わたし hello
请注意,偏移量不是字节,因为字符是 3 字节的 unicode 字符:
>>>len("わ".encode('utf-8'))
3
>>> len("わ")
1
我正在运行 python 4.8.3,curses.version 是“b'2.2'”。
有谁知道发生了什么或如何调试它?提前致谢。