python3 scrpy编写pipe通道时write写入编码问题。

import json

class TencentPipeline(object):
    def __init__(self):
        self.filename = open("tencent.json", 'w')

    def process_item(self, item, spider):
        text = json.dumps(dict(item),ensure_ascii = False) + "\n"
        self.filename.write(str(text.encode("utf-8")))
        return item
    def close_spider(self, spider):
        self.filename.close()
write 写入必须是str类型的,改为str了,但是读取的数据却全是编码。
在读取过程中 命令台显示的却是中文,而到文件里面却全是编码。
我不是转换了编码了吗?
没成功还是什么问题,求大佬指教。
阅读 2.9k
1 个回答

text.encode("utf-8")是把txt编码为uft-8得到的结果是bytes数组
text.encode("gkb").decode('utf-8')是把txt编码为gbk,再解码成utf-8得到str,也就是把txt从gbk编码转到utf-8编码,用decode而不是str

self.filename = open("tencent.json", 'wb')    #二进制格式打开

self.filename.write(text.encode("utf-8"))     #写入utf-8编码的二进制文件
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进