Python / Django UTF-8 karışıklık vs Unicode?

oy
28

Ben de bu pasajda üzerinde tökezledi Django öğretici :

Django modelleri varsayılan sahip str çağırır () yöntemini unicode () ve UTF-8 bytestring sonucu dönüştürür. Bu Unicode (p) bir Unicode dize döndürür ve str (p) UTF-8 olarak kodlanmış karakterleri ile, normal bir dize döndürür anlamına gelir.

Şimdi Unicode herhangi bir temsili değil afaik çünkü kafam karıştı, böylece Python bir Unicode dizesi nedir? Bu UCS-2 demek? Googling geldi bu Python Unicode Eğitimi cesaretle devletler

Unicode dünyanın ortak yazı sistemleri, tümünü kapsayan iki baytlık kodlama.

hangi düz yanlış, yoksa değil mi? Ben karakter seti ve kodlama sorunları ile defalarca karıştı edilmiştir, ama burada ben okuyorum belgeleri karıştı olduğundan eminim. Kimsenin bana bir Unicode dizesi verince Python neler biliyor mu?

Oluştur 22/08/2008 saat 11:01
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
0

UTF-16 olarak Python depolar Unicode. str () UTF-16 dize UTF-8 temsilini döndürür.

Cevap 22/08/2008 saat 11:03
kaynak kullanıcı

oy
-1

Gönderen UTF-8 Vikipedi :

UTF-8 (8 bit UCS / Unicode Transformation Format) a, Unicode değişken uzunlukta bir karakter kodlama. Unicode standardı herhangi bir karakter temsil edebilir , ama UTF-8 byte kodlarını ve karakter atamaları ilk kodlama ASCII ile de uyumludur. Bu nedenlerden dolayı, bunun giderek e-posta tercih kodlamayı haline geliyor, web sayfaları [1] ve karakterler depolanan veya akış şeklinde başka yerlerde.

Yani, sen Unicode bölge içinde temsil etmek istediğiniz karakter bağlı olarak bir ila dört bayt yerde bulunuyor.

Unicode üzerinde Vikipedi Gönderen:

Bilişimde, Unicode bilgisayarlar sürekli olarak ifade metni temsil etmek ve işlemek için izin bir endüstri standardıdır dünyanın çoğu yazı sistemi .

Bu yüzden dünyanın çoğu yazı sistemi (hepsi değil) temsil edebilir bu.

Umarım bu yardımcı olur :)

Cevap 22/08/2008 saat 11:10
kaynak kullanıcı

oy
-2

böylece Python bir "Unicode dizesi" nedir?

Python dize Unicode olduğunu 'bilir'. bunun üzerine regex yapmak Dolayısıyla, eğer gerçekten yararlı olduğu değil vs hangi karakterdir ve hangi bilecektir. Eğer bir strlen yaptıysak o da doğru sonucu verecektir. Eğer dize Hello güvenebilirsiniz eğer bir örnek olarak, (o Unicode bile) 5 alacak. Eğer yabancı bir kelimenin bir dize sayım yaptığını ve eğer Ama bu dize sen çok daha büyük bir sonuç olacak daha Unicode dizesi değildi. Pythong bilgi Unicode dize her karakter tanımlamak için Unicode karakter veritabanı oluşturmak kullanır. Umarım yardımcı olur.

Cevap 22/08/2008 saat 11:32
kaynak kullanıcı

oy
8

Bu arada, Python içinde iç temsilidir doğrulamak için rafine bir araştırma yaptım ve sınırları da şeylerdir. " Python Unicode Hakkında Gerçek " Python geliştiricileri doğrudan değinir çok iyi bir makale. UCS-2 ya da UCS-4 bir derleme anahtarı bağlı olarak ya Görünüşe göre, iç temsilidir. Yani Jon, bu UTF-16 değil, ama sizin cevap, zaten doğru yolda sayesinde beni koy.

Cevap 22/08/2008 saat 11:32
kaynak kullanıcı

oy
48

Python bir "Unicode dizesi" nedir? Bu UCS-2 demek?

Python Unicode şeritler ya da UCS-4 / UTF-32 (sabit uzunlukta, 32-bit temsili) (UTF-16 ile hemen hemen aynı, sabit uzunlukta, 16-bit temsili) UCS-2 dahili olarak ya depolanır. Bu derleme zamanı seçenek; Windows üzerinde birçok Linux dağıtımları Python kendi sürümleri için UTF-32 ( 'geniş modu') set ederken UTF-16 hep bu.

Genellikle bakım gerekiyordu değildir: Eğer dizeleri tek elemanlar olarak Unicode kod noktalarını göreceksiniz ve onlar iki veya dört bayt olarak depolanan almadığınızı bilmek olmaz. Eğer UTF-16 yapı konum ve size Doing It Wrong olacak temel Multilingual düzlemi dışında karakterleri işlemek gerekir, ama bu yine de çok nadirdir ve gerçekten fazladan karakter ihtiyaç kullanıcıların geniş inşa derleme edilmelidir.

düz yanlış, ya da değil mi?

Evet, bu biraz yanlış. Ben öğretici oldukça eski olduğunu düşünüyorum Adil olmak gerekirse; muhtemelen değilse Unicode 3.1 (temel Multilingual düzlemi dışında karakterler tanıttı sürüm), geniş Unicode dizeleri-tarihlerdeki öncesi.

dönem “Unicode” kullanarak Windows'un alışkanlığı kaynaklanan karışıklık ek bir kaynak yoktur demek, özellikle NT dahili olarak kullandığı UTF-16LE kodlama. Microsoftland gelen insanlar genellikle bu biraz yanıltıcı alışkanlık kopyalayabilirsiniz.

Cevap 06/02/2009 saat 23:54
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more