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

Python字符串前世今生

Unicode时代,Python字符串已被证明是处理文本一种便捷方法。 本文中,我们就来研究Python字符串是如何演化并能处理各类文本,特别是窥视其幕后运作方式。...例如,代码点U+01F193编码“0x0001F193”。UTF-32主要优点除了简单之外,还在于它是一种固定宽度编码形式,即每个代码点对应于固定数量代码单元(本例中是1个代码单元)。...C标准库,它适用于8位固定宽度编码,不适用于UTF-8或任何其他Unicode编码。...,使用UCS-2编码在内部表示Unicode字符串UCS-2能够对当时分配所有代码点进行编码,但是,由于UnicodeBMP(Basic Multilingual Plane,基本多文种平面,UCS...灵活字符串表示法允许固定时间内索引到字符串中,同时试图让字符串保持相对紧凑。

1.2K10

数据库char varchar nchar nvarchar,编码Unicode,UTF8,GBK等,Sql语句中文前为什么加N(一次线上数据存储乱码排查)

若指定了非 SC 排序规则,则这些数据类型仅会存储 UCS-2 字符编码支持字符数据子集。 nchar [ ( n ) ] 固定大小字符串数据。...对于 UCS-2 编码,存储大小 n 个字节两倍,并且可存储字符数也 n。...存储大小 n 字节两倍 + 2 个字节。 对于 UCS-2 编码,存储大小 n 个字节两倍 + 2 个字节,并且可存储字符数也 n。...然后我就猜测到是GBK编码问题,因为python3里面字符串默认编码也是Unicode,测试下把1006⁃267X(2020)02⁃0548⁃10转成GBK。 ?...同时直接使用sql进行insert、update时候注意在要保存为Unicode编码字符串前面加N。

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

刨根究底字符编码之十三——UTF-16编码方式

因此,Unicode引入了UTF-16编码方式之后,站在现代字符编码模型角度上来看的话,再将UCS-2和UCS-4直接称之为字符编码方式CEF已不是很合适,更多应该是编号字符集CCS中概念(当然...(Surrogate Pair)(解释详见后文《UTF-16究竟是如何编码——UTF-16编码算法详解》) UTF-16编码方式及其代理机制是Unicode 2.0中支持字符编号超过U+FFFF...现在若有软件声称自己支持UCS-2编码,那相当于是暗示其仅支持UCS字符集或Unicode字符集中基本平面字符,而不能支持增补平面字符。 6....所以说,UTF-16是变长编码方式,每个字符编码2字节或4字节;而UCS-2是定长编码方式,每个字符编码固定为2字节。...例如代码中字符串,在内存中相应字节流就是UTF-16字节序列。(注意,UTF-16编码Windows环境中被误用为“widechar”和“Unicode同义词) 8.

92641

python encode和decode函数说明

python中,我们使用decode()和encode()来进行解码和编码 python中,使用unicode类型作为编码基础类型。...好消息来了,对,那就是python3,新版本python3中,取消了unicode类型,代替它是使用unicode字符字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码变为了字节类型...3、UCS-2、UCS-4、BMP UCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须0)编码。...或者说UCS-4中,高两个字节0码位被称作BMP。 将UCS-4BMP去掉前面的两个零字节就得到了UCS-2UCS-2两个字节前加上两个零字节,就得到了UCS-4BMP。...UTF-16以两个字节编码单元,解释一个UTF-16文本前,首先要弄清楚每个编码单元字节序。例如收 到一个“奎”Unicode编码是594E,“乙”Unicode编码是4E59。

1.1K30

JavaScript 有个 Unicode 天坑

本文涉及知识点: Unicode (BMP/SP) UTF-8 UTF-16 UTF-32 UCS-2 javascript字符处理 Unicode Unicode是目前绝大多数程序使用字符编码,定义也很简单...常见UTF有 UTF-8 可变字节序列,用1到4个字节表示一个码点 UTF-16 可变字节序列,用2或4个字节表示一个码点 UTF-32 固定字节序列,用4个字节表示一个码点 UTF-8对ASCⅡ编码是兼容...如 UCS-2 用2个字节表示BMP码点 UCS-4 用4个字节表示码点 UCS-2是一个过时编码方式,因为它只能编码基本平面(BMP)码点,BMP编码上,与UTF-16是一致,所以可以认为是...UCS-4则与UTF-32等价,都是用4个字节来编码Unicode。 javascript字符处理 辣莫,js到底是用编码呢?答案是UCS-2。咦,刚刚不是说UCS-2过时了吗?...我们经常用length来判断字符串长度,那产品不干了呀,说好可以输入10个字,毛输了5个emoji就不给输入了? 怎么破?

1K20

字符编码技术专题(五):前端必读计算机字符编码知识入门

简单来说:字符编码就是将字符映射固定码位值,存储在对应编码字符集中。不同字符集中,同一个字符码位不同。其中码位也有翻译成码点或者内码。...因此:一些程序在内部处理字符串时,就使用了另外一种编码方式 UTF-16,其中 JavaScript、Python 就使用了这种编码方式来存储字符串。...ẹ́'.normalize()] // ['ẹ', '́'] 13.4合成字符大麻烦 上面提到关于 Unicode 问题不仅限于 JavaScript, Python、Java 等语言中也会遇到。...虽然 ES2018 中引入了 Unicode 属性转义符,但在浏览端上依然要考虑使用 XRegExp 来实现,当然可以考虑服务端处理,因为 Python 3.6、Perl 5.24 、Ruby 2.4...3)字符编码形式(CEF, Character Encoding Form):从代码点到特定宽度(比如32-bit整数)代码单元序列映射。

28740

html解析中遇到&#开头unicode编码字符串处理和转换 - Python

用lxml库处理网页时遇到,写个转换程序用用。...注:ASCII转unicode和中文转unicode是两个东西(起码unicode在线转换网站上这两个不同),虽然说是中文,其实输入英文字母也没问题(表述可能不够准确,但大概是那么个意思)。...原理 常见unicode编码格式如下: \u670d\u52a1\u5668 如果换成&#开头格式如下: 服务器 其实这两个是同一个东西,只是开头和进制不同...编码字符串 # 输入中文,输出str类型&#开头unicode编码数据 def zh2uni(zhDat): rDat = "" for n in zhDat: rDat...编码字符串转中文 def uni2zh(uniDat): rDat = '' while True: if len(uniDat) == 0: break

10.1K10

从JavaScript看字符编码前世今生!

例如Unicode中将“兒”和“”字安放在不同码位里。检索文献时,检索“兒”字时就找不到“雷庄”,检索“”字时就找不到“雷庄兒”,反而造成困扰。...UTF-32编码长度是固定,UTF-32中每个32位值代表一个Unicode码位,并且与该码位数值完全一致。 UTF-32主要优点是可以直接由Unicode码位来索引。...文件和网络数据往往是 UTF-16、UTF-8和传统字节编码混合。 Python语言环境从2.0版本开始官方只在内部使用UCS-2,但UTF-8解码器到“Unicode”会产生正确UTF-16。...Python 3.3不再使用 UTF-16,而是从ASCII/Latin-1、UCS-2和UTF-32中选择给定字符串提供最紧凑表示编码。...从ES2015开始,字符串方法和正则表达式标志已添加到语言中,允许从与编码无关角度处理字符串。 PHP语言和MySQL也支持UCS-2

68410

Codecs模块

python对多国语言处理是支持很好,它可以处理现在任意编码字符,这里深入研究一下python对多种不同语言处理。...有一点需要清楚是,当python要做编码转换时候,会借助于内部编码,转换过程是这样:原有编码 -> 内部编码 -> 目的编码 python内部是使用unicode来处理,但是unicode使用需要考虑是它编码格式有两种...有一个办法,就是通过sys.maxunicode值来判断: import sys print sys.maxunicode 如果输出65535,那么就是UCS-2,如果输出是1114111就是UCS...“ print len(a), a # 把a编码内部unicode, 但为什么方法名为decode呢,我理解是把gb2312字符串解码unicode b = look.decode(a) #...返回b[0]是数据,b[1]是长度,这个时候类型是unicode了 print b[1], b[0], type(b[0]) # 把内部编码unicode转换为gb2312编码字符串,encode

34320

python中codecs模块_python自然语言编码转换模块codecs介绍

有一点需要清楚是,当python要做编码转换时候,会借助于内部编码,转换过程是这样:原有编码 -> 内部编码 -> 目的编码 python内部是使用unicode来处理,但是unicode使用需要考虑是它编码格式有两种...有一个办法,就是通过sys.maxunicode值来判断: import sys print sys.maxunicode 如果输出65535,那么就是UCS-2,如果输出是1114111就是UCS...) # 创建utf-8编码器 look2 = codecs.lookup(“utf-8”) a = “我爱北京天安门” print len(a), a # 把a编码内部unicode, 但为什么方法名为...decode呢,我理解是把gb2312字符串解码unicode b = look.decode(a) # 返回b[0]是数据,b[1]是长度,这个时候类型是unicode了 print b[1...], b[0], type(b[0]) # 把内部编码unicode转换为gb2312编码字符串,encode方法会返回一个字符串类型 b2 = look.encode(b[0]) # 发现不一样地方了吧

