首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PythonGBK, UTF-8和Unicode的编码问题

那么Python 2.x的字符串究竟是个什么呢? 基本编码知识 在了解Python字符串(String)的本质前,我们需要知道ASCII、GBK、UTF-8和Unicode的关系究竟几何。...Python2.x字符串的本质 Python实际上有两种字符串,分别是str类型和unicode类型,这两者都是basestring的派生类。...这也就解释了为什么我们需要在python文件的开头标定该文件的编码是什么,如: # encoding: utf-8 也解释了为什么len()一个str类型的字符串,只会返回它在内存占用的字节数,而非文字数...-8') File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode return codecs.utf_8_decode(input...原文地址:PythonGBK, UTF-8和Unicode的编码问题, 感谢原作者分享。

4K10
您找到你想要的搜索结果了吗?
是的
没有找到

UnicodeUTF-8与UTF-16编码详解

-16编码,包含基础概念和Unicode编码转换到UTF-16编码方式 JavaScriptstring与DOMString 本文作为utfx.js源码解析的基础知识储备文章,通过了解UTF-8和UTF...因此,存储在内存的顺序就是EA 84 AB。 通过上面的例子,我相信大家对UTF-8的编码有了一个深入的理解。下面,让我们来看下另一种编码方式——UTF-16。...引用维基百科对于UTF-16编码的解释我们可以知道,UTF-16最少也会用2 Byte来表示一个字符,因此没有办法兼容ASCII编码(ASCII编码使用1 Byte来进行存储)。...表示方式 在UTF-16,我们将Unicode分为了两个范围,分别通过不同的方式进行存储。具体表示见下图。...JavaScript的string与DOMString 在JavaScript,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的。

8.9K31

python encoding=utf-8_pythonutf8打印字符串

ASCLL与utf-8编码的关系 字符 ASCII Unicode UTF-8 A 01000001 00000000 01000001 01000001 x 01001110 00101101 11100100...str与bytes,encode() 与 decode() Python的字符串类型是str,在内存以Unicode表示,一个字符对应若干个字节。...含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。 在bytes,无法显示为ASCII字符的字节,用\x##显示。...\xb8\xad\xff'.decode('utf-8', errors='ignore') '' 可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。...'utf-8'). List of Python standard encodings 默认的encoding 是utf-8,所以问题是出现了utf-8不能解码的字节。

74110

在MySQL,不要使用“utf8”。使用“utf8mb4”

今天的错误:我试图将一个UTF-8字符串存储在MariaDB“utf8”编码的数据库,并且引发了一个奇怪的错误: Incorrect string value: ‘\xF0\x9F\x98\x83 <...…’ for column ‘summary’ at row 1 这是UTF-8客户端和UTF-8服务器,位于UTF-8数据库,具有UTF-8编码规则。...本段的第一个字母存储为“01000011”,你的计算机显示为“C”。你的计算机分两步选择“C”: 1....在UTF-8,像“C”这样的常见字符占8位,而像“其他字符需要16或24位。像这样的博客文章在UTF-8占用的空间比在UTF-32少四倍。所以加载速度快四倍。...2003年9月左右的邮件列表没有任何内容可以解释这一变化。 但我可以猜到。 早在2002年,如果用户可以保证表的每一行具有相同的字节数,MySQL就会为用户提供速度提升。

95920

Python | Python学习之unicode和utf8

UTF8 UTF8编码相比于8bit的ASCII编码和16bit的unicode编码来说,UTF8编码是不定长的,它可以使用两个字节代表英文,用三个字节代表中文,UTF8这个时候优势就很大了,在实际运用...在python2.7当要将字符串encode为utf8,我们需要确保之前的字符串的编码方式为unicode,所以当字符串编码不为unicode时,我们需要使用decode方法,而在使用decode方法时我们需要指明原有字符串的编码格式...(在windows系统解释器默认编码为GB2312,Linux系统UTF-8编码),所以就有了s.decode("gb2312").encode("utf-8")。...所以在根据上面的情况,在python2出现编码互转的情况,可以参考下图: ?...而在Python3完全没有这样的顾虑,那是因为默认python3全部的字符串就是unicode可以直接使用encode方法。 ?

1.1K60

MySQLutf8 并不是真正的UTF-8编码 ! !

目录 一、报错回顾 二、MySQLutf8的趣事 1. utf8mb4 才是真正的UTF-8 2. utf8 的简史 三、总结 一张照片背后的故事 ---- 一、报错回顾 将emoji文字直接写入SQL...二、MySQLutf8的趣事 MySQL 的“utf8”实际上不是真正的 UTF-8。...在MySQL,“utf8”编码只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。 在utf8编码,中文是占3个字节,其他数字、英文、符号占一个字节。...正因如此,4字节的内容往utf8编码插入,肯定是不行的,插不进去啊,是吧(大潘摊手)。 ?...UTF-8 可以节省空间,在 UTF-8 ,字符“C”只需要 8 位,一些不常用的字符,比如“?”需要 32 位。其他的字符可能使用 16 位或 24 位。

86910

【计算机基础】utf6、utf16、utf32

