一、字符编码简史:
美国:1963年 ASCII (包含127个字符 占1个字节)
中国:1980年 GB2312 (收录7445个汉字,包括6763个汉字和682个其它符号)
1993年 GB13000 (收录20902个汉字)
1995年 GBK1.0 (收录 21003个汉字)
2000年 GB18030 (收录70244个汉字)
世界:1991年 unicode(‘万国码'也就统一编码,通常占2字节,复杂的汉字占4字节)
UTF-8 (可变长的字符编码)
二、python中的编码解码应用
Python2中的字符串进行字符编码转换过程是:
字节串-->decode('原来的字符编码')-->Unicode字符串-->encode('新的字符编码')-->字节串
#!/usr/bin/env python # -*- coding:utf-8 -*- utf_8_a = '测试' print(utf_8_a,type(utf_8_a),len(utf_8_a)) #打印utf_8_a的内容、类型及长度 unicode_a = utf_8_a.decode('utf-8') #对utf_8_a进行解码成unicode print(unicode_a,type(unicode_a),len(unicode_a)) gbk_a = utf_8_a.decode('utf-8').encode('gbk') #先解码在编码成gbk print(gbk_a,type(gbk_a),len(gbk_a)) #打印gbk_a的内存、类型及长度 print(gbk_a.decode('gbk')) ---------------------------------------------------- pytharm(python2.6)运行结果: ('\xe6\xb5\x8b\xe8\xaf\x95', <type 'str'>, 6) (u'\u6d4b\u8bd5', <type 'unicode'>, 2) ('\xb2\xe2\xca\xd4', <type 'str'>, 4) 测试
Python3中定义的字符串默认就是unicode,因此不需要先解码,可以直接编码成新的字符编码:
字符串-->encode('新的字符编码')-->字节串
#!/usr/bin/env python # -*- coding:utf-8 -*- utf_8_a = '测试' print(utf_8_a,type(utf_8_a),len(utf_8_a)) #打印utf_8_a的内容、类型及长度 gbk_a = utf_8_a.encode('gbk') print(gbk_a.decode('gbk'),type(gbk_a),len(gbk_a)) -------------------------------------------------------- pycharm(python3.6)运行结果: 测试 <class 'str'> 2 测试 <class 'bytes'> 4
以上这篇基于python 字符编码的理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++, Java 等,我都觉得非常有必要厘清计算机中的字符编码概念。本文主要分以下几个部分介绍: 基本概念 常见字符编码简介 Python 的默认编码 Python2 中的字符类型 UnicodeEncodeError & UnicodeDecodeError 根源 基本概念 字符(Character)
问题内容: 我正在处理python-lastfm库返回的unicode字符串。 我假设在途中某个地方,该库获取了错误的编码,并返回了可能包含无效字符的unicode字符串。 例如,我期望变量a中的原始字符串为“Glück” \ xfc是转义值252,它对应于latin1编码的“ü”。它以某种方式以python无法自行处理的方式嵌入到unicode字符串中。 如何将其转换回包含原始“Glück”
本文向大家介绍基于python的字节编译详解,包括了基于python的字节编译详解的使用技巧和注意事项,需要的朋友参考一下 定义: 把模块定义成二进制语言程序的这个过程叫做字节编译 python是解释型语言,它的字节编译是由解释器完成的 编译py文件,生成pyc结尾的文件的方法, 方法一: Import zipfile.py 方法二: 以上这篇基于python的字节编译详解就是小编分享给大家的全部
本文向大家介绍老生常谈Python基础之字符编码,包括了老生常谈Python基础之字符编码的使用技巧和注意事项,需要的朋友参考一下 前言 字符编码非常容易出问题,我们要牢记几句话: 1.用什么编码保存的,就要用什么编码打开 2.程序的执行,是先将文件读入内存中 3.unicode是父编码,只能encode解码成其他编码格式 utf-8,GBK这些是子8编码,只能decode编码成Unicode 一
问题内容: 我是python3的新手,来自python2,并且我对unicode基本概念有些困惑。我读了一些不错的文章,使事情变得更加清楚,但是我看到python 3上有2种方法可以处理编码和解码,而且我不确定要使用哪种方法。 因此,Python 3中的想法是,每个字符串都是unicode,并且可以按字节进行编码和存储,或者可以再次解码回unicode字符串。 但是有两种方法可以做到: 会生成,但
问题内容: 我正在尝试抓取一个网站,但这给我一个错误。 我正在使用以下代码: 我收到以下错误: 我该怎么做才能解决此问题? 问题答案: 我通过添加将其修复。 那意味着变成。