You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python编码错误咨询:未声明编码且含非UTF-8字符的解析与修复

搞定Python编码错误:非UTF-8字符未声明编码的问题

错误含义拆解

这个错误说白了就是Python读你的firstday.py文件时卡壳了——它在第4行发现了一个以\x85开头的字节,但它默认用UTF-8编码来解析文件,这个字节不符合UTF-8的规则,而且你也没提前告诉它这个文件用的是什么编码,所以它不知道怎么处理这个奇怪的字符,只能报错给你看。

为啥会出现这个问题?

大概率是你代码里的那个省略号…搞的鬼——这不是普通的三个点...,而是一个特殊的Unicode字符。如果你的文件保存时用的不是UTF-8编码(比如Windows系统常用的Windows-1252),这个字符就会被转换成\x85这样的字节。而Python默认会以UTF-8来读取.py文件,当它遇到这个不符合UTF-8规则的字节时,就会抛出这个编码错误。

另外,也有可能是你从其他地方复制粘贴代码时,不小心带进来了一些不可见的特殊空白字符,这些字符的编码也不是UTF-8。

两种修复方案任你选

方案1:给文件加编码声明

在你的Python文件第一行加上编码声明,告诉Python这个文件用的是什么编码。比如如果你的文件是用Windows-1252保存的,就加:

# coding=windows-1252

这样Python就会用指定的编码来读取文件,自然就能解析那个特殊字符了。

方案2:替换特殊字符并保存为UTF-8

把那个特殊的省略号…换成普通的三个点...,然后把文件保存为UTF-8编码(几乎所有代码编辑器都能设置,比如VS Code右下角可以选编码,PyCharm在保存时也能指定)。修复后的代码长这样:

# -*- coding: utf-8 -*-
year = eval(input("Enter the year: "))
day = (1+5*((year-1)%4)+4*((year-1)%100)+6*((year-1)%400))%7
print("The 1st of January",year,"falls on day",day,end = " ")
print("of the week(0=Sun,...,6=Sat).")

这里第一行的# -*- coding: utf-8 -*-是可选的,但加上它能明确告诉Python文件编码,避免后续再出问题。

内容的提问来源于stack exchange,提问作者James Van Heerden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:36:01