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?是否可以将这些字符打印出来.
您的问题不是在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的限制,您无法使用其他可能需要的字符.
打印它们将以默认字符编码打印,这可能不是适合您的终端的正确编码。
您是否尝试过先将它们转码为 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 编码数据的终端。