python printf中文乱码

目录

  • 编码方式
    • Ascii
    • Unicode
    • utf-8
    • gbk
    • 总结
  • 使用方式
    • 编码对象转换的基本逻辑
    • Ascii & Unicode & utf-8 & gbk
  • Reference

在使用python开发上位机软件的时候,发现ARM发送的printf语句,只要打印中文,上位机软件就是乱码显示,仔细研究了一下相关资料,解决了该问题,这里和大家一起分享一下经验~

编码方式

在python中最常见的编码方式有四种,分别是ascii, unicode, utf8和gbk。

Ascii

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 -1 = 255,所以,ASCII码最多只能表示 255 个符号。

Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode规定所有字符和符号最少使用2字节(16 bites)来表示。

utf-8

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。

gbk

gbk,也是基于Unicode编码的进一步优化,其文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示。

总结

在这里可以将这四种编码方式的特点放在如下表格里进行总结和比较:
在这里插入图片描述

使用方式

编码对象转换的基本逻辑

在计算机内存中,统一使用Unicode编码,Python的字符串类型是str,一个字符对应若干个字节。当需要保存到硬盘或者需要COM传输的时候,就转换为UTF-8或GBK编码(bytes),可以节省空间。这个时候就需要把str变为以字节为单位的bytes。
因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode 编码(encode)成另一种编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒的电磁波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值