返回顶部
首页 > 资讯 > 后端开发 > Python >Python13 字符转编码
  • 892
分享到

Python13 字符转编码

字符 2023-01-31 05:01:49 892人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

编码: 最开始电脑的字符集是ASCII,英文在ASCII中每个字母占1个字节,但ASCII不支持中文,所以后来出现了Unicode; Unicode中 英文和中文都占用两个字节,对于英文来说不合理,所以在Unicode的基础上出现了Unic

编码:

最开始电脑的字符集是ASCII,英文在ASCII中每个字母占1个字节,但ASCII不支持中文,所以后来出现了Unicode;

Unicode中 英文和中文都占用两个字节,对于英文来说不合理,所以在Unicode的基础上出现了Unicode的扩展集UTF8;

UTF8中,英文如同ASCII一样,每个字母只占了1个字节,而每个中文占了3个字节;

目前中国windows系统默认都是使用GBK字符集,如果一个软件使用的是GBK来开发的话,放到其他国家的电脑系统中,软件中的中文就会以乱码显示,因为其他国家电脑默认是不支持BGK的;

Unicode这个字符集所有国家电脑系统都支持,所以当想要把通过GBK开发的软件的中文,能在其他国家电脑中正常你显示就需要先将GBK转成Unicode,然后其他国家电脑系统可以用Unicode转成他们支持的字符集,反之亦然。

image_1c0ahauif1lmg115k1fmv8ik1r4q9.png-78.3kB
如图:一个编码想转成另一个编码,必须先decode成Unicode,然后在encode成其他编码。

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

image_1c0ahbpft1sq7tap19co9hajqm.png-0.8kB
python3中,默认是utf-8(utf-8属于unicode的扩展集)


python2编码

import sys
print (sys.getdefaultencoding())

image_1c0ahe0kj199s1hd2p8hidd4h413.png-0.8kB
Python2中,默认是ascii

image_1c0ahee8t1u0c91n1nev181l1m1t1g.png-15.2kB

image_1c0ahelvbmlt1mhj4qe1msb18rm1t.png-19kB
在python2中,设置编码为utf-8;
写一个变量,这个变量会因为设置的原因,现在是utf-8
我们直接将这个变量(utf-8)进行转码到gbk,但是可以看到转码错误;正常转码之前,应该先解码成Unicode,但是我们这里没有做解码的操作,不过这里会自动做一个解码的操作,但这个自动解码的操作使用的是系统默认的ascii来解码,可我们的变量是utf-8,所以这里报错解码失败。

image_1c0ahfa8bs9t1f2a12b11gbq1ql42a.png-16.3kB
b = a.decode('utf-8') #这里指定源编码是utf-8,以utf-8为源编码转成unicode
image_1c0ahfpah1u3j107jp9iinm15ca2n.png-3.6kB
这里我们先做一个解码操作,打印之后,我们可以看到打印type(b)可以正常显示是unicode,而打印的b却不正常,这是因为可以看到打印出来的是元组,unicode编码在元组中不会显示中文,只会以编码形的格式显示,在格式的前面有一个u,表示unicode;

 print (b)     #需要单独打印b,才不会以元组的形式打印

image_1c0ahgnm0m26u8n1c4p1m8di4p34.png-0.4kB

c = b.encode('gbk')        #将unicode转成gbk
print (c)

image_1c0ahhbo18mptsc1thb1rua1jnj3h.png-0.7kB
打印出来的是乱码,这是当前PyCharm调整了编码模式为utf-8,所以打印gbk出来时是乱码

image_1c0ahhnvv1n4ul2a1c3toak1ul53u.png-73.7kB
把pycharm改成GBK咋打印gbk就不是乱码了

image_1c0ahi25e73e100e1oel1c9e1sv44b.png-8.8kB

c = b.encode('gbk')     #从unicode转成gbk

image_1c0ahimgh7ug19sqrqq18m71g4h4o.png-5kB
已经看到打印gbk不是乱码了,同时打印b(unicode)也同样不是乱码,这是因为unicode可以兼容所有编码,所以不会是乱码,如果这里是assic就会是乱码了

f = c.decode('gbk').encode('utf-8')    #将当前的gbk解码为unicode,然后在编码为utf-8
print (f)

