我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python 字符编码与转换

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python 字符编码与转换

unicode 中文英文默认统一 2个字节

ASCII 只有英文和特殊字符 每个占用1个字节 不能存中文


每个字节由8个比特(Bit)构成


假如一个英文文档是2M,转换为unicode 编码转换,就变成了4M

为了解决空间浪费的问题,在unicode的基础上,出现了一个扩展集,叫UTF-8

UTF-8编码是可变长编码。默认所有英文字母按照ASCII的形式去存储。

所有中文字符,统一是3个字节

英文和特殊字符,依然是1个字节


unicode是万国编码,任何国家都可以使用。每个国家,编码都不一样的。

比如一款游戏《大话西游》用的是gbk编码开发的。出口到欧美国家,是无法直接运行的。

怎么办呢?把gbk转换为unicode就可以解决这个问题了。


关于字符编码与转码

请参考详细文章:

http://www.cnblogs.com/luotianshuai/articles/5735051.html


http://www.diveintopython3.net/strings.html


需知:


1.在python2默认编码是ASCII, python3里默认是unicode

2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string


下面请看一张图

blob.png



将字符串转换为gbk

s = "您好"
print(s.encode("gbk"))

执行输出

b'\xc4\xfa\xba\xc3'


可以看到输出最前面有一个b 表示这是一个二进制类型,也称之为bytes类型

那么encode("gbk"),不光是转换了编码,还转换成了二进制数据


查看gbk和utf-8的区别

import sys
#打印默认编码
print(sys.getdefaultencoding())

s = "您好"
s_gbk = s.encode("gbk")
#打印gbk
print(s_gbk)
#打印utf-8,encode()默认使用utf-8
print(s.encode())

执行输出

utf-8

b'\xc4\xfa\xba\xc3'

b'\xe6\x82\xa8\xe5\xa5\xbd'


将gbk转换为utf-8

import sys
#打印默认编码
print(sys.getdefaultencoding())

s = "您好"
s_gbk = s.encode("gbk")
print(s_gbk)
print(s.encode())

gbk_to_utf8 = s_gbk.decode("gbk").encode("utf-8")
print("utf8",gbk_to_utf8)

执行输出

utf-8

b'\xc4\xfa\xba\xc3'

b'\xe6\x82\xa8\xe5\xa5\xbd'

utf8 b'\xe6\x82\xa8\xe5\xa5\xbd'


发现转换之后,和上面的utf-8,是一模一样的。


上面的大图显示

gbk转换为utf8,需要2步

1.首先通过编码【decode】转换为unicode编码

2.然后通过解码【encode】转换为utf-8的编码


总结:

不同编码之间的转换,必须要先转换为unicode编码。

先执行decode()方法,传一个参数,告诉它,我是什么编码。

最后执行encode()方法,传一个参数,将要转换的编码是什么。


以下代码表示,声明文件编码为

# coding: gbk

在python 里面,默认声明的变量是utf-8

# coding: gbk
import sys
#打印默认编码
print(sys.getdefaultencoding())

s = "您好"
s_gbk = s.encode("gbk")
print(s_gbk)

程序执行

utf-8

b'\xc4\xfa\xba\xc3'


如果想要转换的gbk,能够正常显示

需要执行4步

print(s.encode("utf-8").decode("utf-8").encode("gbk").decode("gbk"))

这一段代码就可以正常输出中文


由于s变量,默认就是utf-8编码,不能直接使用decode()方法。

需要先执行encode("utf-8"),再执行decode("utf-8")

再执行encode("gbk"),输出

b'\xc4\xfa\xba\xc3'
由于它是一个bytes类型,需要转换为字符串,所以最后执行decode("gbk")

得到中文 您好


编码之间的转换,需要2个步骤。先decode(),再encode().

转换完成之后,数据是bytes类型的,比较恶心啊。

如果需要正常显示,得decode()一下,才能正常显示。

注意,这里是decode()是指bytes类型与string类型之间的相互转换。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python 字符编码与转换

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 字符编码与转换

unicode 中文英文默认统一 2个字节ASCII 只有英文和特殊字符 每个占用1个字节 不能存中文每个字节由8个比特(Bit)构成假如一个英文文档是2M,转换为unicode 编码转换,就变成了4M为了解决空间浪费的问题,在unicod
2023-01-30

python字符串与url编码的转换

主要应用的场景 爬虫生成带搜索词语的网址1.字符串转为url编码import urllibpoet_name = "李白"url_code_name = urllib.quote(poet_name)print url_code_name#
2023-01-31

