专栏首页python3Python for Windows 中

Python for Windows 中

  1. 关于python编码的基本常识
    • 在python里面 “明文”是unicode类型 “密文”是其他的编码格式 如gbk utf-8 latin-1等等
    • 编码: “明文”->”密文” .encode([目标编码格式]) 对象必须为unicode类型
    • 解码: “密文”->”明文” .decode([源编码格式]) 对象为str类型
    • 对于汉字 一共有三大类编码方式
      • 以中文汉字”李”为例子
      • a. unicode类 机器码 \x67\x4e
        • unicode(python表示) \u674e
        • HTML Entity &#x674E
        • UTF-16(BE) 0x674E
        • UTF-32(BE) 0x0000674E
      • b. UTF-8类 机器码 \xe6\x9d\x8e
        • UTF-8(python表示) \xe6\x9d\x8e
        • URL Escape Code %E6%9D%8E
        • Octal Escape Sequence \346\235\216
      • c. gb类 机器码 \xc0\xee
        • gb2312 gbk gb18030 \xc0\xee
  2. 设置.py文件的编码格式
    • .py文件中出现的字符串文字量的编码格式
    • 包括前面带u的(转换成unicode格式的字符串) 首先也是根据设置的文件编码格式读取字符串文字量 再作unicode的转换
    • 如果没加coding编码的设置 将默认设置为操作系统的默认编码
    • 操作系统的默认编码 windows下为ascii
      • 可以从出错信息看出来 SyntaxError: Non-ASCII character '\xe6' in file... , but no encoding declared;
      • 另外从sys.getdefaultencoding()亦可得知 >>> sys.getdefaultencoding() 'ascii'
    • 设置方式 在.py文件首部 加上代码 #coding=<encoding>
      • 根据不同的编辑器,确定不同的<encoding>
      • Sublime Text编辑器:
        • 由于ST编辑器默认即为UTF-8编码 所以<encoding>utf-8
      • 系统自带的记事本:
        • 记事本默认编码为ascii/gbk(“另存为”中编码选项为”ANSI”) 要正确读取.py文件里的中文 设置为gbk
        • 记事本”另存为”的4种编码方式含义
          • ANSI: 对英文系统即ASCII 对中文系统即gbk/big5
          • Unicode: UTF-16(LE)
          • Unicode big endian: UTF-16(BE)
          • UTF-8
  3. 字符串文字量的类型
    • 前面加u 为’unicode’类型 >>> str_u = u"中文" >>> type(str_u) <type 'unicode'>
    • 前面不加u 为’str’类型 >>> str = str_u.encode('gbk') >>> type(str) <type 'str'> >>> str1 = "中文" >>> type(str1) <type 'str'>
  4. 关于print输出中文字符串
    • unicode类型 编码为’gbk’均可正常显示文字 >>> str = "中文" >>> print str 中文 >>> str_u = u"中文" >>> print str_u 中文
    • 编码为’ascii’ 则会出现UnicodeEncodeError错误 >>> print str_u.encode('ascii') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
    • 编码为’utf-8’ 则会乱码显示 >>> print str_u.encode('utf-8') 涓枃
  5. Windows的文件/文件夹的中文名字
    • 都是gbk编码
    • 所以在读写文件/文件夹名字时 必须先.encode('gbk')
  6. Windows读写文件内容
    • 跟文件名字不一样,文件内容的编码视需求而定(gbk/utf-8)
    • 建议编码成utf-8 这样Sublime Text打开后不需要ConvertToUTF8
  7. 爬虫结果的存储
    • 现在的网页基本都是UTF-8编码(HTML5默认编码)
    • 经过BeautifulSoup处理后的HTML元素内容 类型为NavigableString
    • 可以直接print 由第3点可推断出 NavigableString底层类型为unicode
    • 经过.replace()方法后可转换为unicode类型
  8. 日语假名和日语汉字
    • 上述说明中所有涉及’gbk’编码的中文处理方式 同样适用于日语假名和汉字
  9. 其他
    • 这篇文章提倡的最佳实践 - 不使用sys.setdefaultencoding(‘utf-8’)解决编码问题 - 字符串中间处理过程全部转化为unicode处理 只在数据的入口和出口作相应的.decode()和.encode()处理
    • 查阅文字的unicode类编码和UTF-8类编码

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python编码的意义

    当你用python打开一篇中文文档,准备读取里面的数据开始实验... 当你处理好你的数据,打算打印出易于阅读的结果给boss检查... 甚至当你刚刚开始编写自己...

    py3study
  • python编码问题

    基本常识 ASCII编码是1个字节bytes,而Unicode编码通常是2个字节 1bytes=8bit 在计算机内存中,统一使用Unicode编码,当需要保存...

    py3study
  • 彻底弄懂python编码

      在编写python程序的过程中,中英文混用经常会出现编码问题。围绕此问题,本文首先介绍编码的含义及常用编码,随后列举几个python经常遇到的编码异常及解决...

    py3study
  • C#7.1 新增功能

    C# 7.1 是 C# 语言的第一个点版本(更新版本)。 它标志着该语言发布节奏的加速。 理想情况下,可以在每个新功能准备就绪时更快推出新功能。 C# 7.1 ...

    张传宁老师
  • 微信用久了,越来越占内存,有实际解决方案没?

    随着移动互联网的深度发展,各个应用厂家就是在争夺用户的上网时间了,就拿国内最大的流量的体腾讯公司来讲,占据着绝对优势的流量统治地位,这是因为把持着如此多的流量所...

    程序员互动联盟
  • Adobe放出P图新研究:就算丢了半个头,也能逼真复原

    不好不好,这可是限量版24k纯金足球纪念勋章挂坠的唯一存世照片,要是没了,就只能飞8个航班越过54座山丘穿越25000公里拿出我逆光也清晰的R213重新拍一张了...

    量子位
  • 秒懂Merkle Tree 与SPV

    这篇文章对于刚刚接触区块链的读者有点难,适合有一定程序背景知识的朋友阅读,普通用户需要了解SPV(简易支付验证)的概念,知道默克尔树的基本原理也有助于理解轻钱包...

    申龙斌
  • 10个字符串相关的PHP代码片段

    1、自动移除字符串中的 HTML 标记 在用户表单中,你可能希望移除所有不必要的 HTML 标记。使用 strip_tags() 函数可以简单地做到这一点: $...

    wangxl
  • UiAutomator测试中如何恢复手机输入法

    本人在使用UiAutomator测试的时候,需要用到utf7输入法,每次执行之前都会切换到utf7输入法,然后每次执行结束之后再切换到正常输入法,由于测试机器比...

    八音弦
  • redis 通信协议,php实现redis协议

    string(34) "*3CRLF$3CRLFsetCRLF$1CRLFa$8CRLFtioncicoCRLF"

    仙士可

扫码关注云+社区

领取腾讯云代金券