位置: 编程技术 - 正文

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中二维列表的定义)

  • 车辆购置税退税申请模板
  • 增值税纳税申报时间
  • 收到出口退税款如何入账
  • 非营利组织企业所得税
  • 个体工商户所得税核定征收2023
  • 税务师的含金量怎么样
  • 固定资产的折旧费用计入什么科目
  • 财务报表与分析课后答案
  • 职业年金单位缴费方式
  • 未使用固定资产计提折旧计入
  • 个人收到利息要交增值税吗为什么
  • 小规模给一般纳税人开专票能抵扣吗
  • 免征土地增值税
  • 购买大型设备的会计科目
  • 营改增后预存话费可以报销吗?
  • 付款金额比发票金额少怎么办
  • 应收账款贷方余额表示什么
  • 项目上发生伙食问题
  • 小规模纳税人出售使用过固定资产
  • 物业公司代收电费标准
  • 公司食堂买菜入什么科目
  • 增值税普通发票几个点
  • 承兑汇票重复背书
  • 工资可以一次性计提全年的吗
  • 外账的银行存款怎么处理
  • 薪酬支出包括什么
  • 购买收益权如何缴税
  • Linux系统怎么调整屏幕亮度
  • 结转本月主营业务收入800000元,营业外收入2500元
  • 防伪税控开票系统技术维护费
  • PHP:mb_ereg_match()的用法_mbstring函数
  • kb4499164安装失败怎么办
  • 电脑dat文件怎么打开
  • 确认的政府补助怎么入账
  • 行政事业单位资产负债表
  • php模糊查询txt文本
  • php页面刷新代码
  • php数组转树
  • 遍历队列中所有数据元素
  • 微信认证费是什么意思
  • 微服务docker打包规范
  • 增值税专用发票和普通发票的区别
  • 冲掉应收账款
  • 资产减值损失属于营业外支出吗
  • 代开运输发票会不会造成重复征税
  • 修改账本
  • 公司境外汇款该怎么处理
  • 职工福利费允许抵扣吗
  • 工业企业存货核算方法
  • ado连接access数据库
  • 企业计提固定资产折旧以什么假设为前提
  • 企业所得税汇算清缴会计分录
  • 金税盘抵扣的结转会计分录
  • 不征税收入怎么做会计分录
  • 金税盘分盘可以全额抵扣吗
  • 公司组织出国旅游很差吗
  • 核定征收企业有没有自然人电子税务
  • 红字发票如何做进项税转出
  • 信用卡什么情况下会降额度
  • 收到货款就必须付货款吗
  • 提前还贷款计算机
  • 银行承兑汇票托收凭证
  • 会计做内账的技巧与方法
  • 记账凭证的基本内容包括制证,审核,记账,会计主管
  • sel 日志
  • win10开机自动弹出设置界面
  • Mac怎么去掉开机密码
  • win10 20h2 v2
  • 如何将win7系统装进移动硬盘
  • 利用命令查看虚拟机的信息
  • unity制作ar手机游戏
  • android edittext被系统键盘遮挡
  • [置顶]bilinovel
  • 手把手教怎么说
  • static function FindObjectsOfType (type : Type) : Object[]
  • bootstrap学习
  • 对供热企业相关规定
  • 增值税申报表如何填报
  • 遏制新增
  • 中俄改订条约收回哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设