Python2中编码问题

因为计算机只识别01这要的二进制,所以在计算机存储我们的文件时,要使用二进制数来表示。所以编码就是哪个二进制数表示哪个字符:

  • 编码原由
  • 系统编码、文件编码与python系统编码
  • Python字符编码
  • python中的字典、数组转字符串中的中文编码

编码原由

ASCII编码
最早出现的是ASCII码,使用8位二进制数组合表示128种字符。因为ASCII编码是美国人发明的,当初没考虑给别的国家用,所以,它仅仅表示了所有美式英语的语言字符。但是没有使用完。

ISO 8859-1/windows-1252
128位字符满足了美国人的需求,但是随之欧洲人加入互联网,为了满足欧洲人的需求,8位二进制后面还有128位。这一段编码我们称之扩展字符集,即ISO 8859-1编码标准,后来欧洲的需求变更,即规定了windows-1252代替了ISO 8859-1

GB2312
然后当我国加入后,8位二进制(即一个字节)用完了,于是我们保留ASCII编码即前128位,后面的全部删除。因为我国得语言博大精深,所以需要2个字节,即16位才能满足我们得需求,所以当计算机遇到大于127的字节时,就一次性读取两个字节,将他解码成汉字。即GB2312编码

GBK
相当于GB2312的改进版,增添了中文字符。但还是2个字节表示汉字

GB18030
为了满足日韩和我国的少数民族的需求,对GBK的改进,使用变长编码,要么使用两个字节,要么使用四个字节。

Unicode
虽然每种编码都兼容ASCII编码,但是各个国家是不兼容的。于是出现了Unicode,它将所有的编码进行了统一。它不能算是一种具体的编码标准,只是将全世界的字符进行了编号,并没有指定他们具体在计算机种以什么样的形式存储。
它的具体实现有UTF-8,UTF-16,UTF-32等。

系统编码、文件编码与python系统编码

在linux中获取系统编码结果:

Windows系统的编码,代码页936表示GBK编码

可以看到linux系统默认使用UTF-8编码,windows默认使用GBK编码。Linux环境下,文件默认使用UTF-8编码。当然你也可以指定文件编码方式。

Python解释器内部默认使用的ASCII编码方式去解读python源文件。

所以当文件内存在非ASCII字符时,python解释器无 法识别,就会出现编码错误。

So,这个时候需要告诉python解释器用utf-8去解读python源文件

Python字符编码

Python2中有两类字符串,分别是str与unicode。这两类字符串都派生自抽象类basestring。
Str即普通字符串类型

在字符串前加上u即unicode编码

在代码中通常用到的是unicode,文件保存的是utf-8编码。Unicode编码是固定2个字节代表一个字符。Utf-8是对英文只用一个字节,对中文是3个字节。所以unicode运行效率高,utf-8运行效率相比要低,但是空间存储要小。

Python中str与unicode转换

Unicode转str

str转unicode

其函数中参数UTF-8是,以utf-8编码对unicode对象解码,或编码。

python中的字典、数组转字符串中的中文编码

当字典中的中文字符是unicode类型时




decode(“unicode-escape”)相当是反向编码.然后再进行utf-8编码即可
当字典中的字符串是string类型时

name = {"name": "中国"}
name = str(name)
print name.decode("string-escape")


当数组进行字符串化时

最后总结:不管是数组还是字典,在进行字符串转换是,即是又一次编码,所以,对于本身还有的中文字符串又一次编码,所以要进行一次反编码,才能看到原有的编码.

