当前位置: 首页 > news >正文

检测网站建设网站搭建注意事项

检测网站建设,网站搭建注意事项,江苏建设监理协会网站,留言网站模板字符编码精华总结 文件或字符串乱码相信大家都没少遇到, 今天主要就来搞清楚字符串的编码到底是怎 么一回事. 首先, 我们放把自己置空, 假设现在从来没有字符编码, 刚有一台计算机产生, 让我 们来设计一套方案, 目标是让在计算机屏幕上看到我们平时所书写的字符. 你会怎么 做?…字符编码精华总结 文件或字符串乱码相信大家都没少遇到, 今天主要就来搞清楚字符串的编码到底是怎 么一回事. 首先, 我们放把自己置空, 假设现在从来没有字符编码, 刚有一台计算机产生, 让我 们来设计一套方案, 目标是让在计算机屏幕上看到我们平时所书写的字符. 你会怎么 做? 1 编码的本质 详细的思考过程, 不再详述, 只做大概的说明如下: 选定 Character Set首先要确定「我们平时所书写的字符」, 到底都包括哪些字符, 也就是说, 要确定我 们到底要对哪些字符进行处理. 这里选定的字符集合叫做 Character Set 又叫 Character Repertoire. 规定 Coded Character Set对于已经选定的 Character Set, 我们需要给他们进行编号, 每个字符给一个编号, 也就是字符集合到一个整数集合的映射. 这个映射就叫做 Coded Character Set, 又叫 CCS. 实现 Character Encoding前两步所做的 选定 和 规定 操作都是纯数学或纯逻辑上的, 跟计算机仍没任何 联系. 在这一步, 就需要将之前规定好的编号给弄进计算机中. 因为编号已经是数字 了, 数字存储为二进制没什么问题. 这里只有一个问题需要注意: 存储编号的时候 使用多少字节? 比如说, 某字符已经在第二步规定好了编号1, 在内存中存储的时候, 是使用0x01 还是使用 0x00 01 ? 以大家熟知的ASCII字符集和编码做为示例, 流程图如下:   2 各种使用中的编码 如上节所述, 编码的本质, 就是把字符进行映射, 然后将映射后的数值进行存储. 尽管各种编码格式在历史上层出不穷, 但上面的本质始终不变. 各编码格式的区别在 于: 对于所选定的字符集的不同. (ASCII, GBK, Big5, Unicode)对于选定的字符集进行编号时的不同. (即便有些向下兼容的编码, 仍会有些字符编码不一样)对于编号进行计算机存储时使用字节数的不同. (UTF-8, UTF-16, UTF-32)各编码在上面各种情况下的详细区别示例, 大家可以参看Wikipedia和文末的参考链 接, 这里不再赘述. 3 Python中的编码 对应到大家平时的使用上, 第一步基本上我们做不了太多的选择, 主要是第二步和第三步. 第二步到第三步的编码, 在编程里对应的就是 Encode 过程; 第三步到第二步的解码, 在编程里对应的就是 Decode 过程. 关于Python字节流和Unicode对象之间转换的详细示例, 可参考Python编码和Unicode   UTF-8和Unicode的关系 看完上面两个概念解释那么解释UTF-8和Unicode的关系就比较简单了。Unicode就是上文中提到的编码字符集而UTF-8就是字符编码即Unicode规则字库的一种实现形式。随着互联网的发展对同一字库集的要求越来越迫切Unicode标准也就自然而然的出现。它几乎涵盖了各个国家语言可能出现的符号和文字并将为他们编号。详见Unicode on Wikipedia。Unicode的编号从0000开始一直到10FFFF共分为16个Plane每个Plane中有65536个字符。而UTF-8则只实现了第一个Plane可见UTF-8虽然是一个当今接受度最广的字符集编码但是它并没有涵盖整个Unicode的字库这也造成了它在某些场景下对于特殊字符的处理困难下文会有提到。   3.Unicode 正如上一节所说世界上存在着多种编码方式同一个二进制数字可以被解释成不同的符号。因此要想打开一个文本文件就必须知道它的编码方式否则用错误的编码方式解读就会出现乱码。为什么电子邮件常常出现乱码就是因为发信人和收信人使用的编码方式不一样。 可以想象如果有一种编码将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码那么乱码问题就会消失。这就是Unicode就像它的名字都表示的这是一种所有符号的编码。 Unicode当然是一个很大的集合现在的规模可以容纳100多万个符号。每个符号的编码都不一样比如U0639表示阿拉伯字母AinU0041表示英语的大写字母AU4E25表示汉字严。具体的符号对应表可以查询unicode.org或者专门的汉字对应表。 4. Unicode的问题 需要注意的是Unicode只是一个符号集它只规定了符号的二进制代码却没有规定这个二进制代码应该如何存储。 比如汉字严的unicode是十六进制数4E25转换成二进制数足足有15位100111000100101也就是说这个符号的表示至少需要2个字节。表示其他更大的符号可能需要3个字节或者4个字节甚至更多。 这里就有两个严重的问题第一个问题是如何才能区别Unicode和ASCII计算机怎么知道三个字节表示一个符号而不是分别表示三个符号呢第二个问题是我们已经知道英文字母只用一个字节表示就够了如果Unicode统一规定每个符号用三个或四个字节表示那么每个英文字母前都必然有二到三个字节是0这对于存储来说是极大的浪费文本文件的大小会因此大出二三倍这是无法接受的。 它们造成的结果是1出现了Unicode的多种存储方式也就是说有许多种不同的二进制格式可以用来表示Unicode。2Unicode在很长一段时间内无法推广直到互联网的出现。 5.UTF-8 互联网的普及强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。其他实现方式还包括UTF-16字符用两个字节或四个字节表示和UTF-32字符用四个字节表示不过在互联网上基本不用。重复一遍这里的关系是UTF-8是Unicode的实现方式之一。 UTF-8最大的一个特点就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号根据不同的符号而变化字节长度。 UTF-8的编码规则很简单只有二条 1对于单字节的符号字节的第一位设为0后面7位为这个符号的unicode码。因此对于英语字母UTF-8编码和ASCII码是相同的。 2对于n字节的符号n1第一个字节的前n位都设为1第n1位设为0后面字节的前两位一律设为10。剩下的没有提及的二进制位全部为这个符号的unicode码。   将UTF-8字节流切片的问题 因为一个UTF-8编码串是一个字节列表len( )和切片操作无法正常工作。首先用我们之前用的字符串。 1 [ 97 ] [ 98 ] [ 99 ] [ 226 ] [ 128 ] [ 147 ]  abc– 接下来做以下的 1 2 3 my_utf8  abc–  print len(my_utf8) 6 神马它看起来是4个字符但是len的结果说是6。因为len计算的是字节数而不是字符数。 1 2  print repr(my_utf8) abc\xe2\x80\x93 现在我们来切分这个字符串。 1 2 my_utf8[-1] # Get the last char \x93 我去切分结果是最后一字节不是最后一个字符。 为了正确的切分UTF-8你最好是解码字节流创建一个Unicode对象。然后就能安全的操作和计数了。 1 2 3 4 5 6 7 my_unicode  my_utf8.decode(utf-8)  print repr(my_unicode) uabc\u2013  print len(my_unicode) 4  print my_unicode[-1] – 引子bytes/str之别 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode由str类型表示二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes正是这使得两者的区分特别清晰。你不能拼接字符串和字节包也无法在字节包里搜索字符串反之亦然也不能将字符串传入参数为字节包的函数反之亦然。这是件好事。 不管怎样字符串和字节包之间的界线是必然的下面的图解非常重要务请牢记于心   字符串可以编码成字节包而字节包可以解码成字符串。 这个问题要这么来看字符串是文本的抽象表示。字符串由字符组成字符则是与任何特定二进制表示无关的抽象实体。在操作字符串时我们生活在幸福的无知之中。我们可以对字符串进行分割和分片可以拼接和搜索字符串。我们并不关心它们内部是怎么表示的字符串里的每个字符要用几个字节保存。只有在将字符串编码成字节包例如为了在信道上发送它们或从字节包解码字符串反向操作时我们才会开始关注这点。   复习一下我们有五个不可忽视的事实: 程序中所有的输入和输出均为 byte世界上的文本需要比 256 更多的符号来表现你的程序必须处理 byte 和 unicodebyte 流中不会包含编码信息指明的编码有可能是错误的  Unicode 标准定义了多种方法来用 bytes 来表示成代码点被成为 encoding 。 因此Unicode计划的首要任务就是把所有这些字符罗列出来数个数。这就是Unicode的前半部分通用字符集Universal Character Set。真正谈及Unicode时不要把明文字符叫做“字符”称之为“码点”code points。【通用字符集】 完成前面的工作后你还得想出一种技术以储存全部对应的编码文本字符。用Unicode的话来说编码文本字符被称作“码值”code values。【对字符集的编号】 Unicode码点、码值、utf-8的关系 对于Unicode来说码点相当于要编码的字符集码值相当于对字符集的编号。而utf-8相当于编号在内存的存储方式即实现方式       参考文献 http://www.lijigang.com/blog/2015/06/11/%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81%E6%98%AF%E4%BB%80%E4%B9%88%E9%AC%BC/ http://cenalulu.github.io/linux/character-encoding/ http://blog.jobbole.com/50345/ http://www.ituring.com.cn/article/61192 http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue5/unipain.html http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html http://www.lijigang.com/blog/2015/06/11/%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81%E6%98%AF%E4%BB%80%E4%B9%88%E9%AC%BC/        转载于:https://www.cnblogs.com/bitpeng/p/4771204.html
http://www.zqtcl.cn/news/745061/

