文件: https://www.qsc.zju.edu.cn/box/-57009898
s = '但在许多人眼里是羞耻的是隐秘的视为了一会对大多数个开音加以独自生活一点“总就《和陌生人说话》栏老过好几次他非常直白地表示来公园就是为了甚至坦言自己最疯狂的时候其实这背后隐藏的是孤独寂寞是对和陪伴的渴望希望大家在面对老年人生活时不要戴着有色眼镜去看待而是去正视他们的需求往往老年人的需求被忽视、不被理解带来的一个结果就是老年人耻于谈也没人告诉著作'
print(s)
保存为脚本文件, 如 test.py, 然后运行就会报错
文件编码 utf-8 没有 bom, python3.7.5, windows10
python3 test.py
File "test.py", line 1
SyntaxError: Non-UTF-8 code starting with \xe5' in file test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
文件开头加上注释 # -*- coding: utf-8 -*-
或者文件编码修改为 utf-8 有 bom, 就没问题.
1
ipwx 2020-04-10 23:50:18 +08:00
。。。因为 windoge 平台下面,文件默认以 local encoding 被解析啊。。。(比如中文 windoge 以 gbk 被解析)。
但是你实际的常量是 utf-8 的。自然就报错了。 |
2
Xusually 2020-04-10 23:55:03 +08:00
字符串编码问题吧。
没细看,我 macOS 复制你帖子中的字符串保存后没有报错。 估计原始文件的编码有问题。 |
3
Jirajine 2020-04-11 00:00:37 +08:00
先执行`chcp 65001`再运行试试?
|
4
jin7 OP 好吧 `open('README.txt', 'r')` 在 windows 是也是默认用 gbk 编码打开文件 看来我存在误解, 以为 python 会把所有 py 脚本的编码视为 utf-8
|
6
jin7 OP 之前不是有人说 python3 加` # -*- coding: utf-8 -*- `没有必要了么, 现在看来还是有必要的....
|
7
shakespark 2020-04-11 00:12:09 +08:00 via iPhone
先用 ultraedit 之类的工具把 py 文件本身的编码改成 utf8
然后 open 的参数里加上 encoding utf8 试试呢? |
8
jin7 OP @shakespark #7 不是这个问题 这个没问题 文件: https://www.qsc.zju.edu.cn/box/-57009898
|
9
Trim21 2020-04-11 00:19:14 +08:00
试了一下直接用 open('a.py', encoding='utf8')读取文件是能正常读取的
文件不是以 gbk 解析的,没有注释标明 encoding 的文件是以 utf8 解析的,只不过可能 windows 上面是 utf8 with bom,所以在这个字符串(\xe4\xbd\x86\xe5\x9c...)截取掉前三个字节的开头'\xe5'报错了 |
10
imn1 2020-04-11 00:34:16 +08:00
|
11
jin7 OP |
12
jin7 OP 多谢各位的回答
|