[Python] It's 1999 all over again

Manlio Perillo manlio.perillo a gmail.com
Ven 14 Feb 2014 12:08:45 CET


On 14/02/2014 00:34, Daniele Varrazzo wrote:
> On 2014-02-13 18:50, Dario Bertini wrote:
>> On 02/13/2014 05:03 PM, Daniele Varrazzo wrote:
>>> - sai che a[n] non è un carattere ma è un byte. La bugia dei widechar
>>> non regge. Neanche quella di unicode in python che però si rompe al di
>>> fuori del BMP (a meno che non lo compili 4 byte per carattere blah blah)
>>
>> Forse sono pignolo, ma "la bugia dei widechar non regge" non vuol dire
>> quasi nulla visto che:
>> - non specifichi cos'è un widechar (è un codeunit a 16 bit, o un
>> codepoint memorizzato in 32?)
>> - non chiarisci in che modo non regge
>
> wchar_t è compiler dependent: potrebbe essere anche 8 bit. Tanto per
> essere utile.
>

E' vero che è implementation defined, ma lo standard C99 dice:

wide character
bit representation that fits in an object of type wchar_t, capable of 
representing any character in the current locale

Ora, assumendo che il locale corrente permette di gestire l'intero 
Unicode, una implementazione corretta dovrebbe avere un wchar_t di 4 octets.

Il fatto che Windows (che assumo/spero supporti l'intero Unicode) ha una 
rappresentazione di wchar_t come 2 octets, significa che o io interpreto 
male lo standard o Windows non è conforme.

 > [...]


Ciao  Manlio


Maggiori informazioni sulla lista Python