而今天要解决的问题也只有一个 utf8、utf16、utf32 都是什么鬼!...U+0030 ,数字0U+006F ,字母oU+007E ,波浪纹 ~ 记住哦,这个U+后面就是该字符的16进制编号 然后,Unicode 只给字符规定了它的 编号ID,但是却没有规定它怎么存在计算机。...其实就是 2 的 n 次方,n 从0 开始 16 进制的F,表示10进制的 15,跟 上面的图对应,15 = 8+4+2+1,所以 F 就是 4个1 然后我们转换的方法是,一分四法,就是 一个16进制数...10xxxxxx:三字节编码形式 以此类推 记住,utf8 使用变长的编码方式给不同的字符分配不同的字节数量,并且给二进制加上了字节数量标识+续流标识 其实 utf8 也挺浪费的,因为编码占了很多用于标识的无效位...0xDF85, 这两个编码是必须一起的,不能分开读 没错,就因为这个辅助平面的规则,弄了我好久才算明白,下面来分别解释下其中我的疑惑 1什么是基本平面,辅助平面 基本平面和辅助平面,都是 Unicode 的一个编码区段

1.2K10

MySQLUTF8和UTF8mb4编码的详细区别

好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。utf8mb4占用的存储空间会略大一些。...三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 的基本多文种平面(BMP)。...是 Mysql 的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 的基本多文本平面。 最初的 UTF-8 格式使用一至六个字节,最大能编码 31 位字符。...最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。 Mysql utf8 为什么只支持持最长三个字节的 UTF-8字符呢?...Mysql 的字符串长度算的是字符数而非字节数,对于 CHAR 数据类型来说,需要为字符串保留足够的长。

5.3K30

清官谈mysqlutf8和utf8mb4区别,请使用utf8mb4

三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 的基本多文种平面(BMP)。...utf8 是 Mysql 的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 的基本多文本平面。...Mysql utf8 为什么只支持持最长三个字节的 UTF-8字符呢?我想了一下,可能是因为 Mysql 刚开始开发那会,Unicode 还没有辅助平面这一说呢。...UTF-8可以节省空间,在UTF-8,字符“C”只需要8位,一些不常用的字符,比如“”需要32位。其他的字符可能使用16位或24位。...MySQL的“utf8”字符集与其他程序不兼容,它所谓的“”,可能真的是一坨…… MySQL简史 为什么MySQL开发者会让“utf8”失效?我们或许可以从提交日志寻找答案。

1.3K20

Unicode 与 utf8 utf16 utf32的关系

常见的如utf8, utf16, utf32 比如,对于英文字符A , 在unicode的值是65, 其在计算机存储时, 使用utf8 utf16 utf32等不同格式存储时, 是完全不同的。...utf8存储,在内存中就是0x41;  utf16存储,在内存中就是0x0041 ; utf32存储,在内存中就是0x00000041 在windows编程, 字符格式通常有多字节(ansic)与宽字符...因为windows,默认的unicode编码方式就是utf16, 所以英文字符才是两个字节。...被编码为一对16bit的码元(即32bit,4字节),称作代理对(surrogate pair)。...high 1bit | 0xD800 得到前导代理, low 10bit | 0xDC00 得到后尾代理 从这里也可以理解为什么 在基本多语言平面, (U+D800  ~ U+DFFF ) 要作为保留字符了

2.1K40

Python 有关 Unicode UTF-8 GBK 编码问题详解

我们常用的就是 utf8 utf16 这种存储方式。 unicode 在很长一段时间内无法推广,直到互联网的出现。 2.UTF-8 编码 互联网的普及,强烈要求出现一种统一的编码方式。...UTF-8 就是在互联网上使用最广的一种 unicode 的实现方式。其他实现方式还包括 UTF-16 和 UTF-32,不过在互联网上基本不用。...-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Python...position 0: invalid continuation byte 总结 UNICODE 是一个符号集合,对全世界的语言都对应一个符号编码 UTF-8 是 UNICODE 在计算机存储时的具体体现...,是存储方案 UTF-16 同理 UTF-8 UTF-32 同理 UTF-8 GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集--基本集》,由中国国家标准总局发布

1.6K21

UTF-8编码BOM的检测与删除

注:Unicode相关知识的详细介绍请参考UTF-8, UTF-16, UTF-32 & BOM。...对于UTF-8/16/32而言,它们名字的8/16/32指的是编码单位是多少位的,也就是说,它们的编码单位分别是8/16/32位,换算成字节就是1/2/4字节,如果是多字节,就要牵扯到字节序,UTF-...or directory PHP: Warning: Cannot modify header information – headers already sent 在详细讨论UTF-8编码BOM的检测与删除问题前...实际做项目开发时,可能会面对成百上千个文本文件,如果有几个文件混入了BOM,那么很难察觉,如果没有带BOM的UTF-8文本文件,可以用vi杜撰几个,相关命令如下: 设置UTF-8编码: :set fileencoding...如何检测UTF-8编码的BOM呢? shell> grep -r -I -l $'^\xEF\xBB\xBF' /path 如何删除UTF-8编码的BOM呢?

2.3K20
领券