Mój pierwotny ciąg był ciągiem znaków Unicode anyways (tj poprzedzony u)
... co jest problemem. Nie był to "ciąg" jako taki, ale "obiekt Unicode". Zawiera sekwencję punktów kodowych Unicode. Te punkty kodowe muszą oczywiście mieć wewnętrzną reprezentację, o której Python wie, ale cokolwiek to jest, jest usuwane i są one wyświetlane jako \uXXXX
, gdy jesteś print repr(my_u_str)
.
Aby uzyskać ciąg bajtów zrozumiałych dla innego programu, należy wykonać tę sekwencję punktów kodowych Unicode i zakodować ją. Musisz zdecydować o kodowaniu, ponieważ jest wiele do wyboru. UTF8 i UTF16 są często wybierane. ASCII może być również, jeśli pasuje. u"abc".encode('ascii')
działa dobrze.
Czy my_u_str = u"\u2119ython"
a następnie type(my_u_str)
i type(my_u_str.encode('utf8'))
aby zobaczyć różnicę w rodzaju: pierwsza to <type 'unicode'>
a drugi <type 'str'>
. (W każdym razie w Pythonie 2.5 i 2.6).
W Pythonie 3 sprawy wyglądają inaczej, ale ponieważ rzadko go używam, rozmawiałbym z moim kapeluszem, gdybym próbował powiedzieć coś autorytatywnego na ten temat.
To nie jest bezpośredni komunikat, ale ten tekst jest wart przeczytania: [Absolutne minimum Każdy programista absolutnie, pozytywnie musi wiedzieć o Unicode i zestawach znaków (bez wymówek!)] (Http: //www.joelonsoftware. com/articles/Unicode.html) autorstwa Joela Spolsky'ego – balpha
Programowanie zorientowane na domysły. To jest popularny paradygmat :) – Amnon
Z mojego doświadczenia wynika, że poznanie podstaw (jak tu robisz) jest bardziej skuteczne. – Amnon