2017-01-21 19 views
-1

Python 2.7でクリーンなチェスボードを印刷しようとしています。これはsuchなどのユニークな文字を使用しています。Pythonでlikeのような文字を印刷するには

文字列("g".replace(g, ♟))の値を置き換えようとしましたが、'\xe2\x80\xa6'に変更されました。文字をオンラインのASCIIコンバーターに入れた場合、 "226 153 159"を返します。

+2

なぜasciiコンバータに入れますか? –

+0

私はそれが本当に何を出力するかを見てみたかった。役に立つかもしれないが、そうは思わない。 – DSchana

+0

これはASCII文字ではなく、UTF-8文字です。 – Natecat

答えて

2

はユニコード文字です。 Python 2では、strはASCII文字列またはバイナリデータを保持し、unicodeはUnicode文字列を保持します。 "♟"を実行すると、ユニコード文字列のバイナリコード化バージョンが取得されます。そのエンコーディングは、あなたが入力したエディタ/コンソールに依存します。文字列をエンコードするためにUTF-8を使用するのが一般的ですが、WindowsエディタはリトルエンディアンのUTF-16文字列を好むかもしれません。

いずれにしても、可能な限り文字列をユニコードとして書きたいと思っています。 strunicodeの間でいくつかのミックス&マッチングを行うことができますが、ASCIIコードセット以外のものは最初からユニコードであることを確認してください。

Pythonは、ファイルの先頭にエンコードヒントをとることができます。あなたがUTF-8エディタを使用していると仮定すると、

[email protected]/usr/bin/env python 
# -*- coding: utf-8 -*- 

chess_piece = u"♟" 
print u"g".replace(u"g", chess_piece) 
関連する問題