2024-04-18 14:18:26 发布
网友
平台:WinXP SP2,python 2.5.4.3。(活动状态分布)
有人成功地用python写出了box drawing characters吗? 当我试着运行这个:
print u'\u2500' print u'\u2501' print u'\u2502' print u'\u2503' print u'\u2504'
所有小费都很感激。我做错什么了?python支持完全unicode吗?有可能把这些字符打印出来吗。
这取决于你的终端支持什么。如果它使用UTF-8,并且Python能够检测到它,那么它就可以正常工作。
>>> print u'\u2500' ─ >>> print u'\u2501' ━ >>> print u'\u2502' │ >>> print u'\u2503' ┃ >>> print u'\u2504' ┄
打印它们将以默认字符编码方式打印,这可能不是终端的正确编码方式。
你有没有试过先把它们转换成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编码数据的终端上。
问题不在Python中,而在cmd.exe中。它必须设置为支持UTF-8。不幸的是,将windows控制台(cmd.exe)切换到UTF-8“与Python兼容”的方式并不容易。
您可以使用命令(在cmd.exe中)切换到UTF8:
chcp 65001
但是Python(2.5)不能识别这种编码。无论如何,你必须设置支持unicode的正确字体!
对于box绘图,我建议使用旧的dos代码页437,因此在运行python脚本之前需要设置它:
chcp 437
然后,可以将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)))
但是,可以使用制表符,但由于cp437的限制,不能使用可能需要的其他字符。
这取决于你的终端支持什么。如果它使用UTF-8,并且Python能够检测到它,那么它就可以正常工作。
打印它们将以默认字符编码方式打印,这可能不是终端的正确编码方式。
你有没有试过先把它们转换成utf-8?
这对我在linux上工作,在一个支持utf-8编码数据的终端上。
问题不在Python中,而在cmd.exe中。它必须设置为支持UTF-8。不幸的是,将windows控制台(cmd.exe)切换到UTF-8“与Python兼容”的方式并不容易。
您可以使用命令(在cmd.exe中)切换到UTF8:
但是Python(2.5)不能识别这种编码。无论如何,你必须设置支持unicode的正确字体!
对于box绘图,我建议使用旧的dos代码页437,因此在运行python脚本之前需要设置它:
然后,可以将cp437编码的字符直接打印到stdout或将字符解码到unicode并打印unicode,请尝试以下脚本:
但是,可以使用制表符,但由于cp437的限制,不能使用可能需要的其他字符。
相关问题 更多 >
编程相关推荐