在可能的情况下,我想使用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)
取决于功能...两者都不好。
我可以做一个测试,以确定是否使用我的特殊字符?还是比这更复杂?
答案 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"
...