python中的框绘图

Roo*_*ook 7 python windows unicode

平台:WinXP SP2,python 2.5.4.3.(activestate发行)

有没有人成功写出python 中的盒子绘图字符?当我尝试运行时:

print u'\u2500'
print u'\u2501'
print u'\u2502'
print u'\u2503'
print u'\u2504'
Run Code Online (Sandbox Code Playgroud)

所有提示赞赏.我究竟做错了什么 ?python是否支持完整的unicode?是否可以将这些字符打印出来.

有关

Jir*_*iri 6

您的问题不是在Python中,而是在cmd.exe中.它必须设置为支持UTF-8.不幸的是,将Windows控制台(cmd.exe)切换为UTF-8"Python兼容"方式并不是一件容易的事.

您可以使用命令(在cmd.exe中)切换到UTF8:

chcp 65001
Run Code Online (Sandbox Code Playgroud)

但Python(2.5)无法识别该编码.无论如何你必须设置支持unicode的正确字体!

对于盒子绘图,我建议使用旧的dos代码页437,因此您需要在运行python脚本之前进行设置:

chcp 437
Run Code Online (Sandbox Code Playgroud)

然后你可以直接打印cp437编码的字符到stdout或解码字符到unicode并打印unicode,试试这个脚本:

# -*- coding: utf-8 -*- 
for i in range(0xB3, 0xDA):
    print chr(i).decode('cp437'),

# without decoding (see comment by J.F.Sebastian)
print ''.join(map(chr, range(0xb3, 0xda)))
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用框绘图字符,但由于cp437的限制,您无法使用其他可能需要的字符.


Jer*_*rub 1

打印它们将以默认字符编码打印,这可能不是适合您的终端的正确编码。

您是否尝试过先将它们转码为 utf-8 ?

print u'\u2500'.encode('utf-8')
print u'\u2501'.encode('utf-8')
print u'\u2502'.encode('utf-8')
print u'\u2503'.encode('utf-8')
print u'\u2504'.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

这适用于我在 Linux 上支持 utf-8 编码数据的终端。