8

Python3 は Unicode の動作を変更して、サロゲート ペアを拒否しましたが、python2 は拒否しませんでした。

ここで質問があります

しかし、python2 でサロゲート ペアを削除する方法やサロゲート エスケープを行う方法についての解決策は提供されません。

Python3 の例:

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

ここの「\xed\xa0\xbd」は適切な utf-8 文字ではありません。そして、私はそれらを無視するか、それらを回避したい.

Python2で同じことをすることは可能ですか?

4

1 に答える 1

5

組み込みのソリューションはありませんが、python-future にはサロゲートエスケープの実装があります: https://github.com/PythonCharmers/python-future

from future.utils.surrogateescape import register_surrogateescapeインポートに追加します。次にメソッドを呼び出すと、とでエラー ハンドラをregister_surrogateescape()使用できます。errors='surrogateescape'encodedecode

例はここにあります

于 2015-02-04T17:14:57.910 に答える