python字符编码与转码

python 2.x 字符编码与转码打印系统默认编码格式import sysprint(sys.getdefaultencoding())UTF-8 转 gbk方式:utf-8--转成--unicode--转成--gbka = "你好"pr
2023-01-31

python字符串编码如何转换

Python中字符串的编码转换可以使用`encode`和`decode`方法。具体的操作如下:1. 字符串编码:使用`encode`方法将字符串转换为指定编码的字节序列。可以指定的编码包括`utf-8`、`gbk`等。示例如下:```pyt
2023-09-13

python中json和字符编码的转换

json是用来转换python object 和json format 的,字符编码有gb2312,gb18030/gbk,utf-8等。在 Python 中出现的 str 都是用字符集编码的 ansi 字符串。Python 本身并不知道
2023-01-31

PHP如何转换字符编码

PHP提供多种函数进行字符编码转换,如mb_convert_encoding()、iconv()、htmlentities()和html_entity_decode()。了解这些函数的用法和最佳实践至关重要,以确保文本跨平台和语言的一致性。始终明确指定目标字符编码,使用mb_convert_encoding()或iconv(),对于在网页上显示的文本,建议使用UTF-8,转换用户输入时验证字符编码以防止恶意编码。
PHP如何转换字符编码
2024-04-02

Java如何转换字符编码

本指南详细介绍了Java中字符编码转换。Java使用UTF-16编码Unicode字符。要转换字符集,需要确定源字符集、解码字节、编码字符。Java提供StringEncoder和StringDecoder等便利工具。字符编码转换注意事项包括字符集检测、数据丢失和性能影响。正确处理字符编码对于在Java中处理字符串至关重要,确保准确性和一致性。
Java如何转换字符编码
2024-04-02

php字符串如何转换编码

本篇内容主要讲解“php字符串如何转换编码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php字符串如何转换编码”吧!mb_convert_encoding函数mb_convert_encodi
2023-07-05

jquery如何转换字符串编码

本文小编为大家详细介绍“jquery如何转换字符串编码”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery如何转换字符串编码”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步:查看原始字符串编码格式在进
2023-07-05

如何将 Java 字符串转换为 utf 编码?(如何转换java字符串为utf编码)

在Java编程中,经常会遇到需要将字符串转换为utf编码的情况。UTF是一种通用的字符编码方式,它可以表示世界上几乎所有的字符。以下是将Java字符串转换为utf编码的详细步骤:一、了解utf编码UTF(U
如何将 Java 字符串转换为 utf 编码?(如何转换java字符串为utf编码)
Java2024-12-16

VBS字符串编码转换函数代码

这篇文章主要介绍了vbs字符串在不同编码之间的转换,包括 ISO-8859-1,UTF-8,GBK,GB2312,GB18030之间的转换,需要的朋友可以参考下
2023-05-15

Python中的字符串与字符编码

Hello,这里是Token_w的博客,欢迎您的到来 今天文章讲解的是Python中的字符串与字符编码,其中有基础的理论知识讲解,也有实战中的应用讲解,希望对你有所帮助 整理不易,如对你有所帮助,希望能得到你的点赞、收藏支持。感谢
2023-08-30

php如何转换字符编码为utf8

这篇“php如何转换字符编码为utf8”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“php如何转换字符编码为utf8”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让
2023-06-06

SQL优化-隐式字符编码转换

对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。
索引SQL字符2024-12-02

php字符串转换编码的方法

这篇“php字符串转换编码的方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php字符串转换编码的方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起
2023-06-06

Python基础知识大全:字符编码转换、函数

  字符编码转换  字符编码转换最重要的一点就是,切记unicode是编码之间的中转站,若unicode不是目标编码或者原始编码,那么任何两个编码相互转换都需要经过unicode(见下图)。  需要注意的是,python的默认编码是ASCI
2023-06-02

Python时间戳转换为字符串与字符串转换为时间戳

在编写代码时,往往涉及时间、日期、时间戳的相互转换,下面这篇文章主要给大家介绍了关于Python时间戳转换为字符串与字符串转换为时间戳的相关资料,文中给出了详细的实例代码,需要的朋友可以参考下
2023-02-15

Python编码转换

Python常用的编码格式有3种:unicode,utf-8,gbk有些时候因为某些需要,就例如我们用的是utf-8的编码格式编写的脚本,需要在Windows终端中运行,而Windows终端默认的编码格式是GBK,这时候我们就要把编码转换一
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录