これは絵文字への変換 のフォローアップです。その質問では、OP にはjson.dumps()
、サロゲート ペアとして表される絵文字を含む - エンコードされたファイルがありました - \ud83d\ude4f
。彼女/彼はファイルを読んで絵文字を正しく翻訳するのに問題があり、正しい答えはjson.loads()
ファイルの各行にあり、json
モジュールはサロゲート ペアから (UTF8 でエンコードされた) 絵文字への変換を処理します。
ここに私の状況があります: サロゲートペアを含む通常の Python 3 Unicode 文字列があるとします:
emoji = "This is \ud83d\ude4f, an emoji."
この文字列を処理して絵文字の表現を取得するにはどうすればよいですか? 私はこのようなものを取得しようとしています:
"This is , an emoji."
# or
"This is \U0001f64f, an emoji."
私はもう試した:
print(emoji)
print(emoji.encode("utf-8")) # also tried "ascii", "utf-16", and "utf-16-le"
json.loads(emoji) # and `.encode()` with various codecs
通常、次のようなエラーが表示されUnicodeEncodeError: XXX codec can't encode character '\ud83d' in position 8: surrogates no allowed
ます。
$LANG
に設定して、LinuxでPython 3.5.1を実行していen_US.UTF-8
ます。コマンド ラインの Python インタープリターと、Sublime Text で実行されている IPython 内の両方でこれらのサンプルを実行しましたが、違いはないようです。