Po wpisaniu , interpreter Pythona pobiera z terminalu reprezentację tego znaku w lokalnym zestawie znaków, który przechowuje w bajcie bajt-bajt z powodu ""
. W moim systemie UTF-8 jest to . Na twoim, to jest '\xce\xd2'
, ponieważ używasz GB2312. To wyjaśnia wartość zmiennej a
.
Po wprowadzeniu u"我"
, interpreter Pythona nie wie, jakie kodowanie znaków 我
jest co robi jest prawie taka sama, jak dla zwykłego sznurka. Przechowuje bajtów znaku w ciągu znaków Unicode, interpretując każdy bajt jako kod kodowy Unicode, stąd błędny wynik: u'\xce\xd2'
(lub, na moim pudełku, u'\xe6\x88\x91'
).
Ten problem występuje tylko w Interaktywnym tłumaczu. Kiedy piszesz skrypty lub moduły w języku Python, możesz w pobliżu górnej krawędzi wpisać specify the encoding, a ciągi znaków Unicode będą wyświetlane poprawnie. Na przykład w moim systemie, następujące drukuje Słowo Liberté dwukrotnie:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(u"liberté")
print("liberté")
Jakiego terminala używasz? Nie mogę odtworzyć wyników na moim gnome-terminal Unicode ('c === u '\ u6211'') –
@ChrisMorgan I przetestować te kody w IDLE. –
może również repro this z IDLE –