Длина Python путаницы в Unicode

Это уже помогло, но я все еще в замешательстве.

У меня есть строка в кодировке Unicode, подобная этой:

title = u'
7 голосов | спросил kev 11 J0000006Europe/Moscow 2015, 11:37:45

1 ответ


0

У вас есть 5 кодовых точек . Одна из этих кодовых точек находится за пределами базовой многоязычной плоскости , что означает UTF Кодировка -16 для этих кодовых точек должен использовать два кодовые единицы для символа .

Другими словами, клиент полагается на детали реализации и делает что-то не так. Они должны считать кодовые точки , а не кодовые единицы . Есть несколько платформ, где это происходит довольно регулярно; Сборки Python 2 UCS2 являются одним из таких примеров, но разработчики Java часто забывают о разнице, как и API Windows.

Вы можете закодировать свой текст в UTF-16 и разделить количество байтов на два (каждая единица кода UTF-16 составляет 2 байта). Выберите вариант utf-16-le или utf-16-be, чтобы не включить спецификацию в длину:

title = u'
ответил Martijn Pieters 11 J0000006Europe/Moscow 2015, 11:44:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132