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

自适应网站的优劣企业管理

自适应网站的优劣,企业管理,广西哪家公司做网站的,一等一网站在py2中#xff0c;分为两类#xff0c;str和unicode 而在py3中#xff0c;分为两类#xff0c;byte和str py2中的str等同于py3中的byte 首先明确一点#xff0c;我们编辑好一段文本#xff0c;python并不知道我们的文本是以什么格式编码的。如果是纯英文字符还好说… 在py2中分为两类str和unicode 而在py3中分为两类byte和str  py2中的str等同于py3中的byte   首先明确一点我们编辑好一段文本python并不知道我们的文本是以什么格式编码的。如果是纯英文字符还好说如果这段代码中有汉字则会报错了。 所以我们要显式的告诉python此文本的编码格式。 为了说明问题首先将以下测试代码以utf-8格式编辑保存 1 # -*- coding:utf-8 -*- #告知python我这个文件里的文本是用utf-8编码的如果不加而文本中又包含汉字没运行前就会报错2 import time3 4 a 严5 print a#乱码a是utf-8格式而windows控制台使用gbk进行解码6 b unicode(a,utf-8).encode(gbk)#将严先解码为unicode格式在编码为gbk格式7 print b#正确显示严8 c a.decode(utf-8)#等效于c unicode(严,utf-8)亦等效于c u严 c是unicode格式的9 print type(a),type(b),type(c)#a,b都是str类c是unicode类 10 print c 11 time.sleep(4)  但是还有一个疑问既然windows控制台使用gbk解码为什么utf8的a是乱码而unicode的b就不会是乱码呢 因为Python在向控制台输出unicode对象的时候会自动根据输出环境的编码进行转换,这样就能正确解码了。但如果输出的不是unicode对象而是普通字符串则控制台并不会参考我们声明的编码格式进行str到unicode的转换而是直接会按照终端编码去解码acmd编码为gbk,linux系统默认编码为utf8当然会出错 事实上最简单的str转unicode的方式是在字符串前加u,如u严python会根据第一行标明的coding来认定‘严’的格式然后转换为unicode格式       2.encode与decode 首先明确一点,python认定unicode为指定编码。从其他编码转为unicode叫做解码从unicode转为str叫做编码, 而任何两种字符编码之间如果想完成转化必须要通过unicode这个桥梁先把它抓化成unicode对象在转为另一个编码 encode是将unicode类对象编码成其他格式所以正规调用为unicode.encode() decode是将str类对象解码成unicode类对象所以正规调用是str.decode()   但是Python允许str.encode(),也允许unicode.decode()。 这里涉及隐式类型转化的问题 str.encode()实际上就等价于str.decode(sys.getdefaultencoding()).encode().而sys.defaultencoding如果不改的话默认是ascii所以这里的str不能是中文字符。 unicode.decode()会先将unicode转化成str然后再执行decode() 函数decode()有默认参数默认参数为sys.getdefaultencoding()。     3关于sys.getdefaultencoding() 这是sys模块的内置方法该方法返回python的默认编码。 以下为转载http://liguangming.com/how-to-use-utf-8-with-python python 中获得系统默认编码为 import sys print sys.getdefaultencoding()   而修改系统默认编码应写为 import sys reload(sys) sys.setdefaultencoding(UTF-8) 为什么需要一个看似多余的reload(sys)呢 因为python初始化后会删除 sys.setdefaultencoding 这个方法我们需要重新载入 先看下python的模块加载过程: # python -v # installing zipimport hook import zipimport # builtin # installed zipimport hook # /usr/local/lib/python2.6/site.pyc matches /usr/local/lib/python2.6/site.py import site # precompiled from /usr/local/lib/python2.6/site.pyc .... Python运行的时候首先加载了site.py在site.py文件里有这么一段代码: if hasattr(sys, setdefaultencoding):del sys.setdefaultencoding在sys加载后,setdefaultencoding方法被删除了,所以我们要通过重新导入sys来设置系统编码.     4 判断是否为unicode/str的方法   [python] view plain copy  isinstance(u‘中文‘, unicode) True    isinstance(‘中文‘, unicode) False     isinstance(‘中文‘, str) True    isinstance(u‘中文‘, str) False      5py3中的bytes和unicode 如果说在Python2中第一行的声明可以和文件实际采用的编码格式不相一致只是这样就不能用u汉字的形式将str转换为unicode了但是仍然可以用unicode方法或decode方法转换。比如我在python文件中声明codingutf-8,而我编辑这个文件的时候实际采用的编码是gbk。所以在python2中第一行声明conding的作用好像也仅仅局限于可以用u汉字的形式将str转换为unicode了。声明错了也无大碍。当然最好要保持一致。 但是在python3中第一行声明的coding就作用大了必须声明正确。直接用代码加以说明吧代码来自大神crifanhttps://www.crifan.com/summary_python_string_encoding_decoding_difference_and_comparation_python_2_x_str_unicode_vs_python_3_x_bytes_str/   python_3.x_str_to_bytes.py 1 #!/usr/bin/python2 # -*- coding: utf-8 -*-3 4 -------------------------------------------------------------------------------5 Function:6 【整理】Python中字符编码的总结和对比Python 2.x的str和unicode vs Python 3.x的bytes和str7 http://www.crifan.com/summary_python_string_encoding_decoding_difference_and_comparation_python_2_x_str_unicode_vs_python_3_x_bytes_str8 9 Author: Crifan 10 Verison: 2012-11-29 11 ------------------------------------------------------------------------------- 12 13 14 def python3xStrToBytes(): 15 Demo Python 3.x (unicode) str to bytes 16 17 18 zhcnUnicode 1.此处的Python 3.x中默认字符串的写法就已经是unicode类型的字符串了。2.当然还是有一点前提的那就是你在(1)此处python文件所指定的编码类型(2)要和你当前python文件实际所采用的编码类型要匹配和一致即此处两者均是UTF-8所以Python解析器才能正确的将我们此处所输入的UTF-8的中文字符正确地解码为对应的Unicode字符串的3.接下来将要演示的是打印对于的此处字符的类型然后再直接输出显示到windows的GBK编码的cmd中; 19 print(type(zhcnUnicode),type(zhcnUnicode)); #type(zhcnUnicode) class str 20 zhcnGbkBytes zhcnUnicode.encode(GBK); 21 print(You should see these zh-CN bytes in windows cmd normally, which begin with b preffix: zhcnGbkBytes%s%(zhcnGbkBytes)); #You should see these zh-CN bytes in windows cmd normally, which begin with b preffix: zhcnGbkBytesb1.\xb4\xcb\xb4\xa6\xb5 ...... \xc2\xeb\xb5\xc4cmd\xd6\xd0 22 23 ############################################################################### 24 if __name____main__: 25 python3xStrToBytes();   python_3.x_bytes_to_str.py   1 #!/usr/bin/python2 # -*- coding: utf-8 -*-3 4 -------------------------------------------------------------------------------5 Function:6 【整理】Python中字符编码的总结和对比Python 2.x的str和unicode vs Python 3.x的bytes和str7 http://www.crifan.com/summary_python_string_encoding_decoding_difference_and_comparation_python_2_x_str_unicode_vs_python_3_x_bytes_str8 9 Author: Crifan 10 Verison: 2012-11-29 11 ------------------------------------------------------------------------------- 12 13 14 def python3xBytesToStr(): 15 Demo Python 3.x bytes to (unicode) str 16 17 18 #此处的bytes只能接受ASCII字符 19 #想要输入非ASCII的字符则只能通过\xYY的十六进制方式输入其中YY为对应的16进制的值 20 #此处我是已经在别处通过把对应的中文: 21 #1.Python 3.x中给字符串前面添加字母b表示是bytes的字符串2.此处之所以可以实现接下来的Python解析器可以正确的将bytes解码为Unicode的str那是因为(1)此处python文件所指定的编码类型(2)要和你当前python文件实际所采用的编码类型是一致的都是UTF-83.接下来将要演示的是将此bytes字符串解码为Unicode的str然后在此处的终端windows的默认编码为GBK的cmd中显示出来; 22 #解析为UTF-8的bytes了所以下面你看到的是解析后的一堆bytes 23 24 zhcnBytes b1.\xe6\xad\xa4\xe5\xa4\x84\xe7\x9a\x84\xef\xbc\x8cPython 3.x\xe4\xb8\xad\xef\xbc\x8c\xe9\xbb\x98\xe8\xae\xa4\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe7\x9a\x84\xe5\x86\x99\xe6\xb3\x95\xef\xbc\x8c\xe5\xb0\xb1\xe5\xb7\xb2\xe7\xbb\x8f\xe6\x98\xafunicode\xe7\xb1\xbb\xe5\x9e\x8b\xe7\x9a\x84\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe4\xba\x86\xe3\x80\x822.\xe5\xbd\x93\xe7\x84\xb6\xef\xbc\x8c\xe8\xbf\x98\xe6\x98\xaf\xe6\x9c\x89\xe4\xb8\x80\xe7\x82\xb9\xe5\x89\x8d\xe6\x8f\x90\xe7\x9a\x84\xef\xbc\x8c\xe9\x82\xa3\xe5\xb0\xb1\xe6\x98\xaf\xef\xbc\x8c\xe4\xbd\xa0\xe5\x9c\xa8(1)\xe6\xad\xa4\xe5\xa4\x84python\xe6\x96\x87\xe4\xbb\xb6\xe6\x89\x80\xe6\x8c\x87\xe5\xae\x9a\xe7\x9a\x84\xe7\xbc\x96\xe7\xa0\x81\xe7\xb1\xbb\xe5\x9e\x8b(2)\xe8\xa6\x81\xe5\x92\x8c\xe4\xbd\xa0\xe5\xbd\x93\xe5\x89\x8dpython\xe6\x96\x87\xe4\xbb\xb6\xe5\xae\x9e\xe9\x99\x85\xe6\x89\x80\xe9\x87\x87\xe7\x94\xa8\xe7\x9a\x84\xe7\xbc\x96\xe7\xa0\x81\xe7\xb1\xbb\xe5\x9e\x8b\xef\xbc\x8c\xe8\xa6\x81\xe5\x8c\xb9\xe9\x85\x8d\xe5\x92\x8c\xe4\xb8\x80\xe8\x87\xb4\xef\xbc\x8c\xe5\x8d\xb3\xe6\xad\xa4\xe5\xa4\x84\xef\xbc\x8c\xe4\xb8\xa4\xe8\x80\x85\xe5\x9d\x87\xe6\x98\xafUTF-8\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xef\xbc\x8cPython\xe8\xa7\xa3\xe6\x9e\x90\xe5\x99\xa8\xef\xbc\x8c\xe6\x89\x8d\xe8\x83\xbd\xe6\xad\xa3\xe7\xa1\xae\xe7\x9a\x84\xe5\xb0\x86\xe6\x88\x91\xe4\xbb\xac\xe6\xad\xa4\xe5\xa4\x84\xe6\x89\x80\xe8\xbe\x93\xe5\x85\xa5\xe7\x9a\x84UTF-8\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6\xef\xbc\x8c\xe6\xad\xa3\xe7\xa1\xae\xe5\x9c\xb0\xe8\xa7\xa3\xe7\xa0\x81\xe4\xb8\xba\xe5\xaf\xb9\xe5\xba\x94\xe7\x9a\x84Unicode\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2\xe7\x9a\x84\xef\xbc\x9b3.\xe6\x8e\xa5\xe4\xb8\x8b\xe6\x9d\xa5\xe5\xb0\x86\xe8\xa6\x81\xe6\xbc\x94\xe7\xa4\xba\xe7\x9a\x84\xe6\x98\xaf\xef\xbc\x8c\xe6\x89\x93\xe5\x8d\xb0\xe5\xaf\xb9\xe4\xba\x8e\xe7\x9a\x84\xe6\xad\xa4\xe5\xa4\x84\xe5\xad\x97\xe7\xac\xa6\xe7\x9a\x84\xe7\xb1\xbb\xe5\x9e\x8b\xef\xbc\x9b\xe7\x84\xb6\xe5\x90\x8e\xe5\x86\x8d\xe7\x9b\xb4\xe6\x8e\xa5\xe8\xbe\x93\xe5\x87\xba\xe6\x98\xbe\xe7\xa4\xba\xe5\x88\xb0windows\xe7\x9a\x84GBK\xe7\xbc\x96\xe7\xa0\x81\xe7\x9a\x84cmd\xe4\xb8\xad; 25 print(type(zhcnBytes),type(zhcnBytes)); #type(zhcnBytes) class bytes 26 zhcnUnicodeStr zhcnBytes.decode(UTF-8); 27 print(You should see these zh-CN unicode str in windows cmd normally: zhcnUnicodeStr%s%(zhcnUnicodeStr)); #You should see these zh-CN unicode str in windows cmd normally: zhcnUnicodeStr1.此处的Python 3.x中 ...... 然后再直接输出显示到windows的GBK编码的cmd中 28 29 ############################################################################### 30 if __name____main__: 31 python3xBytesToStr(); 【总结】 如果你正确声明指定了文件编码的话那么python 3.x中对于你所写的字符串默认会自动解析并存储为Unicode的(这里的存储指的是代码从文件载入到内存中)所有后期的各种处理包括在cmd中的输出都会很好的自动转换为对应的编码并输出显示的比如输出到cmd中会自动转换为cmd的GBK编码得以正确显示的   #-*-coding:utf8;-*- #py2 a新 b\xe6\x96\xb0 print ab#True#a在百分之99的情况下都与b相同只有一种情况下不同cu新du\xe6\x96\xb0#报错   #-*-coding:utf8;-*- #py2 au\u4e2d bu中 print ab#true #-*-coding:utf8;-*- #py3a\u4e2d b中 print (ab)#true   转载于:https://www.cnblogs.com/saolv/p/8158159.html
http://www.zqtcl.cn/news/452351/

