1

可能であれば、ユニコードの python 文字列を使用したいのですが、u"\U0001d54d"表示に問題がある場合は、「V」だけを使用したいと思います。

一部のシステムでは、ユニコードが印刷されます。他のものでは、何も表示されないか(.encode("ascii","ignore")型のようなことが起こっていると思います)、または取得します

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

機能によっては…どっちもダメ。

特殊文字を使用するかどうかを判断するためにできるテストはありますか? それともそれよりも複雑ですか?

4

3 に答える 3

2

stdout がサポートしているエンコーディングを簡単に確認できます。

>>> import sys
>>> sys.stdout.encoding
'UTF-8'
于 2013-05-19T20:02:42.190 に答える
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 に答える
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 に答える