これはConverting to Emojiへのフォローアップです。その質問では、OPにはjson.dumps()
- サロゲートペアとして表された絵文字付きのエンコードファイル\ud83d\ude4f
がありました。私はファイルを読み込んで絵文字を正しく翻訳していましたが、正確なanswerはファイルの各行にjson.loads()
であり、json
モジュールはサロゲートペアから(私はUTF8でエンコードされていると仮定しています)絵文字。だからここPythonでサロゲートペアを使用するにはどうすればいいですか?
は私の状況です:私はそれでサロゲートペアを持つだけで通常のPython 3のUnicode文字列を持っていると言う:
emoji = "This is \ud83d\ude4f, an emoji."
私はそれから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
をen_US.UTF-8
に設定して、LinuxでPython 3.5.1を実行しています。これらのサンプルは、コマンドラインのPythonインタプリタとSublime Textで実行されるIPythonの両方で実行しました。違いはありません。メモリ内(Pythonのソースコード内の文字列リテラルを使用して指定)単一文字u'\ud83d'
:
恐ろしく、ありがとう! 'surrogatepass'エラーハンドラがありませんでした。 – MattDMo