如何测试python发行版是否具有unicode属性

时间:2013-05-19 19:37:19

标签: python unicode

在可能的情况下,我想使用unicode python字符串u"\U0001d54d",但如果显示它会出现问题,我只想使用“V”。

在某些系统上打印unicode。 在其他情况下它没有显示任何内容(我假设发生了.encode("ascii","ignore")类型的事情)或者我得到了

UnicodeEncodeError: 'ascii' codec can't encode character u'\U0001d54d' in position 14: ordinal not in range(128)

取决于功能...两者都不好。

我可以做一个测试,以确定是否使用我的特殊字符?还是比这更复杂?

3 个答案:

答案 0 :(得分:2)

显示部分取决于您要打印的位置。 Python将输出编码为终端应用程序使用的任何编码。您可以检查环境变量以确保在您需要的语言环境中定义字符,例如:

import os

if os.environ.get('LC_ALL') == 'es_ES.utf8':
    # You know that 'es_ES.utf8' has your character ...

同时检查LC_CTYPE

答案 1 :(得分:2)

您可以轻松查看stdout支持的编码:

>>> import sys
>>> sys.stdout.encoding
'UTF-8'

答案 2 :(得分:0)

引用Python术语表,

  

Easier to ask for forgiveness than permission

     

比获得许可更容易请求宽恕。这个常见的Python   编码风格假定存在有效的键或属性   如果假设被证明是假的,则捕获异常。这干净又快   风格的特点是存在许多尝试和除外   声明。该技术与许多人共同的LBYL风格形成鲜明对比   其他语言,如C.

在Python中处理运行时错误的标准方法是try \ except。 try打印字符串,except UnicodeEncodeError以便在发生错误时进行后备。

>>> try:
...     s=u"\U0001d54d"
...     print s
... except UnicodeEncodeError:
...     print "V"
...