zoukankan      html  css  js  c++  java
  • python编码

    一、编码

    常见的编码比较:
    ascii:1个字节
    unicode:2个字节
    utf-8:英文1个字节,汉字3个字节

    二、一个编码问题

    问:如下代码设置了在代码中添加了coding: utf-8,但是在cmd下面运行的时候还是输出乱码,这是什么情况?

    test.py:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    print “你好”
    

    答: cmd默认的编码是GBK格式的,所以只在代码里写了coding: utf-8也是不行的。

    解决方案:

    1.修改cmd的编码为utf-8格式:
    此方法这里就不详述了,参考链接
    2.使代码以gbk的格式输出:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    temp = "你好"
    temp_unicode = temp.decode('utf-8')        #把utf-8解码成unicode格式
    temp_gbk = temp_unicode.encode('gbk')        #把unicode编码成gbk格式
    print temp_gbk
    

    python3和与python2的差异:

    对于上面解决方案中的代码可能只存在于python2中,在python3中情况就大不一样了。
    在python3中utf-8编码能直接转成gbk格式的编码,在python3中代码可以写成下面这样:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    temp = "你好"
    temp_gbk = temp.encode('gbk')		#在python3中utf-8编码能直接转成gbk格式的编码
    print temp_gbk
    

    三、不同场景下的字符编码方式

    在现在计算机中通用的字符编码工作方式:在内存中统一使用unicode,需要保存到硬盘或要传输的时候就会转为utf-8。

    • 使用记事本编辑的时候,文件读取的utf-8字符被转换为unicode字符到内存里,编辑完成后,保存的时候再把unicode转换为UTF-8保存到文件里
    • 浏览网页时,服务器会把动态生成的unicode转换为utf-8,再传输到浏览器。因此会在网页源码上有类似的信息,表示该网页用的就是utf-8编码。

    四、字符串与字节

    补充

    bytes类型(和int,str类似的数据类型)

    s = "你好"
    for i in s:
        bytes_list = bytes(i,encoding='utf-8')        #bytes可以把字符串转换为字节
        print(bytes_list)
    
        for j in bytes_list:    #在迭代输出16进制的字节时,默认以10进制方式输出
            print(j)
    
    OUTPUT:
    b'xe4xbdxa0'
    228
    189
    160
    b'xe5xa5xbd'
    229
    165
    189
    

    字符串与字节的转换

    a ="你好"
    
    b = bytes(a,encoding='utf-8')       #把字符串转换为字节类型
    c = str(b,encoding='utf-8')       #把字节转换为字符串类型
    
    print(b)
    print(c)
    
    OUTPUT:
    b'xe4xbdxa0xe5xa5xbd'
    你好
    

    应用场景

    两个server互相通信,如果使用utf-8编码,则通信过程如下:

  • 相关阅读:
    关于WPF 中 “System.Windows.Markup.XamlParseException”类型的未经处理的异常在 PresentationFramework.dll 中发生 异常的处理。
    RelativePanel 属性说明
    c# winform中遍历控件
    wpf中遍历界面控件的方法
    wpf 处理倒计时问题
    wpf 处理获取鼠标点击方法
    界面控件委托方式 wpf
    如何在WPF 应用中获取窗体或控件的句柄
    关系型数据库版本控制之(Flask SQLalchemy Alembic )
    项目管理方法论之六西格玛管理
  • 原文地址:https://www.cnblogs.com/whatisfantasy/p/5951294.html
Copyright © 2011-2022 走看看