Vra

Ek het gestruikel oor hierdie gedeelte in die Django handleiding :

  

Django modelle het 'n verstek str metode () wat 'n beroep op unicode () en vat die gevolg van 'n UTF-8 bytestring. Dit beteken dat unicode (p) 'n Unicode string sal terugkeer, en str (p) sal 'n normale string terugkeer, met karakters ingebou as UTF-8.

Nou, ek is verward omdat AFAIK Unicode is nie 'n bepaalde voorstelling, so wat is 'n "Unicode string" in Python? Maak dat UCS-2 bedoel? Googlen opgedaag hierdie "Python Unicode Tutorial" wat dit onomwonde

  

Unicode is 'n twee-byte encoding wat al van algemene skrifstelsels die wêreld se dek.

wat is plain verkeerd, of is dit? Ek is baie keer deur karakter stel en enkodering kwessies verwar, maar hier ek is redelik seker dat die dokumentasie wat ek lees is verward. Het enige iemand weet wat aangaan in Python wanneer dit my gee 'n "Unicode string"?

Was dit nuttig?

Oplossing

  

Wat is 'n "Unicode string" in Python? Beteken dit UCS-2?

Unicode snare in Python word intern óf gestoor as UCS-2 (vaste-lengte 16-bit verteenwoordiging, byna dieselfde as UTF-16) of UCS-4 / UTF-32 (vaste-lengte 32-bit verteenwoordiging). Dit is 'n Stel-time opsie; op Windows dit is altyd UTF-16 terwyl baie Linux verspreidings stel UTF-32 ( 'n wye modus ') vir hul weergawes van Python.

Jy is oor die algemeen nie veronderstel is om te sorg: julle sal Unicode-kode-punte te sien as 'n enkele elemente in jou snare en jy sal nie weet of hulle gestoor as twee of vier grepe. As jy in 'n UTF-16 opbou en wat jy nodig het om te hanteer karakters buite die Basiese Multilingual Plane sal jy doen dit verkeerd, maar dit is nog steeds baie skaars, en gebruikers wat regtig die ekstra karakters benodig behoort wye word die samestelling bou.

  

plain verkeerd, of is dit?

Ja, dis heeltemal verkeerd. Om eerlik ek dink dat handleiding is eerder oud wees; dit waarskynlik pre-datums wye Unicode snare, indien nie Unicode 3.1 (die weergawe wat karakters buite die Basiese Multilingual Plane ingestel).

Daar is 'n bykomende bron van verwarring spruit uit gewoonte van die gebruik van die term "Unicode" Windows se beteken, spesifiek, die UTF-16LE enkodering dat NT gebruik intern. Mense van Microsoft Land kan dikwels kopieer hierdie ietwat misleidend gewoonte.

Ander wenke

Intussen het ek 'n verfynde navorsing te verifieer wat die interne verteenwoordiging in Python is, en ook wat sy grense is. " die Waarheid oor Unicode In Python "is 'n baie goeie artikel wat direk verwys na die Python ontwikkelaars. Blykbaar, interne verteenwoordiging is óf UCS-2 of UCS-4 afhangende van 'n Stel-time skakelaar. So Jon, dit is nie UTF-16, maar jou antwoord het my op die regte pad is in elk geval, dankie.

Python winkels Unicode as UTF-16. str () sal die UTF-8 voorstelling van die UTF-16 string terugkeer.

Van Wikipedia op UTF-8 :

UTF-8 (8-bit UCS / Unicode Transformasie formaat) is 'n veranderlike lengte karakter enkodering vir Unicode. Dit is in staat om enige karakter in die Unicode standaard , maar die aanvanklike kodering van byte kodes en karakter opdragte vir UTF-8 verteenwoordig is backwards compatible met ASCII. Om hierdie redes is dit steeds besig om die voorkeur kodering vir e-pos, web bladsye [1], en ander plekke waar karakters gestoor of gestroom.

So, dit is oral tussen een en vier grepe afhangende van watter karakter jy wil verteenwoordig binne die raamwerk van Unicode.

vanuit Wikipedia op Unicode:

In die rekenaarwese, Unicode is 'n industrie standaard sodat rekenaars om konsekwent te stel en te manipuleer teks uitgedruk in die meeste van skryfstelsels die wêreld se .

Dit is dus in staat om verteenwoordig mees (maar nie almal nie) van skryfstelsels die wêreld se.

Ek hoop dit help:)

  

Wat is 'n "Unicode string" in   Python?

Python 'weet' dat jou string is Unicode. Vandaar as jy regex op dit, sal dit weet wat karakter en wat nie ens is, wat is werklik nuttig. As jy 'n StrLen het sal dit ook die korrekte resultaat gee. As 'n voorbeeld as jy het string reken op Hallo, sal jy 5 kry (selfs al is dit Unicode). Maar as jy 'n string telling van 'n vreemde woord gedoen het en dat string was nie 'n Unicode string as jy veel groter gevolg sal hê. Pythong gebruik die inligting vorm die Unicode karakter databasis aan elke karakter te identifiseer in die Unicode String. Hoop dit help.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top