我正在尝试使用curses显示大的ascii文本,但由于某种原因它只能在Visual Studio Code终端中工作。
但是当我尝试在 powershell 中运行该程序时,它会由于某种原因切断文本的开头,而当我在 cmd 中运行它时,它只显示一个方形的问号。
windows powershell 终端开头的字母被截断,替换为空格,cmd 终端只显示一框问号
发生了什么事以及如何解决它?
main.py:
import os, curses, time
os.system('cls' if os.name == 'nt' else 'clear')
def main(stdscr):
stdscr.clear()
HEIGHT = curses.LINES
WIDTH = curses.COLS
logo = []
with open("logo.txt", mode="r", encoding="utf-8") as dataFile:
logo = dataFile.readlines()
for i in range(len(logo)):
stdscr.addstr(logo[i])
stdscr.refresh()
stdscr.getkey()
curses.wrapper(main)
徽标.txt:
#
# ##
# ########## ## ######### ##### ####
# # # ## ## # # ## ## # ##
# # ## # ## ## ##
## ## # # ########## ## # ##
## ## #### ## # # # ## ## ###
# ## # # # # # ## ## ####
# ########### ## ## ####
########## # # # ## ## ## ##
# ## # # # ## ## # ##
# #### ## ## # ## ## ## ##
## # # # # ########## ## ## ## ##
## ## # ## ## # # ##### #####
# # # # ####
我尝试通过 addstr-inging 不同变体的“A”和“AAAAAAAAAAAAAAAAAAAAA”而不是 ascii 字体进行调试,效果正常。
我还尝试将文本更改为更小,以防文本循环或在 powershell 终端中出现某些问题,但同样的问题仍然存在。
最后,出于同样的原因,我尝试删除第一个字符。截止点似乎是屏幕上的同一个位置,文本较少意味着可以看到黑色区域的文本较少。
绕过该问题的一种方法是转换通常可打印的文本信息字符:这相当简单,因为 UTF-8 在前 256 个代码点中包含大部分 ISO-8859-1 字符。
$ sed < logo.txt -re 's/\xe3\x80\x80/./g' -e 's/\xef\xbc\x83/#/g' ; echo
.......................#..............................
..................#...##..............................
..#..##########...##..#########.....#####.......####..
...#.#..#.##.##....#..#............##...##.....#...##.
.....#..#.##.........#............##.....##...##......
.......##.##..#..#..##########...##.......#...##......
.##...##...####..##...#..#...#...##.......##..###.....
...#.##..#.........#..#..#...#...##.......##...####...
.........#..........###########..##.......##.....####.
.....##########....#..#..#..##...##.......##.......##.
...#.....##........#..#..#..##...##.......#.........##
...#....####......##.##..#..##....##.....##.........##
..##...#.#..#.....#..##########....##...##....##...##.
.##..##..#...##..##..#......#.......#####......#####..
.#...#...#.......#.......####.........................