位置: 编程技术 - 正文

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

  • 车船税规定怎么缴纳
  • 小规模纳税人如何做账
  • 组成计税价应该是含税价还是不含税价?
  • 小微企业增值税起征点是多少
  • 增值税包括哪些内容
  • 国家规定先打五联还是麻腮风
  • 外来建安企业的税收管理
  • 税金及附加多计提了汇算清缴怎么办
  • 税控盘减免税有时间限制吗?
  • 出口收汇核销单取消了吗
  • 企业并购金额如何确定
  • 员工入职第一个月交社保吗
  • 增值税申报表能更正申报吗
  • 分公司注销时有未分配利润需要交税吗
  • 购销合同怎么签订
  • 购买的技术服务费需要摊销吗
  • 土地增值税清算方法与技巧
  • 公司邀请外国人来华邀请函模板
  • 资产负债表年初数和期末数代表什么
  • 收回代付费用用什么科目
  • 坏账准备确认后可以转回吗
  • 现金股利属于什么所得
  • 收到销售折让销售怎么做
  • sdi是什么文件
  • php用户登录用的什么技术
  • php防止再次刷新
  • kb5000908打印问题
  • window10下载cad2014
  • php数据库添加失败的原因
  • php自学
  • 经营租赁与融资租赁的含义
  • 高新企业政府补贴怎么入账
  • linux桌面设置界面在哪
  • linux如何管理进程
  • 视同销售货物服务无形资产
  • 扣除年度未扣除怎么计算
  • PHP:cal_days_in_month()的用法_日历函数
  • 关于扩展检索,下列说法正确的是
  • 土地价款会计分录
  • 厂房押金不退怎么要回来
  • 资本公积转增注册资本的条件
  • 生产企业 制造商
  • php对数组进行排序
  • phpsql防注入代码
  • php判断数组是否为空的函数
  • 基于stm32的毕业设计
  • 上海广为
  • 现金流是什么意思举例
  • 月末损益结转手工结转步骤
  • sql随机数字
  • centos7源码包安装
  • sql server评估期已过版本升级时重启失败
  • 残保基金什么时候申报
  • 增值税药品发票明细
  • 小规模企业税收优惠政策2022
  • 坏账准备需要计提增值税吗
  • 信用减值损失6702
  • 结转损益不平是什么原因造成的
  • 没有发票的费用怎么做凭证
  • 汽车固定资产残值率
  • mysql的json数据类型
  • sql server安全设置
  • Mac OS10.11下mysql5.7.12 安装配置方法图文教程
  • windows历代版本一览
  • 用户请愿地址曝露怎么办
  • win7桌面图标变成了lnk
  • win10预览版
  • 淘宝win10和正版的有什么区别
  • 蓝屏错误疑难解答win7
  • win8打游戏
  • windows10使用ie浏览器
  • WIN10怎么彻底删除works2
  • linux mangle
  • rmxp4droid for 天敏电视盒子
  • cocos2dx4.0教程
  • jquery 设置和返回元素属性
  • js jquery区别
  • Android属性动画缩放
  • 风力发电税收优势分析
  • 税控机发票打印机怎么用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设