In che modo la stringa Unicode viene rappresentata letteralmente nella memoria di Python?In che modo unicode è rappresentato internamente in Python?
Ad esempio, è possibile visualizzare 'abc'
come equivalenti byte ASCII in memoria. L'intero potrebbe essere pensato come la rappresentazione del complimento del 2. Tuttavia u'\u2049'
, anche se è rappresentato in UTF-8
come '\xe2\x81\x89'
- 3 byte di lunghezza, come si visualizza il letterale u'\u2049'
codepoint nella memoria?
C'è un modo specifico in cui è memorizzato? Python 2 e Python 3 lo trattano diversamente?
domande Poche correlati per chiunque sia curioso:
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
Per sapere se si dispone di una build "narrow" (UCS2) o "wide" (UCS4), esaminare sys.maxunicode. 65535 significa stretto, 1114111 significa ampio. –
Penso che tecnicamente, sia UTF-16 o UTF-32, non UCS2 o UCS4, poiché le coppie surrogate vengono utilizzate in build strette, rendendolo UTF-16. –
@NedBatchelder: in effetti, non sono sicuro del motivo per cui la documentazione si attenga ancora all'utilizzo di UCS. –