ホームページ  >  に質問  >  本文

字符编码 - python使用split(‘中文字符’)出错

根据网页所给的字符编码将其字节数据decode('gb2312')
用的是scrapy,从给出的url获取body

def parse(self, response):
    body = response.body.decode('gb2312')
    print(body)    
    学分:1.5 # body就是这样之类的,中间的冒号是中文的冒号
    # 想弄成的效果就是['学分','1.5']
    body = body.split(':') # 就这样使用中文的冒号符来分割,但是出错
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xa3 in position 0: invalid start byte

请问怎么解决?

PHP中文网PHP中文网2741日前1021

全員に返信(4)返信します

  • 大家讲道理

    大家讲道理2017-04-18 09:06:39

    リーリー

    上記のエラーをもう一度見ると、byte 0xa3
    だったので、ターミナルで何度か試してみたところ、コロン gb2312 がエンコードされていることがわかりました

    リーリー

    つまり、Python は gb2312 の本体をデコードするためにデフォルトの utf-8 を使用するはずです。そのため、私が考える 1 つの方法は、デフォルトのエンコード値を変更することです。これは最初の行のステートメントです。# -*- coding: gb2312 -*-
    これで操作は成功しましたが、他の方法はありますか?

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:06:39

    Python3

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:06:39

    デコード後、本文は Unicode エンコードされる必要があります。次の方法を使用します。

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:06:39

    もう 1 つのエンコーディングの問題については、「人間とコンピューターの対話のための文字エンコーディング」および「5 分で Python 文字エンコーディングを克服する」を参照してください。

    リーリー

    返事
    0
  • キャンセル返事