zoukankan      html  css  js  c++  java
  • 编码方式

    Python3中有两种格式:

        str:str>>bytes 称为编码(encode)方法有1.re=bytes(“ccc”,“utf8”)2.re=“ccc”.encode(“utf8”)py3中str都是Unicode编码。兼容utf8,三字节表示中文。

        bytes:bytes>>str称为解码(decode)方法有1.re = str(“ccc”,“utf8”)2.re=“ccc”.decode(“utf8”)bytes类型有相对应的编码协议。即什么样的编码形式               (如utf8)就仍用什么样的解码。

    Python2中也有两种:

      str:即原来的3中的bytes s=“曹” 无法print,会报错。即使声明utf8,但是存储方式为bytes。

      Unicode:即str u“你好” 表示内容用的Unicode编码。

    pyhton3中页面用到utf8,2中用的阿斯克码。

    主要问题:

    1.如何保存到磁盘的,如何取出来。

    在pycharm中,每次写入文件都会自动保存到磁盘中,存入的编码为pycharm默认的编码方式(2中为ascii,3中为utf8)。

    所以在pycharm中再运行此文件时,解释器也必须按照存入的编码方式运行。所以我们在文件前两行声明encoding:***。(声明是给解释器看的)

    这样运行不出错。同时,声明之后pycharm会锁定右下角编码格式保证两者的 统一性。

    2.py3中,字符串的在内存中保存方式都是Unicode。所以在cmd中运行文件后,py3中正常显示,py2中会报错。py的汉字存储的是btyes。

    3.涉及到open,下图问题:

    上图中的乱码问题

    运行文件中用到open时,会调用操作系统打开文件,而win用的是gbk。返回给read后是gbk编码后的格式,所以解释器用的默认utf8无法正确解码。test中是两个字,所以有6个字节的utf8格式的字节码。而gbk两个字节一个字,显示了3个汉字。

    解决办法:加个打开时解码方式。

    f = open("test","r",encoding='utf8')
    print(f.read())

     详细:http://www.cnblogs.com/khal-Cgg/p/5948805.html

  • 相关阅读:
    List注意点【修改】
    最近遇到的笔试面试题(3)
    关于阅读
    各种语言
    最近遇到的笔试面试题(2)
    最近遇到的笔试面试题(1)
    5自由落体运动
    4 1000以内完数
    3水仙花数
    判断101-200之间的素数
  • 原文地址:https://www.cnblogs.com/khal-Cgg/p/5948802.html
Copyright © 2011-2022 走看看