位置: 编程技术 - 正文

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

  • 有经营许可无道路运输证罚多少钱
  • 缴纳所得税的账务处理
  • 应交城建税计入哪个科目
  • 税收的基本特征包括?
  • 利润分配未分配利润是什么科目
  • 营业外收入做销项税调整
  • 同一家单位发票不一样
  • 以前年度损益调整在利润表中怎么填
  • 雇佣外籍劳工
  • 支付城镇土地使用税会计科目
  • 下列应税项目中,不按次计算征收个人所得税的是
  • 长期股权投资的减值准备的会计处理
  • 待处理财产损益是什么意思
  • 分配结转制造费用会计分录怎么写?
  • 电信宽带费发票专票
  • 没有缴纳契税
  • 一般纳税人哪些项目可以简易征收
  • 广告机计入什么费用
  • 电子发票收款人和复核人可以是一个人吗
  • 存货如何处理才能避税
  • 出租车车票能进高铁站吗
  • 所得税申报填写
  • 个人转让公司限售股纳税地点要求
  • 关闭guest账户
  • 研发费中废料收入怎么处理
  • 应交企业所得税和所得税费用区别
  • win8操作系统
  • php字符串赋值
  • 进项税额转出怎么算
  • vscode怎么开始编程
  • 企业购入固定资产要交印花税吗
  • 出差午餐补助公职出差
  • 销售货物应如何记账
  • php实现文件上传下载
  • 工程收到款项会计分录
  • php魔术常量有多少
  • 数据集介绍
  • 盒子模型的概念
  • 编程前十名
  • 域名续费多久生效
  • squid 启动命令
  • 上一年的运费发票怎么开
  • 季度报是什么时候报
  • php采集器
  • 帝国主义
  • 生产企业出口转内销增值税申报表怎么填
  • 外经证是啥样
  • 企业开办费如何在税前扣除
  • 销货方怎么开红字发票
  • 筹建期间发生的借款利息
  • 分公司可以在银行贴现吗
  • 应付账款尾款怎么处理
  • 汽车以租代购可靠吗
  • 固定资产报废处理中,最终的净损益应作为
  • 关于其他应付款的问题
  • 加油卡充值发票可以抵税吗
  • 现金日记账1月份本年累计吗
  • 无形资产摊销费怎么算
  • sql server 3417错误
  • 使用sql server
  • Ubuntu14.4下Sublime Text 3无法输入中文解决方法
  • mac备忘录怎么使用
  • fedora安装xorg
  • mac虚拟机安装win10教程
  • xp硬盘安装win7系统教程
  • Win7 64位操作系统怎么使用DVD刻录光驱复制软件
  • 怎么取消桌面右下角图标隐藏
  • mac如何中文输入法
  • centos运行程序
  • windows8 8.1
  • pavfires.exe - pavfires是什么进程 有什么用
  • 英雄联盟windows10
  • python编码函数
  • nodejs视频教程大集合
  • shell脚本编程实例
  • python解决方案与程序有什么不同
  • 安卓万能插件
  • 发票代码如何查真伪
  • 增值税税率有哪些规定
  • 江西国家税务局入围体检名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设