Python 文件在 Windows 控制台输出乱码问题、报错问题 总结 以统计记事本中文字数为例

报错案例

情况下我想用 Python 写一个统计记事本中文字数的脚本,然后直接在windows控制台输出,但当写好代码运行时发现控制台中文报错

# -*- coding: UTF-8 -*-

print("中文测试")

上述代码使用 Python 常用 Phchrm 运行时是没有问题,运行结果如下:
在这里插入图片描述
但当时同样的代码在使用了 Windows 控制台运行是直接报错如下:
在这里插入图片描述
于是我就在各个搜索引擎寻找答案,给出的答案如下:

  1. Windows 控制台不支持 utf-8 ,使用 GBK 但有些字符 GBK 无法表示,导致 print 函数无法解码读取的时候用 utf-8 ,更改标准输出编码为 gb18030 。试了更换后直接中文乱码了倒是不报错了,还是不能显示中文,不排除这种可能。
  2. windows 下控制台编码,使用 CHCP 命令更改活动代码页编号。输入CHCP,回车;(显示为936,也就是当前页码,代表当前使用的是简体中文(GB2312)编码),输入CHCP 65001,回车;(指定为utf-8)。以下为更换截图
    在这里插入图片描述
    更换后,更换命令 CHCP 65001。
    在这里插入图片描述
    上述目的就是说 Windows 控制台编码格式的默认属性是 gbk ,所以更换为 utf -8 编码格式。
    结果还是不行,当然不排除这种可能
  3. 当我们创建 .py 文件时,我是直接把创建了一个 txt 文本,然后在更改后缀名为 py文件。这样就涉及一个问题,Windows 文本文件直接默认的编码格式为 ANSI ,导致在解码 utf-8 文件时就是报上面的错误,就是中文报错或乱码问题。截图如下
    在这里插入图片描述
    更改为如下图。
    在这里插入图片描述
    然后就可以直接运行了,运行截图如下:
    在这里插入图片描述
    到此我遇见的报错就可以就是目前的解决方案。我推荐先使用第三种先查看文件字符编码集,如果是
    ANSI 就先更改 utf-8 格式。不行再试下其他方案。更改方案为:记事本—>文件—>另存为。就可以看到上面的界面,然后直接更改就好了。
    在这里插入图片描述
    下面是我截取其他大佬统计记事本中文字数的代码,以作记录。代码如下
# -*- coding: UTF-8 -*-
from sys import argv

def statistics(file_name):
    with open(file_name, 'r',encoding='utf-8') as f:
        list_f = [line.strip('\n') for line in f]
        cols=[]  # 创建一个空的列表
        for line in list_f:
            list_split = line.split() # 对列表进行切片
            list_str = ''.join(list_split) #
            cols.append(list_str)

    return '统计文件中的字符个数为:{}'.format(len(''.join(cols)))

def TryOut():
    print("getAriticles.try()")

if __name__ == '__main__':
    file_name = argv[1]
    print(statistics(file_name))

将上述代码保存在 .py 文件中,然后代开 PowerShell 窗口运行命令:python m.py “c.txt”
在这里插入图片描述
运行结果如上图。当然如果不想有那么多问题可以直接在开发工具如 Pychrm 中直接运行终端也是可以的。结果如图
在这里插入图片描述
注意:以上运行是 txt 文件与 py 文件处于同意目录文件中。如果不是则需要 txt 文件绝对路径才能运行,望知悉。
记录这个案例的原因主要是花费了将近一个多小时才解决掉。最后发现是如此简单的一个细节问题导致的,不过如果是用 idle 直接创建的 py 文件编码格式就没问题了。

最后总结

细节决定一切,保持耐心,这将不是问题。感谢阅读至此,不急走的话可以帮忙点个小小的赞或点点关注,以至于点点关注不迷路,以后有更多分享可以助力愉快开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博扬java张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值