windows python中的方块图

oyjwcjzk  于 2023-03-31  发布在  Windows
关注(0)|答案(5)|浏览(123)

平台:WinXP SP2,python 2.5.4.3.(activestate distribution)
有没有人成功地在python中写出box drawing characters?当我尝试运行这个:

print u'\u2500'
print u'\u2501'
print u'\u2502'
print u'\u2503'
print u'\u2504'

所有的提示都很感激。我做错了什么?Python支持完整的unicode吗?有没有可能让那些字符打印出来。

相关

kupeojn6

kupeojn61#

你的问题不是在Python中,而是在cmd.exe中。它必须设置为支持UTF-8。不幸的是,将Windows控制台(cmd.exe)切换到UTF-8“Python兼容”方式并不容易。
您可以使用命令(在cmd.exe中)切换到UTF8:

chcp 65001

但是Python(2.5)不能识别这种编码。无论如何,你必须设置正确的字体来支持unicode!
对于框绘制,我建议使用旧的dos代码页437,所以你需要在运行python脚本之前设置它:

chcp 437

然后你可以直接将cp 437编码的字符打印到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)))

但是,你可以使用框绘制字符,但由于cp 437的限制,你不能使用你可能需要的其他字符。

luaexgnf

luaexgnf2#

这取决于你的终端支持什么。如果它使用UTF-8,并且Python可以检测到它,那么它就可以正常工作。

>>> print u'\u2500'
─
>>> print u'\u2501'
━
>>> print u'\u2502'
│
>>> print u'\u2503'
┃
>>> print u'\u2504'
┄
2j4z5cfb

2j4z5cfb3#

打印它们将使用默认的字符编码进行打印,这可能不是您的终端的正确编码。
你有没有试过先把它们转换成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')

这对我在linux上支持utf-8编码数据的终端是有效的。

jaql4c8m

jaql4c8m4#

Python支持Unicode。可以打印这些字符。
例如,请参阅我对"Default encoding for python for stderr?"的回答,其中我展示了如何将Unicode打印到sys.stderr(对于裸print语句,将其替换为sys.stdout)。

n3schb8v

n3schb8v5#

我使用的是Windows字符Map工具,在CMD和PowerShell中都显示正常。字体:Arial. Python代码:Exe:Print('■ ■■ ■■■□ □ □ □ □ □')Print('● ● ● ● ○○○ ○ ○ ○○○')等等!

相关问题