相关文章:

  • 做网站前新闻录入网站模板
  • 网站域名做跳转要收费吗科技信息期刊
  • 登别的网站应怎么做网站推广广告词大全集
  • 漯河城乡建设管理局网站wordpress icon class
  • 买空间哪个网站好广州多少网络科技有限公司
  • 网站的网络推广方案营销型网站建设论文
  • 苏州做网站便宜的公司哪家好门店管理系统app
  • 学校多语言网站建设网络维护网站建设培训
  • Wordpress外贸网站搭建公司建站系统的应用场景
  • 网站推广网络推广方wordpress汉语公益
  • 长沙做网站的公司有哪些宁波奉化建设局网站
  • 温岭专业自适应网站建设承德招聘信息网
  • 做公司网站的模板下载wordpress e
  • 网站建设基本知识wordpress 没有小工具
  • 北京完美建设有限公司网站酒店加盟
  • 山东网络推广网站德州市建设局质监站网站
  • api模式网站开发网站打开后显示建设中
  • 排名好的郑州网站建设免费营销培训
  • 美橙互联网站网站主要应用
  • 淘宝客网站做appuv推广平台
  • 网站公司可以做英文网吗图片加字制作免费
  • 海口个人建站模板精品课程云网站建设
  • 阿里网站空间莱芜新闻视频回放
  • 高清网站建设的好处wordpress 房产模板
  • 在建工程查询网站怎么自己开发网站
  • 旧电脑怎么做网站如何自己弄个免费网站
  • 聊城网站营销WordPress工作发布
  • 建造网站需要什么汽车网站建设
  • 网站建设app郑州发布评论
  • 福州网站制作建设网页设计图片是怎么显示的