Converting Surrogate Pairs to Normal String in Python
本題尋求一種將包含代理對的Python Unicode 字串轉換為標準標準的方法表示。目標是獲得可理解的 Unicode 字元或標準化的十六進位格式。
提供的程式碼片段提供了一個Python 字串,其中包含表示表情符號的代理對:
<code class="python">emoji = "This is \ud83d\ude4f, an emoji."</code>
要解析問題,區分磁碟上JSON 檔案中的文字代理程式對字符字串(六個字元)和記憶體中的單字元代理程式對字串(一個字元)至關重要。
如果字串是單字元在 Python 原始碼中找到的代理對(例如提供的範例),它表明上游存在潛在的錯誤。如果遇到這種情況並且無法解決,可以使用surrogatepass 錯誤處理程序:
<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 字元的標準化十六進位格式:
'\U0001f64f'
理解這種區別對於在Python 中處理代理程式對並將其轉換為可用格式至關重要。
以上是如何在 Python 中將代理對轉換為普通字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!