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

Python的bytes、str与unicode的区别

编写高质量Python代码的59个有效方法--第三条:了解bytes、str与unicode的区别 Python3有两种表示字符序列的类型:bytes和str,这也是Python3最重要的特性之一...前者的实例包含原始的8位值;后者的实例包含Unicode字符。 Python2也有两种表示字符序列的类型:分别叫做str和unicode。...与python3不同的是,str的实例包含原始的8位值;而unicode的实例,则包含unicode字符。 把unicode字符表示为二进制数据(也就是原始8位值)有许多种办法。...最常见的编码方式就是utf-8。但是对于python3的str和python2的unicode实例都没有和特定的二进制编码形式相关联。...这种办法既可以令程序接受多种类型的文本编码,又可以保证输出的文本信息只采用一种编码形式。 一篇写的很好的对于编码的解释的博客(包括发展历史):浅析Python3中的bytes和str类型

48510

【C语言笔记】char *str与char str[]的区别

如下: (1)char str[] = "happy"; (2)char *str = "happy"; 这种方式有什么不同呢?...下面看两个例子:修改字符串中的字符 示例1: #include int main(void) { char str[20] = "hello"; str[0] = 'H';..."hello"; str[0] = 'H'; printf("%s\n",str); return 0; } 运行结果: 无打印信息输出 可见,使用(1)方式定义的字符串其字符是可以修改的,...(2)中可以成功编译和链接,但运行时可能会出现错误,我编译与运行的平台是window10平台,运行结果是无打印信息输出,在其他不同的平台运行可能会出现段错误(Segment Fault)或者写入位置错误...这两种表示字符串的方式的主要区别是:字符串指针指向的内容是不可修改的,字符数组是可以修改的,即(2)方式定义的字符串保存在常量区,是不可更改的,(1)方式定义的字符串保存在全局数据区或栈区,是可修改的。

