位置: 编程技术 - 正文

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

  • 企业名称税号
  • 非金银首饰以旧换新增值税
  • 印花税购销合同减半征收政策
  • 新办企业发票核定及申领,选否行吗
  • 人工费用包括哪些科目
  • 红字发票抵扣联丢了怎么办
  • 金三财务报表如何更正
  • 小规模纳税人30万含专票吗
  • 收到外境来电
  • 一般纳税人增值税申报操作流程
  • 银行承兑汇票背书可以拆分
  • 合同金额与结算金额一致,如何约定
  • 税收的六大作用
  • 股本权益性投资是什么
  • 库存商品变价出现原因
  • 委托、受托出口做账有哪些事项?
  • 公司之间转让股权,两家股东一样
  • 发票认证了还能退回吗
  • 刷卡手续费可以开经纪代理服务费吗
  • 增值税从哪一年开始征收的
  • 文化事业建设费减免政策
  • 退休人员再就业受伤算工伤吗
  • 包吃伙食费会计分录
  • 碎片化对应什么
  • PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
  • 招标场地费怎么收
  • 固定资产和低值易耗品的登记和管理咋弄?
  • 预收的购货款属于收入吗
  • PHP:pg_affected_rows()的用法_PostgreSQL函数
  • windows 11 build 21996.1 dev
  • PHP:zip_read()的用法_Zip函数
  • 企业收入的具体表现
  • 发票联和抵扣联区别
  • 毛地黄长什么样
  • php bind_result
  • php操作json
  • 一文教会你何为重绘、回流?
  • 商贸公司销售
  • js实现dialog
  • vs命令参数
  • 个人给境外公司付款
  • 可供出售金融资产的会计处理
  • 运费已付发票未到会计分录
  • 帝国cms什么语言
  • 给第三方的销售怎么做
  • 2022最新款带采集功能抖音壁纸小程序源码
  • c#连接数据库的基本步骤是什么
  • 受托代销商品的代销方式有哪两种
  • 暂估入库的会计分录怎么写
  • 实收资本账务处理错误可以调减吗
  • 上年度固定资产费用化了,财报怎么算
  • 非公司股东可以分红吗
  • 咨询公司评估选择标准
  • 招待客人的住宿叫什么
  • 母公司与子公司的区别
  • mysql索引类型及原理
  • 阿里云ecs centos sysctl
  • windows8使用教程
  • wind10手机
  • ubuntu怎么用
  • 手动清洁cmos
  • nvm是啥
  • win7系统安装无法继续怎么办
  • win8系统升级后怎么退回
  • xp系统组策略怎么打开
  • win7的语言栏不见了
  • opengles版本过低怎么办
  • 推荐10 个很棒的电影
  • android平台搭建
  • python2网络编程
  • JavaScript中Number.MIN_VALUE属性的使用示例
  • javascript的
  • unity 3d游戏开发(第2版)
  • js修改url
  • 座机怎么查来电显示号码
  • 福建2021年水利水电招聘
  • 全国税务系统全面从严治党工作会议2023年
  • 本季度可以弥补上季度亏损吗
  • 北京朝阳区国税局
  • 北京朝阳国家税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设