终南山老狼 2020-07-05 22:35 采纳率: 0%
浏览 123
已结题

str.decode('utf-8') 和 sys.setdefaultencoding('utf8') 有什么区别,为什么第一种方式会报错。

百度了很久,setdefaultencoding的作用说是encode之前会用默认的编码方式先解码

第一种方式报错

datas = json.loads(datas)
name = datas['data']['travel'][0]['surname']
name = urllib.unquote(name).decode('utf-8').encode('raw-unicode-escape')
报错信息
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

第二种不报错

import sys
reload(sys)
sys.setdefaultencoding('utf8')
name = datas['data']['travel'][0]['surname']
name = urllib.unquote(name).encode('raw-unicode-escape')

直接指明decode的解码方式为什么不行?

decode('utf-8')的作用和# -*- coding: UTF-8 -*-这个声明的作用是一样的吗?

encode之前默认的解码,和decode的解码不是一个东西?

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-07-06 15:10
    关注

    第一个方法报错的原因是name 不是标准的utf8,可能混合了别的字符

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?