2013-10-29 22 views
8

Python3, python2 değilken vekil çiftleri reddetmek için unicode davranışını değiştirdi.python2'de surrogateescape nasıl yapılır

bir soru

here var Ama python2 ya da ne kadar vekil kaçış yapmak için vekil çiftlerini kaldırmak için nasıl bir çözüm kaynağı yoktur.

Python3 örnek:

>>> a = b'\xed\xa0\xbd\xe4\xbd\xa0\xe5\xa5\xbd' 
>>> a.decode('utf-8', 'surrogateescape') 
'\udced\udca0\udcbd你好' 
>>> a.decode('utf-8', 'ignore') 
'你好' 

burada '\ xed \ xa0 \ XBd' uygun utf-8 karakter değil. Ve onları görmezden gelmek veya onlardan kaçmak istiyorum.

Aynı şeyi python2'de yapmak mümkün mü?

+0

Tam olarak ne yapmak istiyorsunuz? Net değil. Bir örnek verin. –

+0

@MarkTolonen Bir örnek ekledim. – lxyu

+0

'\ udc00' ve '\ udfff' arasındaki tüm karakterleri kaldırmak için kodu çözülen unicode nesnesinin post-processing işleminden daha iyi bir yol göremiyorum. –

cevap

5

hiçbir yerleşik çözüm yoktur, ancak piton-gelecekte surrogateescapes bir uygulamasıdır vardır: https://github.com/PythonCharmers/python-future

ithalatında from future.utils.surrogateescape import register_surrogateescape ekleyin. Ardından, register_surrogateescape() yöntemini çağırın veve decode'daki errors='surrogateescape' hata işleyicisini kullanabilirsiniz.

Örnek göster here