Python 2.7 の使用
抽象的な Web スクレイパーを作成していて、特定の文字を表示 (印刷) するときに問題が発生しています。
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2606' in position 5: ordinal not in range(128)
文字を含む文字列を印刷すると、トレースバック エラーが発生します。
OS でサポートされている設定を見つけるために locale モジュールを使用しましたが、問題に locale を使用する必要があるかどうか確信が持てず、デフォルト設定が(en_US', 'cp1252')
. 私はそれを変更しようとしています('en_US', 'utf-8')
が、残念ながら役に立ちません。
#code for default settings
print locale.getdefaultlocale()
これは、ロケール設定オプションを絞り込むために使用したコードです。(ここでは問題ありません。コードは、必要な人なら誰でも従うことができるようになっています)
import locale
all = locale.locale_alias().items()
utfs = [(k,v) for k,v in all if 'utf' in k.lower() or 'utf' in v.lower()]
# utf settings starting with en
en_utfs = [(k,v) for k,v in utfs if k.lower()[:2].lower() == 'en' or
v.lower()[:2] == 'en'
print en_utfs
これにより、次の出力が得られます。
[('en_ie.utf8@euro', 'en_IE.UTF-8'), ('universal.utf8@ucs4', 'en_US.UTF-8')]
ここに私の問題があります。に設定を変更しようとするとen_US.UTF-8
。
[IN]: locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' )
[OUT]: Traceback code ...
[OUT]: locale.Error: unsupported locale setting
すべてのコードで申し訳ありません。何らかの理由で、そうする必要が過度にあると感じました。