1

在可能的情况下,我想使用 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)

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

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

4

3 回答 3

2

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

import os

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

还要检查LC_CTYPE

于 2013-05-19T19:53:37.487 回答
2

您可以轻松检查您的标准输出支持什么编码:

>>> import sys
>>> sys.stdout.encoding
'UTF-8'
于 2013-05-19T20:02:42.190 回答
0

引用 Python 词汇表,

请求宽恕比请求许可更容易

请求宽恕比请求许可更容易。这种常见的 Python 编码风格假设存在有效的键或属性,如果假设被证明是错误的,则捕获异常。这种干净快速的风格的特点是存在许多 try 和 except 语句。该技术与许多其他语言(如 C)常见的 LBYL 风格形成鲜明对比。

在 Python 中处理运行时错误的标准方法是 try\except。try打印您的字符串,并except UnicodeEncodeError在出现错误时回退。

>>> try:
...     s=u"\U0001d54d"
...     print s
... except UnicodeEncodeError:
...     print "V"
...
于 2013-05-19T20:19:29.890 回答