Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Unicode против UTF-8 путаница в Python / Django?
Я наткнулся на этот отрывок в учебнике Django :
Модели Django есть ул. по умолчанию () метод, который вызывает unicode () и преобразует результат в UTF-8 bytestring. Это означает, что unicode(p) вернет строку Unicode, а str (p) вернет обычную строку с символами, закодированными как UTF-8.
Теперь я в замешательстве, потому что, насколько мне известно, Unicode-это не какая-то конкретная представленность, так что "Unicode string" в Python? Означает ли это UCS-2? В гугле появился этот "Python Unicode Tutorial" , который смело заявляет:
Unicode-это двухбайтовая кодировка, которая охватывает все распространенные в мире системы письма.
что же здесь явно не так, или это так? Меня много раз смущали проблемы с набором символов и кодировкой, но здесь я совершенно уверен, что документация, которую я читаю, запутана. Кто-нибудь знает, что происходит в Python, когда он дает мне "строку Unicode"?
что такое "Unicode string" в Python? Означает ли это UCS-2?
что такое "Unicode string" в Python? Означает ли это UCS-2?
Строки Unicode в Python хранятся внутренне либо как UCS-2 (16-битное представление фиксированной длины, почти такое же, как UTF-16), либо как UCS-4/UTF-32 (32-битное представление фиксированной длины). Это опция времени компиляции; на Windows это всегда UTF-16, в то время как многие дистрибутивы Linux устанавливают UTF-32 (‘широкий режим’) для своих версий Python.
Как правило, вы не должны беспокоиться: вы увидите Unicode кодовых точек как отдельные элементы в ваших строках, и вы не будете знать, хранятся ли они в виде двух или четырех байт. Если вы находитесь в сборке UTF-16 и вам нужно обрабатывать символы вне базовой многоязычной плоскости, вы будете делать это неправильно, но это все еще очень редко, и пользователи, которым действительно нужны дополнительные символы, должны компилировать широкие сборки.
просто неправильно, или это так?
Да, это совершенно неправильно. Честно говоря, я думаю, что этот учебник довольно стар; он, вероятно, предшествует широким строкам Unicode, если не Unicode 3.1 (версия, которая ввела символы вне базовой многоязычной плоскости).
Существует еще один источник путаницы, связанный с привычкой Windows использовать термин “Unicode” для обозначения, в частности, кодировки UTF-16LE, которую NT использует внутренне. Люди из Microsoftland могут часто копировать эту несколько вводящую в заблуждение привычку.
Тем временем я провел изысканное исследование, чтобы проверить, что такое внутреннее представление в Python, а также каковы его пределы. "Правда о Unicode в Python" - это очень хорошая статья, которая цитирует непосредственно разработчиков Python. По-видимому, внутреннее представление является либо UCS-2, либо UCS-4 в зависимости от переключателя времени компиляции. Итак, Джон, это не UTF-16, но твой ответ все равно вывел меня на правильный путь, спасибо.
Из Википедии на UTF-8 :
UTF-8 (8-битный формат преобразования UCS/Unicode) - это кодировка символов переменной длины для Unicode. Он способен представлять любой символ в стандарте Unicode, однако начальное кодирование байтовых кодов и присвоение символов для UTF-8 обратно совместимо с ASCII. По этим причинам он постепенно становится предпочтительной кодировкой для электронной почты, web pages[1] и других мест, где хранятся или передаются символы.
Таким образом, это где-то между одним и четырьмя байтами в зависимости от того, какой символ вы хотите представить в пределах realm от Unicode.
В вычислительной технике Unicode-это отраслевой стандарт, позволяющий компьютерам последовательно представлять и манипулировать текстом, выраженным в большинстве мировых письменных систем .
Таким образом, он способен представлять большинство (но не все) письменных систем мира.
Я надеюсь, что это поможет :)
так что же такое a "Unicode string" в
Python?
так что же такое a "Unicode string" в Python?
Python 'knows' что ваша строка-Unicode. Следовательно, если вы сделаете regex на нем, он будет знать, что является характером, а что нет и т. д., Что действительно полезно. Если вы сделали strlen, это также даст правильный результат. Например, если вы сделали string count on Hello, вы получите 5 (Даже если это Unicode). Но если вы сделали подсчет строк иностранного слова, и эта строка не была строкой Unicode, то вы получите гораздо больший результат. Pythong использует информацию из базы данных символов Unicode для идентификации каждого символа в строке Unicode. Надеюсь, это поможет.