Python 如何显示超出范围的ascii字符?

Python 如何显示超出范围的ascii字符?,python,ascii,less-unix,Python,Ascii,Less Unix,我使用PuTTY连接到Linux机器 在Linux机器上,我正在运行一个python脚本,它获取字符列表并按顺序打印每个字符及其索引 我列表中的某些字符超出了可打印ascii字符的范围。这些不规则字符正在破坏我的输出。有时它们根本不出现,而另一些时候它们实际上删除了大量有效文本 我以为可以通过关闭缓冲来纠正这个问题,但当我使用python-u标志运行脚本时,问题仍然会出现 有趣的是,当我将我的输入传递给较少的读者时,这个问题不会发生。在less中,不规则字符如下所示:、、^V、^@等。不缺少任何

我使用PuTTY连接到Linux机器

在Linux机器上,我正在运行一个python脚本,它获取字符列表并按顺序打印每个字符及其索引

我列表中的某些字符超出了可打印ascii字符的范围。这些不规则字符正在破坏我的输出。有时它们根本不出现,而另一些时候它们实际上删除了大量有效文本

我以为可以通过关闭缓冲来纠正这个问题,但当我使用python-u标志运行脚本时,问题仍然会出现

有趣的是,当我将我的输入传递给较少的读者时,这个问题不会发生。在less中,不规则字符如下所示:
^V
^@
等。不缺少任何文本块


我不确定我的问题在哪里。有没有办法配置我的终端,使未经管道的输出仍然显示不规则字符?

远程计算机是否可以设置为unicode(现代linux发行版),然后确保您也使用unicode设置运行putty。

远程计算机是否可以设置为unicode(现代linux发行版),然后确保您也在使用unicode设置运行putty。

您的
更少
配置为将原始字符显示为代表这些不可打印字符的ASCII字符组合;
-r
-raw control chars
命令行开关执行以下操作:

导致显示“原始”控制字符。默认情况下,使用插入符号显示控制字符;例如,控件-a(八进制001)显示为“^a”。警告:使用-r选项时,less无法跟踪屏幕的实际外观(因为这取决于屏幕如何响应每种类型的控制字符)。因此,可能会导致各种显示问题,例如在错误的位置拆分长线

这是一个特殊的
less
功能

如果希望对Python程序执行相同的操作,则需要自己进行相同的翻译。创建将“特殊”字符转换为转义码的映射:

nonprintable = {
    '\x00': '^@',
    '\x01': '^A',
    '\x02': '^B',
    '\x03': '^C',
    '\x04': '^D',
    # etc.
}

for i in range(128):
    character = chr(i)
    print i, nonprintable.get(character, character)

less
配置为将原始字符显示为代表这些不可打印字符的ASCII字符组合;
-r
-raw control chars
命令行开关执行以下操作:

导致显示“原始”控制字符。默认情况下,使用插入符号显示控制字符;例如,控件-a(八进制001)显示为“^a”。警告:使用-r选项时,less无法跟踪屏幕的实际外观(因为这取决于屏幕如何响应每种类型的控制字符)。因此,可能会导致各种显示问题,例如在错误的位置拆分长线

这是一个特殊的
less
功能

如果希望对Python程序执行相同的操作,则需要自己进行相同的翻译。创建将“特殊”字符转换为转义码的映射:

nonprintable = {
    '\x00': '^@',
    '\x01': '^A',
    '\x02': '^B',
    '\x03': '^C',
    '\x04': '^D',
    # etc.
}

for i in range(128):
    character = chr(i)
    print i, nonprintable.get(character, character)

这很有道理。另外,感谢创造性的python解决方案!这很有道理。另外,感谢创造性的python解决方案!