欢迎光临!
若无相欠,怎会相见

Python编码问题

遇到的问题

今天,继续学习Python的时候,阅读的是《可爱的Python》我是在模仿Windows的命令行,同时也是在完善之前写的一个Python获取目录信息的一个小脚本。然而,却遇到了Python的编码问题,而且,我设置的默认编码是UTF-8。如下:

图1 错误信息

还有这个:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-18: ordinal not in range(128)

Python编码

在Python中,字符串的编码是Unicode编码。因此在做编码转换时,把Unicode编码作为中间编码,就是先把其他编码的字符串解码为Unicode编码的字符串,然后在转化为想要的编码方式。

解码方法:decode,把其他编码方式装换为Unicode编码方式。使用方法:首先有一个utf-8编码的字符串str="中国" ,把它转化为Unicode编码:str.decode('utf-8') 。

编码方法:encode,把Unicode编码转化为其他编码。使用方法:有一个Unicode编码的字符串str="中国" ,把它转化为GB2312编码:str.encode('gb2312') 。

解决办法

上述图一的情景是这样的:我在模拟命令行的时候,代码的默认编码是UTF-8,可是在终端中运行的时候,中文全部乱码。于是,我就把字符串前面加了 u 把字符串编码变成Unicode编码,结果,出现了图一下方的错误信息。没办法,我就把编码全部转化为gb2312编码。结果正常。如下:

具体代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2017/9/9 22:35
# @Author  : Darker
# @Site    : www.liangz.org
# @File    : PyDirInfov0.1.py
# @Software: PyCharm


import sys
import cmd
# from PyDirTools import *


class PyDir(cmd.Cmd):
    def __init__(self):
        cmd.Cmd.__init__(self)
        self.prompt = "(PyDirInfo)>"
        self.intro = (u"""PyDirInfo v0.1 使用说明
        dir  目录名      #指定保存和搜索目录,默认是当前目录
        walk 文件名      #指定保存信息文件名,使用“ *.pdi ”
        find 关键词      #在保存和搜索目录中遍历所有.pdi文件,输出含有关键词的行
        ?               #查询
        EOF              #退出系统
        """).encode('gb2312')

    def help_EOF(self):
        print "退出应用程序"

    def do_EOF(self, line):
        sys.exit()

    def help_walk(self):
        print "扫描目录内容并导出到文件"

    def do_walk(self, filename):
        if filename == "": filename = raw_input("输入要保存的文件名:")
        print "扫描内容保存到:'%s'" % filename

    def help_dir(self):
        print "指定保存/搜索目录"

    def do_dir(self, pathname):
        if pathname == "": pathname = raw_input("输入指定保存/搜索目录:")

    def help_find(self):
        print "搜索关键词"

    def do_find(self, keyword):
        if keyword == "":keyword = raw_input("输入搜索关键词:")
        print "搜索关键词:'%s'" % keyword

if __name__ == '__main__':
    DirInfo = PyDir()
    DirInfo.cmdloop()

目前,脚本正在完善中。

赞(0) 打赏
转载请注明:飘零博客 » Python编码问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临