image_1c0ahj91b132o118o1pnb1pg5std55.png-0.5kB
打印出来是乱码

image_1c0ahjmju1303eohbejsn9q965i.png-55.2kB
image_1c0ahk7bc1a1ehukiebintuo25v.png-5.5kB
可以看到最后打印utf-8的已经不是乱码了; 不过在之上的gbk就成乱码了。

x = u'一二三'            #在'一二三'前面有个u,表示直接转码为unicode
print (x)

image_1c0ahl5421f866n46fphj417gs6s.png-0.3kB
可以看到unicode在utf-8编码下也能正常显示。
y = x.encode('gbk') #unicode编码可以直接encode为其他编码
print (y)


python3编码

import sys
print (sys.getdefaultencoding())            

#python3默认就属于unicode,utf-8属于unicode的扩展集,所以也算是unicode

a = '哈喽'

print (a.encode('gbk'))            #unicode可以直接转成其他编码

image_1c0ahmq861ifeo568n11oti1kk179.png-2.6kB
转成编码后因为当前pycharm是unicode,所以没有正常显示。
前面有个b,表示被转成bytes类型

image_1c0ahnb241vcv1himi9815e1coe7m.png-9kB
在pycharm的右下角可以直接转换编码为gbk,这里只是将文件编码转为gbk和程序的编码无关

image_1c0ahnlu4nne4l71huv9r01a5a83.png-18.9kB
再去执行的时候,发现报错,这是因为之前写代码的时候默认是unicode,现在已经转换成gbk了,但是代码还是根据默认unicode来写的;

image_1c0aho9db13vpri1jknli2l9h8g.png-11.8kB
所以要在文件开头进行声明,文件编码是gbk,注意这里只是声明文件编码是gbk和程序编码无关;
目前python3程序默认还是unicode

image_1c0ahonmh1ed5oi312bta31dfo8t.png-2.6kB
目前a = '哈喽'还是属于unicode(因为python3默认是unicode)

image_1c0ahp6c81hfi18mk9cd1nb11tjf9a.png-24.2kB
可以看到因为当前a属于unicode,所以不能做decode操作(图中没有decode可选)

image_1c0ahphbh1tpl4m6u8mloc1k3n9n.png-12.1kB
从unicode转成gbk
image_1c0ahpq373s11vdqb4tnq414rta4.png-2.2kB
当前是bytes类型的数据,所以无法显示字符串

image_1c0ahqbgtrq41q61bfn1k4o1132ah.png-17.1kB
image_1c0ahqgie1gcd4a61haj1hmn1dooau.png-4.4kB
注意在python3中,encode后不光转了编码,还将数据编程bytes类型

image_1c0ahqu346u28r4154qhil1pelbb.png-15.1kB
image_1c0ahr4l318h615fb804nn1m7gbo.png-4kB
decode一下就可以显示中文字符串了。


windows默认是gbk
linux默认是utf-8
python2默认是ascii
python3默认是unicode

最终要记住的就是,无论在python2还是在python3上,要做的是确认当前使用的编码集,任何非unicode编码集都要decode成unicode,然后通过unicode在encode成想要的编码集;

如果当前直接就是unicode,可以直接encode想要的编码集。

在python3上默认是unicode,中文和英文都按照两个字节存储,通过声明 -- coding:utf -8-- ,编码就为utf-8了,这样英文存储为1个字节,中文为3个字节。

--结束END--

本文标题: Python13 字符转编码