相关文章:

  • 河北建设工程信息网站网站的建设要多少钱
  • 玉林住房和城乡建设局网站官网google广告在wordpress
  • 海淀网站建设公司wordpress 招聘网站模板
  • 手机网站在哪里找到网上能免费做网站发布叼
  • 网站设置英文怎么说广州优质网站建设案例
  • 外贸怎样做网站临汾花果街网站建设
  • 专业集团门户网站建设方案南昌医院网站建设
  • 用php做美食网站有哪些新建网站如何做关键词
  • 企业网站建设招标微信公众平台官网登录入口网页版
  • 网站宣传图网站程序预装
  • 网站设计论文选题seo排名优化推广报价
  • wordpress图床网站百度链接收录
  • 八年级信息网站怎么做电商网站的支付接入该怎么做呢
  • wordpress 的应用大兴安岭地网站seo
  • 网站建站作业做直播网站赚钱
  • 网站建设虍金手指花总简单免费制作手机网站
  • 京东网站是刘强冬自己做的吗献县网站建设价格
  • 余姚什么网站做装修比较好邢台企业做网站哪儿好
  • 网站建设后端国外购物平台排行榜前十名
  • 西安做百度推广网站 怎样备案简述商务网站建设
  • 如何建设本地网站东莞常平限电通知2021
  • 成都网站建设cdajcx重庆推广网站排名价格
  • 建网站的价格网店设计方案计划书
  • 长沙做公司网站如何制作个人网站教程
  • 做一个网站怎么做的仿qq网站程序
  • 曲靖市建设局网站官网织梦可以放两个网站
  • 网站建设方案ppt模板网站怎么做用户登录数据库
  • 做3d图的网站有哪些软件有哪些专业设计企业网站
  • 青海省wap网站建设公司做美工比较好的网站
  • 1个云虚拟主机怎么做多个网站网站规划与建设实验心得