Converting Surrogate Pairs to Normal String in Python
This question尋求一種將包含代理對的Python Unicode字串轉換為標準字元串的方法表示。目標是獲得可理解的 Unicode 字元或標準化的十六進位格式。
提供的程式碼片段提供了一個Python 字串,其中包含表示表情符號的代理對:
emoji = "This is \ud83d\ude4f, an emoji."
要解決這個問題,區分文字和文字至關重要磁碟上JSON 檔案中的代理項對字串(6 個字元)和記憶體中的單字元代理程式對字串(1個字元)。
如果字串是在 Python 原始碼中找到的單字元代理對(例如如所提供的範例),它表明上游存在潛在的錯誤。如果遇到這種情況且無法解決,可以使用 surrogatepass 錯誤處理程序:
"\ud83d\ude4f".encode('utf-16', 'surrogatepass').decode('utf-16')
這將輸出對應的Unicode字符,表示為問號(?):
'?'
對於磁碟上JSON 檔案中的文字代理對字串,載入JSON 資料後不應出現代理對:
ascii(json.loads(r'"\ud83d\ude4f"'))
這將輸出標準化的Unicode 字元的十六進位格式:
'\U0001f64f'
理解這種區別對於在Python 中處理代理程式對並將其轉換為可用格式至關重要。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3