2011-08-09 11 views
5

Łańcuch szesnastkowy '\xd3' może być również reprezentowany jako: Ó.Konwertuj ze znaku szesnastkowego na znak Unicode w pytonie

Najprostszym sposobem znalazłem uzyskać reprezentację ciąg znaków hex do konsoli jest:

print unichr(ord('\xd3')) 

lub w języku angielskim, należy przekonwertować ciąg szesnastkowy do numeru, a następnie przekonwertować numer telefonu do kod Unicode, a następnie wyprowadź go na ekran. To wydaje się być dodatkowym krokiem. Czy istnieje prostszy sposób?

Odpowiedz

8
print u'\xd3' 

Czy wszystko, co musisz zrobić. Trzeba tylko jakoś powiedzieć Pythonowi, że jest literałem unicode; Prowadzi to u. Będzie działać nawet dla wielu znaków.

Jeśli nie mówimy o dosłownym, ale zmienna:

codepoints = '\xd3\xd3' 
print codepoints.decode("latin-1") 

Edit: Określanie konkretnego kodowania gdy print ING nie będzie działać, jeśli jest to niezgodne z kodowaniem terminala, więc po prostu niech print zrobić encode(sys.stdout.encoding) automatycznie. Dzięki @ThomasK.

+0

Ale co zrobić, jeśli masz ciąg złożony z punktów kodowych? Jak przekonwertowałbyś ciąg znaków na rzeczywistą reprezentację napisów? Czy 'u' jest funkcją? Czy możemy napisać 'u (some_string)'? – Geo

+0

@Geo: 'u' nie jest funkcją, jest częścią składni literału literackiego. Ale co to jest "ciąg złożony z punktów kodowych"? –

+0

@Thomas Edytowałem swoją odpowiedź, aby to uwzględnić. – agf