Python でサロゲート ペアを通常の文字列に変換する
この質問では、サロゲート ペアを含む Python Unicode 文字列を標準文字列に変換する方法を求めます。表現。目標は、わかりやすい Unicode 文字または標準化された 16 進形式を取得することです。
提供されたコード スニペットは、絵文字を表すサロゲート ペアを含む Python 文字列を示します。
<code class="python">emoji = "This is \ud83d\ude4f, an emoji."</code>
この問題を解決するには、ディスク上の JSON ファイル内のリテラル サロゲート ペア文字列 (6 文字) とメモリ内の 1 文字のサロゲート ペア文字列 (1 文字) を区別することが重要です。
文字列が 1 文字の場合Python ソース コード (提供された例など) でサロゲート ペアが見つかった場合は、アップストリームでの潜在的なバグを示します。これが発生し、解決できない場合は、サロゲートパス エラー ハンドラーを使用できます:
<code class="python">"\ud83d\ude4f".encode('utf-16', 'surrogatepass').decode('utf-16')</code>
これにより、疑問符 (?) で表される対応する Unicode 文字が出力されます:
'?'
ディスク上の JSON ファイル内のリテラル サロゲート ペア文字列の場合、JSON データのロード後にサロゲート ペアが存在してはなりません:
<code class="python">ascii(json.loads(r'"\ud83d\ude4f"'))</code>
これにより、Unicode 文字の標準化された 16 進形式が出力されます:
'\U0001f64f'
この区別を理解することは、Python でサロゲート ペアを処理し、使用可能な形式に変換するために不可欠です。
以上がPython でサロゲート ペアを通常の文字列に変換するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。