位置: 编程技术 - 正文

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

  • 递延所得税资产借贷方向
  • 企业视同销售的税法依据是什么?
  • 进仓费税率
  • 销项税能抵扣么
  • 工程施工的借方和贷方
  • 实收资本增加的印花税
  • 物流公司主营业务范围
  • 土建工程管理费取费基数
  • 金融资产转回
  • 外购货物应抵扣的进项税额税率
  • 劳务派遣公司税务
  • 增值税广告服务包括哪些内容
  • 新成立公司注资流程
  • 对方公司不能开发票怎么办
  • 个人转租房屋的法律规定
  • 投标人组织结构怎么填写
  • 住房公积金是全部提取还是留一部分
  • 营业收入中包括营业外收入吗
  • 应收账款未计提坏账,但是确实收不回来
  • 补充养老保险计算器
  • 结余资金财政收回如何做账
  • 资产计税基础是怎么填
  • 财务部水电费会计分录
  • 基本社会保障性缴款包括什么
  • 当收到转账支票时,应该如何处理?
  • 支付固定资产运杂费计入什么科目
  • 生产成本可以结转到其他业务成本吗
  • macos10.15.7更新
  • 年末资产减年初资产
  • 加工费的会计处理
  • 跨年的费用怎么做账
  • 传递优化的作用
  • 差旅费是否可以所得税前扣除
  • 委托加工物资企业收回自用
  • 营业利润是怎么计算的?
  • 原生php写接口
  • PHP:imagecolorat()的用法_GD库图像处理函数
  • 浏览器并发请求队列数量怎么设置
  • java中ne
  • 借应付职工薪酬贷其他应收款
  • /etc/php-fpm.d/www.conf 配置注意事项
  • thinkphp整合layui
  • 谷歌浏览器跨域解决方案
  • javascript百炼成仙免费
  • 进入微信小程序
  • vue全家桶学多久能上手项目
  • 工作服钱可否收取
  • 合伙企业退伙个税
  • 对公账号可以绑定微信提现吗
  • mysql select语法的使用
  • 应交税费应交增值税的三级科目有哪些
  • mysql 的load data infile
  • 小规模纳税人的条件
  • 辅助生产车间的低值易耗品计入
  • 职工福利费计提标准是多少
  • 税务房屋租赁发票的开具规定
  • 培训奖励怎么写
  • sql server数据导入导出的特点
  • sql-3
  • sql分几类
  • lsass exe
  • Windows update更新服务启动被拒绝访问
  • win10怎么设置窗口颜色和外观
  • win7系统咋样
  • 双硬盘 win10
  • windows2008输入法
  • Android游戏开发读后感
  • Unity3D游戏开发引擎
  • 相同目录
  • 搭建oj
  • 安卓白屏问题有哪些
  • python不同进制的整数之间可以直接运算
  • 演艺明星
  • 如何下载成品油库存
  • 个人所得税赡养老人可以填两个吗
  • 河南查询税务登记怎么查
  • 社保诚信申报怎么取消
  • 开票软件里的统计怎么弄
  • 代理记账公司里的公司文件盒书写样式图片
  • 怎么申请浙江长沙健康码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设