位置: 编程技术 - 正文

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

  • 个人所得税缴纳标准税率表
  • 年终奖可以不计入年总收入吗
  • 现金折扣冲减收入吗
  • 小规模收入超过多少必须转一般纳税人
  • 团建费用途
  • 农业机耕开发票税收分类编码是什么
  • 企业为个人承担的个人部分社保
  • 个税申报系统跟工资表累计扣除数不一致怎么办
  • 固定资产盘亏造成的损失计入什么科目
  • 以前年度损益所得怎么算
  • 外购商品用于促销能抵扣吗
  • 营改增后小规模纳税人税率是多少
  • 哪些单位可以开专票
  • 银行开户存入的钱怎么取
  • 吊车费计什么科目
  • 销售不动产预收款纳税义务发生时间
  • 土地出让金如何缴纳
  • 委托出口业务的账务如何处理呢?
  • 用友u8计提企业所得税
  • 以前年度损益调整会计分录
  • 发票查询发票代码有误
  • 从对公账户转账到个人账号需要多久?
  • win7免费升级
  • 收到上级工会下拨的工会经费
  • 微软和google
  • 登陆qq网页版手机会有提示吗
  • 电脑出现一堆英文无法开机
  • 上个月做无票收入这个月开票,怎么做分录
  • windows11播放视频不清晰
  • linux系统已经得到了广泛的应用
  • 现金日记账漏记去年的利息怎么算
  • 更换电脑金税盘的数据如何导入新电脑
  • 出差补助需要发工资吗
  • es6特性及使用场景
  • PostgreSQL教程(二):模式Schema详解
  • 开票钱收不回怎么办
  • 员工持股平台合伙企业如何设立
  • 计提和支付可以录在一张凭证吗
  • 应税货物及劳务 增加
  • sql2008用ip连接不了
  • 使用pt-kill根据一定的规则来kill连接的方法
  • 甲方向乙方支付
  • 会计一般什么时候忙
  • 什么单位需要
  • 电梯安装费如何分摊
  • 销售退回所得税怎么做账
  • 稽查跨年进项税额转出要调整所得税吗
  • 非营利组织注册资金可以用吗
  • 公司按揭贷款
  • 申报系统中印花税报表怎么填
  • 汇算清缴后缴纳所得税会计分录
  • 公司买空调算什么费用
  • 员工个人买的保险可以税前扣除吗
  • 新三板奖励
  • 销售折让的会计分录
  • sqlserver数据库版本号怎么查
  • docker部署zookeeper集群
  • windows7怎么说
  • win8如何清空电脑里的所有东西
  • 联想win8一键还原系统操作步骤
  • centos 查看文件夹
  • vmware centos8
  • win8windows设置在哪里
  • win7旗舰版系统激活码
  • 360对win7支持多久
  • win7怎么删除除了系统盘所有东西
  • windows图标变化
  • eval()函数python
  • cocos 2dx
  • cocos2dx4.0入门
  • opengl arb
  • node.js怎么搭建服务器
  • 自定义控件英文
  • 编写自己的linux系统
  • div显示边框线
  • jquery 鼠标悬浮显示文字
  • jquery选择器总结
  • javascript怎么用
  • android开发和java开发区别
  • 税务全国联网了吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设