位置: 编程技术 - 正文

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

  • 中级财务管理与注会财务管理
  • 以房抵债如何计算契税?
  • 税务师考试各科老师推荐
  • 息税前利润计算每股收益
  • 母子公司合并报表的条件
  • 会计核算的具体流程
  • 房地产土地增值税计税依据
  • 土地违约金怎么写合同
  • 购买的固定资产没有使用,是否计提折旧
  • 含有增值税的工程项目
  • 固定资产贷款利率
  • 事业单位存货盘亏会计分录
  • 税控服务费的账务处理
  • 餐饮行业原材料
  • 本地开的住宿费可以退吗
  • 倒增值税发票过程
  • 所得税的税率有哪几种
  • 可以背书转让的公司
  • 分期付款购买商品
  • 缴纳投标保证金
  • 促销费属于现代服务类吗
  • 个人独资企业还是个体户好
  • 发票验证查询系统官网入口
  • 发票冲红后多交多少税
  • 计提坏账准备的科目
  • 劳务服务公司可以承包大型工程吗?
  • 预付账款供应商类别怎么填
  • linux关闭thp
  • 盈余公积必须提折旧吗
  • 入库单的金额填不填价税合计
  • 支付委托加工费用会计科目
  • 微软window
  • linux 创建sh
  • 未分配利润转增股本交印花税
  • 员工的收入
  • 原材料因管理不善发生毁损
  • 简易计税行业
  • vue数据更新会触发什么生命周期
  • 采用权益法核算
  • 布拉格下雪
  • 华硕自带win10系统
  • yii框架入门
  • 借银行卡给别人过账有什么风险
  • vue清空页面数据
  • 商贸公司用什么名字最好
  • 员工预支款计入什么科目
  • uname命令功能
  • 驱动开发做得长久吗
  • 小规模纳税人去年免税,红冲后今年开多少税率的发票
  • 可供出售金融资产新准则叫什么
  • c语言printf输出数组
  • 计提工资后面附什么
  • 企业注销了,存钱怎么办
  • 人力资本收入
  • 申请名称预先核准在哪个网站
  • 小规模纳税人可以开13的税吗
  • 医院要发票
  • 材料按计划成本计价下,外购材料结算
  • 税控设备全额抵减
  • 关于合同履约成本的表述错误的有
  • 企业进行资产评估的目的可能是
  • 登记总分类账的依据有
  • mysql数据库查看是否区分大小写
  • mysql常见优化手段
  • ubuntu 安装
  • 进入pe系统后c盘变成了e盘
  • mac怎么删除应用保留数据
  • windows7怎么说
  • wysafe.exe是什么
  • 如何返回系统
  • 老生常谈的近义词
  • 两个js文件互相取变量
  • linux tcp keepalive
  • Unity3D游戏开发基础
  • 关于批处理的说法错误的是
  • shell脚本位置变量
  • jquery下拉列表框
  • javascript面向对象编程指南第三版
  • python之父推荐的书
  • 北京共有产权房房源信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设