Mih*_*hai 4 python linux unicode
我正在编写一个 Python 程序,它将一些数据制表到标准输出,如果终端支持,我想使用花哨的Unicode 框绘图字符。
现在我可以通过三种方式做到这一点:
盲目输出 Unicode 并希望用户不会得到一屏垃圾,或者
始终使用 ASCII,或
做一些检查,并在必要时回退到 ASCII。
我可以做哪些检查?我能想到的最好的方法是检查终端是否具有 UTF-8 语言环境。但是,这既不是必要条件,也不是充分条件,因为用户可能没有任何支持方框绘制字符的字体;否则他可能会使用不同的语言环境,其不支持线绘图字符。
您可以sys.stdout.encoding在一个try/except块中测试编码您的字符,以查看输出编码是否支持这些字符:
#!python3
#coding:utf8
import sys
try:
'????????????????????????????????????????'.encode(sys.stdout.encoding)
test = True
except UnicodeEncodeError:
test = False
if not test:
print('Unsupported characters in',sys.stdout.encoding)
Run Code Online (Sandbox Code Playgroud)
输出:
C:\>chcp 437
C:\>test
C:\>chcp 1252
Active code page: 1252
C:\>test
Unsupported characters in cp1252
Run Code Online (Sandbox Code Playgroud)