Python でサロゲート ペアを通常の文字列に変換する
この質問では、サロゲート ペアを含む Python Unicode 文字列を標準文字列に変換する方法を求めます。表現。目標は、わかりやすい Unicode 文字または標準化された 16 進形式を取得することです。
提供されたコード スニペットは、絵文字を表すサロゲート ペアを含む Python 文字列を示します。
emoji = "This is \ud83d\ude4f, an emoji."
この問題を解決するには、次のことを区別することが重要です。ディスク上の JSON ファイル内のリテラル サロゲート ペア文字列 (6 文字) とメモリ内の 1 文字のサロゲート ペア文字列 (1 文字)。
文字列が Python ソース コードで見つかった 1 文字のサロゲート ペアの場合 (提供されている例のように)、アップストリームに潜在的なバグがあることを示しています。これが発生し、解決できない場合は、サロゲートパス エラー ハンドラーを使用できます:
"\ud83d\ude4f".encode('utf-16', 'surrogatepass').decode('utf-16')
これは、対応する Unicode 文字を疑問符で表して出力します。 (?):
'?'
ディスク上の JSON ファイル内のリテラル サロゲート ペア文字列の場合、JSON データのロード後にサロゲート ペアが存在してはなりません:
ascii(json.loads(r'"\ud83d\ude4f"'))
これUnicode 文字の標準化された 16 進形式を出力します:
'\U0001f64f'
この区別を理解することは、Python でサロゲート ペアを処理し、使用可能な形式に変換するために不可欠です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3