Questo funziona bene per me in Python 2.7, fornito name
è un unicode()
valore:
>>> ord(u'\u4e00') < 0x4e00
False
>>> ord(u'\u4dff') < 0x4e00
True
Non è necessario usare ord
qui se si confronta il personaggio direttamente con valori Unicode:
>>> u'\u4e00' < u'\u4e00'
False
>>> u'\u4dff' < u'\u4e00'
True
I dati di una richiesta in entrata non sono stati ancora decodificati o unicode, devi prima farlo. Esplicitamente impostare l'attributo accept-charset
sul tag form per garantire che il browser utilizza la codifica corretta:
<form accept-charset="utf-8" action="...">
poi decodificare i dati sul lato server:
name = self.request.get('name').decode('utf8')
fonte
2013-05-08 13:14:43
È 'name' una stringa unicode o una stringa di byte? Non devi usare 'ord' qui, btw:' se ch u '\ u9fff': 'funziona anche. –
Correlato: http://stackoverflow.com/questions/16027450/is-there-a--a-to-know-whether-a-unicode-string-contains-any-chinese-japanese-ch/16028174#16028174 – Daenyth