位置: 编程技术 - 正文

python解决汉字编码问题:Unicode Decode Error(python写汉字代码)

编辑:rootadmin

推荐整理分享python解决汉字编码问题:Unicode Decode Error(python写汉字代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python汉字输入,python写汉字代码,python汉字编码,python处理汉字,python汉字编码,python汉字编码,python处理汉字,python解决汉字编码问题client,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存文件。文档之前是由base编码,导致所有汉字读取显示乱码。项目组把base废弃之后,先后出现两个错误:

如果对于ascii、unicode和utf-8还不了解的小伙伴,可以看之前的这篇文章关于字符串和编码

那么必须对下面这三个概念有所了解:

ascii只能表示数字、英文字母和一些特殊符号,不能表示汉字 unicode和utf-8都可以表示汉字,unicode是固定长度,utf-8是可变长度 内存中存储方式一般为unicode,而磁盘文件存储方式一般为utf-8,因为utf-8可以节约存储空间

那么python的默认编码是什么?

python的默认编码是ascii,可以通过sys.setdefaultencoding('utf-8')函数设置python的默认编码。

python解决汉字编码问题:Unicode Decode Error(python写汉字代码)

python中可以通过encode和decode的方式改变数据的编码,比如:

我们可以通过这两个函数设置编码。

那么,python中的str是什么类型?

binascii是将数据的二进制转换成ascii,上面的解释是:‘汉字'的类型是str,二进制是babad7d6,u‘汉字'是无法转换成ascii,这样就报出了开头的第一个错误。解决办法就是把它.encode(‘utf-8')成str类型。因为我命令行是windows默认的GBK编码,所有u'汉字'.encode(‘gbk')的时候,输出结果和‘汉字'结果一样。

总结一下,python的str实际上是unicode的一种,python的默认编码是ascii,对于非ascii转成ascii的时候都会报错,牢记下面的规则:

unicode => encode(‘合适的编码') => str str => decode(‘合适的编码') => unicode

还有一种简单的方式,就是在文件头设置编码,可以省去很多麻烦:

对于第二个问题,是在文件读取的时候出的错。utf-8的文件有bom和无bom两种方式,两者的差别好像在bom文件比无bom文件多了一个头,导致以utf-8方式读文件时报错,我先前曾尝试读文件的时候先对有无bom进行判断,跳过bom文件的头,后来失败了,真尴尬~~。

还得上google求助大神,具体的操作方法就是使用codecs库来读文件(我猜这个库就是对文件的头进行检测)。

对于编码问题,一定要懂得ascii、unicode和utf-8工作原理。

总结

标签: python写汉字代码

本文链接地址:https://www.jiuchutong.com/biancheng/381329.html 转载请保留说明!

上一篇:python生成验证码图片代码分享(python自动化验证码)

下一篇:Python中二维列表如何获取子区域元素的组成(python中二维列表的定义)

  • 航天信息金税盘未打开
  • 房子税票是什么意思
  • 车辆购置税计入成本吗
  • 主营业务收入属于资产
  • 发票入账时间规定是多久
  • 车间领用材料应填制什么凭证
  • 未实际处置资产怎么处理
  • 收到国外提供免费样品怎么入账?
  • 免费送客户礼品的文案
  • 金融存款利率
  • 哪些进项税额不允许从销项税额中抵扣?
  • 补上年所得税加滞纳金入哪个科目?
  • 别人的项目挂靠我公司怎么做账?
  • 增值税预缴税需要申报吗
  • 增值税品目有哪些
  • 公益捐赠税前扣除政策
  • 成本利润率的计算公式中,成本费用总额包括
  • 资产总额小于所有者权益合计
  • 什么叫保理支付
  • 个人开发是什么意思
  • 长期待摊费用转入成本分录
  • win11多开
  • 公司收到医疗保障事务中心的转账
  • php中split
  • 茶叶的种类有哪些,八大茶类你都知道吗?
  • php单例模式demo
  • 用现金报销差旅费,合规吗
  • 车辆违章罚款的钱上交到那了
  • fsma32.exe进程是什么文件 fsma32是什么进程
  • PHP:imagefilledellipse()的用法_GD库图像处理函数
  • 存货销售收入
  • 展开双翅的绯红之花
  • 材料短缺计入
  • framework教程
  • css前端还是后端
  • php md5 16位
  • php搜索代码
  • 用友t6模块
  • 增值税发票超过一年未抵扣
  • mongodb 分组计数
  • 个人所得税汇算清缴
  • 出票后定期付款的汇票,其提示付款的期限为
  • 企业自查补税怎么报税
  • 个人独资企业应税生产经营所得可以扣除税金支付
  • 企业汇总纳税的原则
  • 应付劳务费怎么做账
  • 电子商业汇票背书人记载不得转让
  • 对外支付3万美元怎么算
  • 汇算清缴补交所得税的分录
  • 行政事业单位其他收入
  • 车辆检验收费
  • 收到政府的奖励企业需要纳税吗?
  • 社保个人部分应该做到哪个科目
  • 收到银行承兑汇票计入什么科目
  • 无形资产摊销如何记账
  • 个人所得税会计分录怎么做
  • 应收账款属于流动负债项目吗
  • 总账和明细账的区别与联系
  • windows锁定用户
  • win7系统运行在哪里
  • windows找不到cmd怎么办
  • winxp系统如何调整屏幕亮度
  • win8打开运行的快捷键是什么
  • 装win8还是win10
  • windows对高分屏怎么这么差
  • linux usb audio
  • windows10粘滞键
  • opengl自学
  • surf apk android
  • unity 技术
  • 处理判断字符串是否相等
  • js str.match
  • 置顶txt
  • Unite Beijing 2015大型活动
  • 每天一篇文章锻炼口才的文章
  • dom,ran
  • 关联企业签订劳动合同的次数可以累计吗
  • 税务系统电子发票的详细步骤
  • 什么是金融企业的固定推销人员
  • 当月专票作废流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设