Преобразование суррогатных пар в обычную строку в Python
В этом вопросе ищется метод преобразования строки Unicode Python, содержащей суррогатные пары, в стандартную строку представительство. Цель состоит в том, чтобы получить понятный символ Юникода или стандартизированный шестнадцатеричный формат.
Приведенный фрагмент кода представляет строку Python, которая включает суррогатную пару, представляющую смайлик:
emoji = "This is \ud83d\ude4f, an emoji."
Чтобы решить проблему, важно различать буквальные строки суррогатной пары в файле JSON на диске (шесть символов) и строки суррогатной пары из одного символа в памяти (один символ).
Если строка представляет собой суррогатную пару из одного символа, найденную в исходном коде Python (например, как в приведенном примере), это указывает на потенциальную ошибку в исходном коде. Если это произошло и не может быть устранено, можно использовать обработчик ошибок surrogatepass:
"\ud83d\ude4f".encode('utf-16', 'surrogatepass').decode('utf-16')
Это выведет соответствующий символ Юникода, представленный в виде вопросительного знака. (?):
'?'
В случае буквальных строк суррогатной пары в файле JSON на диске суррогатная пара не должна присутствовать после загрузки данных JSON:
ascii(json.loads(r'"\ud83d\ude4f"'))
Это выведет стандартизированный шестнадцатеричный формат символов Юникода:
'\U0001f64f'
Понимание этого различия важно для обработки суррогатных пар в Python и преобразования их в удобный формат.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3