zoukankan      html  css  js  c++  java
  • python2中 print()中文乱码怎么办

    python内部使用的是unicode编码,而外部会用到各种编码,中国最常用utf-8。

    python默认会认为源代码文件是ascii编码,ascii编码中不存在中文,遇到中文会抛出异常。

    一、声明utf-8编码格式

    此时需要在头部声明utf-8编码格式,常用声明方法有这么3种

    # coding=utf-8
    
    
    # coding:utf-8
    
    
    #!/usr/bin/python 
    # -*- coding:utf-8 -*-

    注意:

    前两种不能有空格。

    第一行和第二行重复定义,第一行生效,第二行不生效。

    在python 里认为utf8和utf-8是一种编码格式utf-8。

    不过这不是万能的,对于有的汉字,还是偶尔会乱码,这时候转换成unicode对象一般就可以了

    二、转换成unicode对象

     将字符串转换成unicode对象常用的3种方法:

    1、字符串前面加u

    s1=u'国道图层' 
    print ('s1:'+s1)

    u将字符串以unicode格式存储。python头部声明的utf-8编码识别字符串,然后转换成unicode对象。

    也就是说不加u就是某种编码的字符串,这里是utf-8编码的字符串。

    如果加u就是一个unicode对象。

    可以用type()函数查看数据类型。

    2、unicode()

    s2=unicode('国道图层', 'utf-8') 
    
    print ('s2:'+s2)

    unicode类需要传入两个参数,第一个是字符串参数,第二个是编码参数,会将字符串封装为一个unicode对象。

    3、decode()

    s3='国道图层'.decode('utf-8')
    print ('s3:'+s3)

    decode是将普通字符串按照参数中的编码格式进行解析,然后生成对应的unicode对象。

    补充:与decode()相反的就是encode(),encode()是将一个unicode对象转换为参数中编码格式的普通字符。如下:

    s4=unicode('国道图层', 'utf-8').encode('utf-8')
    print ('s4:'+s4)

    三、代码测试

    #coding=utf-8
    
    s='国道图层'
    print ('s:'+s)
    print(type(s))
    
    s1=u'国道图层' 
    print ('s1:'+s1)
    print(type(s1))
    
    s2=unicode('国道图层', 'utf-8') 
    print ('s2:'+s2)
    print(type(s2))
    
    s3='国道图层'.decode('utf-8')
    print ('s3:'+s3)
    print(type(s3))
    
    s4=unicode('国道图层', 'utf-8').encode('utf-8')
    print ('s4:'+s4)
    print(type(s4))

    运行结果:

    >>> ================================ RESTART ================================
    >>> 
    s:鍥介亾鍥惧眰
    <type 'str'>
    s1:国道图层
    <type 'unicode'>
    s2:国道图层
    <type 'unicode'>
    s3:国道图层
    <type 'unicode'>
    s4:鍥介亾鍥惧眰
    <type 'str'>
  • 相关阅读:
    v-show和v-if隐藏的区别(备份前端网)
    正则表达式别人好点的解析(备份前端网)
    【干货】vue2.0-模块化全局自定义过滤器和vue中export和export default用法(前端网备份)
    【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)
    JavaWeb学习笔记(六)—— Cookie&Session
    JavaWeb学习笔记(五)—— request
    JavaWeb学习笔记(四)—— response
    JavaWeb学习笔记(三)—— Servlet
    JavaWeb学习笔记(二)—— Tomcat服务器
    JavaWeb学习笔记(一)—— Http协议
  • 原文地址:https://www.cnblogs.com/wodewei/p/14377133.html
Copyright © 2011-2022 走看看