W jaki sposób ciąg znaków Unicode jest dosłownie reprezentowany w pamięci Pythona?W jaki sposób Unicode jest wewnętrznie reprezentowany w Pythonie?
Na przykład mogłem zwizualizować 'abc'
jako odpowiednik bajtów ASCII w pamięci. Integer można uważać za komplementarną reprezentację dwójki. Jednak u'\u2049'
, mimo że jest reprezentowana w UTF-8
jako '\xe2\x81\x89'
- 3 bajtów długości, w jaki sposób wizualizować literalny punkt kodowy u'\u2049'
w pamięci?
Czy istnieje szczególny sposób, w jaki jest przechowywany w pamięci? Czy Python 2 i Python 3 traktują to inaczej?
Kilka Podobne pytania dla każdego, ciekawy:
1) How are these strings represented internally in Python interpreter ? I don't understand
2) What is internal representation of string in Python 3.x
Aby sprawdzić, czy masz "wąską" (UCS2) lub "szeroką" (UCS4) kompilację, sprawdź sys.maxunicode. 65535 oznacza wąski, 1114111 oznacza szeroki. –
Myślę, że technicznie, to UTF-16 lub UTF-32, nie UCS2 lub UCS4, ponieważ zastępcze pary są używane w wąskich kompilacjach, co czyni je UTF-16. –
@NedBatchelder: w rzeczy samej, nie wiem, dlaczego dokumentacja nadal jest zgodna z UCS. –