3.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Unicode与UTF-8的区别

    要弄清Unicode与UTF-8的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到Unicode的出现,我们就会感觉到他们之间的关系 一、ASCII码 我们都知道,在计算机的世界里,...为了保持与ASCII码的兼容性,一般最高为为0时和原来的ASCII码相同,最高位为1的时候,各个国家自己给后面的位(1xxx xxxx)赋予他们国家的字符意义。...Unicode就相当于一张表,建立了字符与编号之间的联系 它是一种规定,Unicode本身只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储。...下面我们来具体看看具体的Unicode编号范围与对应的UTF-8二进制格式 那么对于一个具体的Unicode编号,具体怎么进行UTF-8的编码呢?...首先找到该Unicode编号所在的编号范围,进而可以找到与之对应的二进制格式,然后将该Unicode编号转化为二进制数(去掉高位的0),最后将该二进制数从右向左依次填入二进制格式的X中,如果还有X未填,

    63820

    Unicode编码与ASCII码的区别

    前言 因为Java的跨平台性,为适应不同的操作系统,因此Java采用Unicode编码字符集,更具体的来说Java虚拟机(JVM)是采用的UTF-16编码。...区别 编码:ASCII码 大小:1个字节 语言:英语 Unicode编码 大小:2个字节(生僻字4个) 语言:所有语言 扩展 UTF-8编码 大小:1-6个字节,英文字母1个字节,汉字3个字节,生僻字4...-6个字节 语言:所有语言 Unicode编码   Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。...为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。...所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。

    1K10

    Unicode与UTF-8的区别

    要弄清Unicode与UTF-8的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到Unicode的出现,我们就会感觉到他们之间的关系 一、ASCII码 我们都知道,在计算机的世界里,...为了保持与ASCII码的兼容性,一般最高为为0时和原来的ASCII码相同,最高位为1的时候,各个国家自己给后面的位(1xxx xxxx)赋予他们国家的字符意义。...例如:“马”的Unicode是U+9A6C。 Unicode就相当于一张表,建立了字符与编号之间的联系 ?...所以它的格式为110XXXXX 10XXXXXX 。 下面我们来具体看看具体的Unicode编号范围与对应的UTF-8二进制格式 ?...首先找到该Unicode编号所在的编号范围,进而可以找到与之对应的二进制格式,然后将该Unicode编号转化为二进制数(去掉高位的0),最后将该二进制数从右向左依次填入二进制格式的X中,如果还有X未填,

    1.7K20

    string null和“”的区别 str == null; .equals(str); str.length 0; str.isEmpty();的区别

    1、str == null; 2、"".equals(str); 3、str.length <= 0; 4、str.isEmpty(); 注意:length是属性,一般集合类对象拥有的属性,取得集合的大小...length(); 说明: 1、null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。 2、""表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。 3....str1还不是一个实例化的对象,而str2已经实例化。...如果str1=null;下面的写法错误: if(str1.equals("")||str1==null){ } 正确的写法是 if(str1==null||str1.equals("")){ //所以在判断字符串是否为空时...所以,判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。 String str = xxx;   if(str != null && str.length() !

    6600

    Python高能小技巧:了解bytes与str的区别

    要把Unicode数据转换成二进制数据,必须调用str的encode方法。 要把二进制数据转换成Unicode数据,必须调用bytes的decode方法。...(b'foo'))) print(repr(to_bytes('bar'))) 在Python中使用原始的8位值与Unicode字符串时,有两个问题要注意。...第一个问题是,bytes与str这两种类型似乎是以相同的方式工作的,但其实例并不相互兼容,所以在传递字符序列的时候必须考虑好其类型。 可以用+操作符将bytes添加到bytes,str也可以这样。...'r', encoding='cp1252') as f: data = f.read() assert data == 'ñòóôõ' 这样程序就不会出现异常了,但返回的字符串也与读取原始字节数据所返回的有很大区别...要点 bytes包含的是由8位值所组成的序列,str包含的是由Unicode码点所组成的序列。

    1.3K20

    Numpy下dtype中的str_与string_的区别

    在我的某个程序中需要将数据保存成numpy数组,数组中每个元素又必须是字符串的格式 但是当你输入dtype=numpy.str的时候,你会发现又三个相近的数据类型可选,那就是str、str_和string..._了,如下图 str自然不用说,看后面就知道,builtins也就说明了这个str其实是python的内建数据类型,跟numpy数组一点关系都没有。...所以我们将目光锁定到后面为dtype的str_和string_上,我是比较懒的人,不喜欢去翻文档,也比较注重实践检验真理,所以在这里我会通过一系列的对比来区别开这两个数据类型。...对比3,字符串拼接 运行结果: 这里我只运行了arr1中元素跟字符串的拼接结果,并且是成功的,充分说明了str_就应该是dtype中真正对应python里str的那种类型,而arr2就没必要去测试了...---- 综合来说,我还是会选择str_类型去操作这些数据的,你们呢?

    1.2K10

    字符集与字符编码的区别与演进(ASCII、GBK、UNICODE)

    长度也是一个字节,前 0~127 与 ASCII 一致,剩下的128个字符大多是欧洲语言所使用的字符,所以可以认为ISO 8859-1是为欧洲语言所定制的一套编码标准。...3.1 unicode unicode使用4字节共32个二进制位,为每个字符都确定了一个唯一的编码,由于整体搜索空间庞大,实际使用的量比较少。所以将整体分为了17组,叫做字符平面。...from wiki: 部分0号平面的分布: 3.2 字符码与字符编码解耦 强映射的问题 传统编码中,字符码与字符编码是完全绑定的,例如在ASCII中,'a’的字符码是97,'a’的字符编码也是97。...但缺点是不灵活,每个字符码编码出的结果是固定的,如果存在这样一个场景:unicode四个字节中,英文字母只占很少的一部分,如果客户只使用英文,unicode中永远只有1个字节的数据是有意义的,剩下三个字节都没用到...unicode将字符码与编码解耦 在unicode中,每一个字符保证有唯一字符码,将 字符码到存储二进制之间的“字符编码”过程独立出来,提供了三种编码方法: UTF-8:使用1或2或3或4个字节。

    1.5K20

    Unicode,ASCII,UTF-8的区别

    但世界上有许多不同的语言,所以需要一种统一的编码。 Unicode Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。...Unicode最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。...Unicode和ASCII的区别 ASCII编码是1个字节,而Unicode编码通常是2个字节。...新的问题:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。...用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件: ?

    9.6K53

    python 中文编码 小结 ,json读写,str转换unicode,文字比较

    2:str和unicode转换 utf8样例: ‘asdasd’.decode(‘utf8’) 原理: 简单说来就是,python内部表示字符串用unicode(其实python内部的表示和真实的unicode...是有点差别的,对我们几乎透明,可不考虑),和人交互的时候用str对象。...s.decode ——–>将s解码成unicode,参数指定的是s本来的编码方式。这个和unicode(s,encodename)是一样的。...u.encode ——–>将unicode编码成str对象,参数指定使用的编码方式。...的汉字编码,用decode转换成utf8.然后与后半部分原本就是unucode进行对比 原创文章,转载请注明: 转载自URl-team 本文链接地址: python 中文编码 小结 ,json读写,str

    2.3K10

    UNICODE与ASCII

    3.什么是UNICODE       Unicode与ASCII一样也是一种字符编码方法,它占用两个字节(0000H—FFFFH),容纳65536 个字符,这完全可以容纳全世界所有语言文字的编码。...4.使用UNICODE的好处       使用Unicode 编码可以使您的工程同时支持多种语言, 使您的工程国际化。即在不同语言的系统下不至于产生乱码。...上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。 这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码。...Unicode的问题 Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。 这里就有两个严重的问题,第一个问题是,如何才能区别Unicode和ASCII?...它们造成的结果是: 1)出现了Unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示Unicode。 2)Unicode在很长一段时间内无法推广,直到互联网的出现。

    1.9K40

    ANSI, UNICODE,UTF8编码的区别

    本地化过程中涉及到源文件和目标文件的传输问题,这时候编码就显得很重要。中文的网页和操作系统中通常采用ANSI编码,这也是微软OS的一个字符标准。...但不同的ANSI编码在不同语言之间是不兼容的,所以对于不同的操作系统之间文件的传输,或者在同样的操作系统下,源文件语言不同于OS的语言文件的传输,需要转换成UT8格式。...具体区别: ANSI:16384个字符。这就是ANSI字符标准。...英文一个字节,中文两个字节 UNICODE: 使用两个字节对世界上几乎所有的语言进行编码(0x0000-0xFFFF),65536个字符,每种语言的代码段不 同,两个字节(英文、中文都是两个字节)所表达的字符是唯一的...,所以不同语种可以共存于文本中,解决国际化的问题 UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,老外觉得这种存储方式太浪费,因为浪费了50%的空间,于是就把英文压缩成

    2.2K60

    Unicode与JavaScript详解

    上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 !...目前,一共有17个(25)平面,也就是说,整个Unicode字符集的大小现在是221。...[](/blogimg/asset/2014/bg2014121104.png) ## 二、UTF-32与UTF-8 Unicode只规定了每个字符的码点,到底用什么样的字节序表示这个码点,就涉及到编码方法...**UTF-8是一种变长的编码方法,字符长度从1个字节到4个字节不等。**越是常用的字符,字节越短,最前面的128个字符,只使用1个字节表示,与ASCII码完全相同。...## 三、UTF-16简介 UTF-16编码介于UTF-32与UTF-8之间,同时结合了定长和变长两种编码方法的特点。 它的编码规则很简单:基本平面的字符占用2个字节,辅助平面的字符占用4个字节。

    75450

    Unicode与JavaScript详解

    上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 一、Unicode是什么?...二、UTF-32与UTF-8 Unicode只规定了每个字符的码点,到底用什么样的字节序表示这个码点,就涉及到编码方法。 最直观的编码方法是,每个码点使用四个字节表示,字节内容一一对应码点。...越是常用的字符,字节越短,最前面的128个字符,只使用1个字节表示,与ASCII码完全相同。...三、UTF-16简介 UTF-16编码介于UTF-32与UTF-8之间,同时结合了定长和变长两种编码方法的特点。 它的编码规则很简单:基本平面的字符占用2个字节,辅助平面的字符占用4个字节。...一种是带附加符号的单个字符,即一个码点表示一个字符,比如Ǒ的码点是U+01D1;另一种是将附加符号单独作为一个码点,与主体字符复合显示,即两个码点表示一个字符,比如Ǒ可以写成O(U+004F) + ˇ(

    74270
    领券