2
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)

>>> import unicodedata
>>> unicodedata.unidata_version
'5.2.0'

つまり、私のPythonバージョンにはUnicode5.2.0が必要です。

しかし、バージョン5.2.0で新しく追加されたUnicode文字のリストに移動して、そのような文字を出力すると、認識されません。

>>> print u"\u0803"
ࠃ

ただし、5.1.0以降の文字は認識されます。

>>> print u"\u03CF"
Ϗ

それで、私は常に、実際に出力されたバージョンよりも1つ下のバージョンを数える必要がありますか、unicodedata.unidata_versionそれとも何かを誤解していますか?

4

1 に答える 1

4

端末が印刷できるものと、PythonがUnicode文字について知っているものとを混同しています。

ターミナルフォントはこれらのコードポイントを認識しません。Pythonはそれらをうまく処理できます:

>>> import unicodedata
>>> unicodedata.category(u'\u0803')
'Lo'
>>> unicodedata.name(u'\u0803')
'SAMARITAN LETTER DALAT'
>>> unicodedata.category(u'\u03CF')
'Lu'
>>> unicodedata.name(u'\u03CF')
'GREEK CAPITAL KAI SYMBOL'

皮肉なことに、私のブラウザで使用されているフォントは、どちらのコードポイントの画像も定義していません。あなたの投稿には、2つのプレースホルダー文字が表示されています。

2つのプレースホルダー文字

于 2012-11-28T16:00:58.307 に答える