根本解决Python2中unicode编码问题相关推荐

  1. python2中的unicode_在python2中的编码

    在python2中的编码 #_author:star #date:2019/10/29 ''' 字符编码: ASCII:只能存英文和拉丁字符, gb2312:只能6700中文,1980年 gbk1.0 ...

  2. js与html编码不同,js与html中unicode编码的使用

    [转]javascript和html中unicode编码和字符转义的详解 不是十分理解unicode和html转义的情况下,可能会误用,所以下面会对它们再做比较容易理解的解释: 1.html中的转义: ...

  3. web前端css伪元素使用阿里iconfont中Unicode编码

    web前端css伪元素使用阿里iconfont中Unicode编码 在阿里iconfont中创建项目 新建项目 搜索自己想要的图标并添加入库 点击购物车 添加至项目 回到"我的项目" ...

  4. python中unicode编码怎么用_详解Python2.x中对Unicode编码的使用

    我确定有很多关于Unicode和Python的说明,但为了方便自己的理解使用,我还是打算再写一些关于它们的东西. 字节流 vs Unicode对象 我们先来用Python定义一个字符串.当你使用str ...

  5. python中文转到ascii码_解决Python2中文ascii编码的方法

    在YiiChina签到的时候,经常会看到有人在说说里面发群主是最帅的,yii 是 PHP 最好的框架,没有之一,就想到使用一言,在每天签到的时候也发一句话 同时使用方糖将内容推送到微信,防止有什么不对 ...

  6. python的unicode编码表_python中Unicode编码初探

    上一篇文章主要讨论了字符编码的不同方式,这一篇文章着重谈谈对python的编码解码的理解. python2 在python2中主要有两种类型的字符类型,一个是str,一个是Unicode.平时我们默认 ...

  7. java中unicode编码和utf8编码相互转换

    1,在开发中经常会遇见有些编码使用到unicode编码的,而与我们日常使用的utf8编码不一致 2,代码 /*** <p>转为unicode 编码<p>** @param st ...

  8. JavaScript中Unicode编码和中文相互转换

    Unicode转换 简介 官方中文名称为统一码,也译名为万国码.国际码.单一码,是计算机科学领域的业界标准.它整理.编码了世界上大部分的文字系统,使得电脑可以用更为简单的方式来呈现和处理文字. Uni ...

  9. python json unicode_python2下解决json的unicode编码问题

    基础知识: 序列化--json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为json字符串) 反序列化--json ...

最新文章

  1. 《爱情公寓2》将播 恶搞宣传片大喊“有种别看”
  2. VS2017创建Linux项目实现远程GDB调试
  3. 用MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()
  4. linux可以生成pdb调试信息吗,Linux通过使用pdb简单调试python计划
  5. Angular 项目里的 tsconfig.json
  6. Android自定义实现FlowLayout
  7. MSSQL数据库设计心得
  8. 国内程序员工资是不是被高估了?为什么美国程序员工作少工资高?
  9. RegisterHotKey在XP系统下的运行问题
  10. 达州铭仁园2021年高考成绩查询,2021年达州铭仁园中学升学率高不高?
  11. 三年一个人使用虚幻引擎(UDK)开发的一个游戏心路
  12. Java拦截器验证失败时返回Json格式数据
  13. Excel常用公式之LOOKUP
  14. Restful API设计指南
  15. windows下服务或SYSTEM权限读取当前用户注册表HKEY_CURRENT_USER
  16. 如何接吻 接吻技巧 接吻方法大全
  17. 高斯过程与高斯分布什么关系?
  18. 【Datasheet】PHY KSZ9031千兆网络芯片解读
  19. macOS 下玩原生MAME 模拟器
  20. 2022年场(厂)内专用机动车辆安全管理操作证考试题及答案

热门文章

  1. 1-10 Java 继承、protected和abstract抽象类
  2. Qt编写安防视频监控系统2-视频播放
  3. 只有170字节,最小的64位Hello World程序这样写成
  4. 基与坐标系(阅读《理解矩阵》笔记)
  5. Excel数值累加操作演示(一)
  6. linux下的plc软件下载,基于Linux系统的软PLC的实现
  7. Java垃圾收集学习笔记
  8. 推荐!最新机器学习、深度学习绘图模板.ppt
  9. codeforces 298B Sail
  10. spring+mybatis 一个事务中两次查询结果不一样的问题