32310

解决Python3将数据保存为json,中文显示Unicode编码问题

""" @Author :叶庭云 @CSDN :https://yetingyun.blog.csdn.net/ """ 利用 Python 将字典数据保存为 json 时,查看数据发现中文全部显示...Unicode 编码,如下所示: 分析原因: Python3已经将 Unicode 作为默认编码 Python3中 json 库在做 dumps 操作时,会将中文转换成 Unicode 编码,并以...再做逆向操作时,会将 Unicode 编码转换回中文。...解决办法: dumps 设置参数 ensure_ascii=False 解决了问题,emmm,然后发现 Sublime Text 里显示中文乱码,顺便一起解决了: 调用Ctrl+Shift+P,或者点击...Preferences->Packet Control,然后输入:Install Package,回车: 稍后弹出安装包框中搜索:ConvertToUTF8或者GBK Support,选择点击安装

3.8K30

字符集

UTF-16UTF-16:从先前固定宽度 16 位编码UCS-2)发展而来,能够对 Unicode 所有 1,112,064 个有效 code point 进行编码。...UTF-32与UCS-4: Unicode与ISO 10646合并之前,ISO 10646标准“通用字符集”(UCS)定义了一种31位编码形式(即UCS-4),其编码固定占用4个字节,编码空间0x00000000...UTF-16与UCS-2: 除了UCS-4,ISO 10646标准“通用字符集”(UCS)定义了一种16位编码形式(即UCS-2),其编码固定占用2个字节,它包含65536个编码空间(可以为全世界最常用...例:“汉”UCS-2编码6C49。...但俩个字节并不足以正真地“一统江湖”,于是UTF-16诞生了,与UCS-2一样,它使用两个字节全世界最常用63K字符编码,不同是,它使用4个字节对不常用字符进行编码。UTF-16属于变长编码

1.7K10

万字长文讲解编码知识,看这文就够了!

例:“汉”UCS-2编码6C49。...除此之外ISO10646标准“通用字符集”(UCS)还定义了一种31位编码形式(即UCS-4),UCS-4全称UniversalCharacter Set coded in 4 octets,其编码固定占用...UCS-2只能编码“基本多语言平面”中字符,此时UTF-16与UCS-2编码一样(都直接使用Unicode码位作为编码值),例:“汉”Unicode码位6C49,而在UTF-16编码6C49...可以“语言与区域设置”中选择一个代码页作为非 Unicode 编码所采用默认编码方式,如936简体中文GBK,950正体中文Big5(皆指PC上使用)。...许多编程语言也采用Unicode内码,如Java、Python3。 外码:除了内码,皆是外码。

1.2K30

编码总结笔记 原

ASCII码 我们知道,计算机内部,所有的信息最终都表示一个二进制字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。...方式 Unicode是国际组织制定可以容纳世界上所有文字和符号字符编码方案。 UTF-8 UTF-8以字节单位对Unicode进行编码。...2)Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符Unicode码。这个选项用little endian格式。...Unicode规范中定义,每一个文件最前面分别加入一个表示编码顺序字符,这个字符名字叫做”零宽度非换行空格“(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。...传输过程中将汉字转换成UCS-2unicode 4位16进制编码,接收后再转回来。 9.

62960

从 JS 里 MD5 转换踩坑开始说起

编码UTF8”,顾名思义嘛—— 不过这时候有同学可能就要问了:等等,我们平时项目中写代码时,用已经是 UTF-8 编码了啊?...JavaScript 因历史原因,使用是近似于 UTF-16 UCS-2 方案(编码中操作处理时表现为 UCS-2,浏览渲染显示时基于 UTF-16 重新显示 Unicode 字符)。...所以,这个模块 JavaScript 字符串进行 MD5 计算前,“尝试”将 JS 引擎内 UTF-16/UCS-2 格式字符串先转换成了基于 UTF-8 格式表示 Unicode 字符,再将其对应编码值进行...,位于几种编码第一段区域时,表现格式其实差别不大: UTF-8 第一段与 ASCII 码、Unicode 码点一致,占用1个字节; 而 UTF-16 和 UTF-32 相当于高位补 0,分别占用2...基于 Unicode 码点操作 原本 encodeUTF8 函数中通过 String.prototype.charCodeAt() 操作原始字符串,得到是根据 UCS-2 计算字长、相当于 UTF

2.5K50

Unicode与JavaScript详解

U+0000 = null 上式中,U+表示紧跟在后面的十六进制数是Unicode码点。 目前,Unicode最新版本是7.0版,一共收入了109449个符号,其中中日韩文字74500个。...上面那些编码方法,JavaScript都不用。 JavaScript用UCS-2! 六、UCS-2编码 怎么突然杀出一个UCS-2?这就需要讲一点历史。...UCS开发进度快于Unicode,1990年就公布了第一套编码方法UCS-2,使用2个字节表示已经有码点字符。(那个时候只有一个平面,就是基本平面,所以2个字节就够用了。)...UTF-16编码迟至1996年7月才公布,明确宣布是UCS-2超集,即基本平面字符沿用UCS-2编码,辅助平面字符定义了4个字节表示方法。...因为JavaScript语言出现时候,还没有UTF-16编码

71070

精述字符编码

还记得前面说到UnicodeBMP吗,就是Unicode使用两字节来编码全球大部分文字字符一个编码区间,号称0号平面,UCS-2是一个固定两字节长度编码,每一个字符都采用一个单一16位值来表示...那么UCS-2Unicode0好平面又是啥关系呢?其实UCS-2编码字符和UnicodeBMP编码字符是相同,因此UCS-2就是UnicodeBMP。...一个字符Unicode编码是确定,但是实际传输过程中,由于不同系统平台设计不一定一致,以及出于节省空间目的,对Unicode编码实现方式有所不同,这就是为何已经存在了UCS-2和UCS-4,...UCS编码中有一个叫做零宽度非换行空格(ZERO WIDTH NO-BREAK SPACE)字符,它编码是U+FEFF。而U+FEFFUCS中是不存在字符,所以不应该出现在实际传输中。...UCS规范建议我们传输字节流前,先传输字符零宽度非换行空格字符。

1.4K32

MySQL字符编码指南--基础篇

因为即使你设置了MySQL连接字符集latin1,MySQL执行HEX()函数时依然会使用Unicode编码字符串转换为16进制表示。...由于UNICODE是多字节编码传输过程中需字节序、容错性方面进行定义。基本可以认为 UTF16=UCS2,UTF-32=UCS4,这两种都是定长编码,即每个字符编码都是固定长度。...基于这些原因, 文件名, 文本文件, 环境变量等地方, UCS-2 不适合作为 Unicode 外部编码。外部编码指的是用于将Unicode字符存储到文件或通过网络发送编码方式。...UCS-2(Universal Character Set 2)是一种固定长度(2字节)Unicode字符编码方式,但它只能表示Unicode字符集中前65,536个字符,无法表示更高代码点,这就使得...因此,尽管UCS-2一些情况下可能有用,但它通常不被推荐作为Unicode外部编码,特别是需要处理大量数据或需要兼容ASCII场景中。

56401

python模块之codecs

python要做编码转换时候,会借助于内部编码,转换过程是这样: 原有编码 -> 内部编码 -> 目的编码  python内部是使用unicode来处理,但是unicode使用需要考虑是它编码格式有两种...有一个 办法,就是通过sys.maxunicode值来判断: import  sys print  sys.maxunicode 如果输出65535,那么就是UCS-2,如果输出是1114111...a # 把a编码内部unicode, 但为什么方法名为decode呢,我 理解是把gb2312字符串解码unicode b = look.decode(a) # 返回b[0]是数据...,b[1]是长度,这个时候类型是unicode 了 print b[ 1 ], b[0], type(b[0]) # 把内部编码unicode转换为gb2312编码字符 串,encode方法会返回一个字符串类型...Python中,codecs模块提供了实现这些规则方法,通过模块公开方法我们能够方便地获取某种编码方式Encoder和 Decoder工厂函数(Factory function),以及StreamReader

3.3K20

Python 存储字符串时,是如何节省空间

Python 3 开始,str 类型代表着 Unicode 字符串。取决于编码类型,一个 Unicode 字符可能会占 4 个字节,这个有些时候有点浪费内存。...出于内存占用以及性能方面的考虑,Python 内部采用下面 3 种方式来存储 Unicode 字符: 一个字符占一个字节(Latin-1 编码) 一个字符占二个字节(UCS-2 编码) 一个字符占四个字节...33 大部分语言文字使用 2 个字节(UCS-2)来编码就已经足够了。4 个字节(UCS-4)编码保存特殊符号、emoji 表情或者少见语言文字时候会用到。...Python 内部为什么不直接使用 UTF-8 编码 最常见 Unicode 编码是 UTF-8,但是 Python 内部并没有使用它。...Python unicode 对象实现、大约有 16,000 行 C 代码,其中有很多小优化本文中未提及。

2.5K60

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券