本文链接: https://lsjlt.com/news/188787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python13 字符转编码
    编码: 最开始电脑的字符集是ASCII,英文在ASCII中每个字母占1个字节,但ASCII不支持中文,所以后来出现了Unicode; Unicode中 英文和中文都占用两个字节,对于英文来说不合理,所以在Unicode的基础上出现了Unic...
    99+
    2023-01-31
    字符
  • python字符编码与转码
    python 2.x 字符编码与转码打印系统默认编码格式import sys print(sys.getdefaultencoding())UTF-8 转 gbk方式:utf-8--转成--unicode--转成--gbka = "你好" ...
    99+
    2023-01-31
    字符 python
  • python 字符编码与转换
    unicode 中文英文默认统一 2个字节ASCII 只有英文和特殊字符 每个占用1个字节 不能存中文每个字节由8个比特(Bit)构成假如一个英文文档是2M,转换为unicode 编码转换,就变成了4M为了解决空间浪费的问题,在unicod...
    99+
    2023-01-30
    字符 python
  • python字符串编码如何转换
    Python中字符串的编码转换可以使用`encode`和`decode`方法。具体的操作如下:1. 字符串编码:使用`encode`...
    99+
    2023-09-13
    python
  • java字符串怎么转gbk编码
    在Java中,可以使用String.getBytes(String charsetName)方法将字符串转换为指定编码的字节数组。要...
    99+
    2023-10-18
    java
  • jquery如何转换字符串编码
    本文小编为大家详细介绍“jquery如何转换字符串编码”,内容详细,步骤清晰,细节处理妥当,希望这篇“jquery如何转换字符串编码”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步:查看原始字符串编码格式在进...
    99+
    2023-07-05
  • php字符串如何转换编码
    本篇内容主要讲解“php字符串如何转换编码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php字符串如何转换编码”吧!mb_convert_encoding函数mb_convert_encodi...
    99+
    2023-07-05
  • VBS字符串编码转换函数代码
    因为业务需要将一些字符串转换为指定编码方便后期操作 核心代码 Const adTypeBinary = 1 Const adTypeText = 2 ' accept a stri...
    99+
    2023-05-15
    VBS编码转换 vbscript编码转换
  • 字符编码
    计算机基础 文本编辑器存取文件的原理 1.打开编辑器就打开启动了一个进程,是在内存中,所以,用编码器编写的内容也都存放在内存中的,断电后数据丢失。 2.要想永久保存,需要点击保存按钮:编辑器把内存的数据拴到硬盘上。 3.早我们编写一个...
    99+
    2023-01-31
    字符
  • php字符串转换编码的方法
    这篇“php字符串转换编码的方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php字符串转换编码的方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起...
    99+
    2023-06-06
  • python中文字符如何转url编码
    目录如何将中文字符转url编码python url编码和url解码方法函数介绍编码解码总结如何将中文字符转url编码 import urllib.parse name = urlli...
    99+
    2023-02-01
    python中文字符 中文字符转url编码 python url编码
  • python字符串与url编码的转换
    主要应用的场景 爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet_name) print url...
    99+
    2023-01-31
    字符串 python url
  • python中json和字符编码的转换
    json是用来转换python object 和json format 的,字符编码有gb2312,gb18030/gbk,utf-8等。在 Python 中出现的 str 都是用字符集编码的 ansi 字符串。Python 本身并不知道 ...
    99+
    2023-01-31
    字符 python json
  • php如何转换字符编码为utf8
    这篇“php如何转换字符编码为utf8”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“php如何转换字符编码为utf8”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让...
    99+
    2023-06-06
  • PHP预定义字符串转HTML编码
    ...
    99+
    2024-04-02
  • MySQL--字符编码和字符集
    前言: 一般来说,出现中文乱码,都是客户端和服务端字符集不匹配导致的原因。(默认未指定字符集创建的数据库表,都是latinl字符集, 强烈建议使用utf8字符集)  保证不出现乱码的思想:保证客户端、服务端...
    99+
    2024-04-02
  • Python3 字符编码
    原文出处:http://www.cnblogs.com/284628487a/p/5584714.html编码字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才...
    99+
    2023-01-31
    字符
  • python字符编码
    近期接触到python的编码相关的东西,发现自己了解的不是太系统,故通过搜索资料做了一些总结。 字符编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位...
    99+
    2023-01-31
    字符 python
  • MySQL字符串转为base64编码的方法
    本文主要给大家介绍MySQL字符串转为base64编码的方法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL字符串转为base64编码的方法...
    99+
    2024-04-02
  • 浅析php字符串怎么转换编码
    在Web开发过程中,经常会遇到需要将字符串编码转换的情况,比如将ISO-8859-1编码的字符串转换为UTF-8编码的字符串。在PHP中,提供了一些函数来处理字符串编码转换的问题。本文将介绍如何使用PHP将字符串编码转换为另一种编码。mb_...
    99+
    2023-05-14
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作