Python3 下读取 .txt 文件中文乱码问题

2017-08-23 15:18:39 +08:00
 schema

基本情况: Vultr $2.5/year, CentOS 7, 安装的是 Python3.6。

@app.route("/douban", methods=['GET'])
def doubanFM():
    f = open('douban.txt', 'r')
    txt = f.read()
    lines = txt.split('#\n')
    lines = lines[:-1]
    return random.choice(lines)

用 Python3.6 运行上面的代码,出现错误。其中,douban.txt 文件中大都为中文字符,.py 文件开头加了 #coding:utf-8。主要错误代码如下:

...
...
File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib64/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/root/weather/app.py", line 32, in DoubanFM
    txt = f.read()
  File "/usr/lib64/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

后来没办法换用 CentOS 自带的 Python2 运行,没错误,能正常输出中文。但我很想知道为啥用 Python3.6 来运行就不行,求相应解决办法。

9927 次点击
所在节点    Python
24 条回复
mingyun
2017-08-24 21:49:09 +08:00
@schema 文件失效了?
schema
2017-08-25 09:31:44 +08:00
@ekeyme 谢谢回复。

1、locale 后返回都是 UTF-8 ;
2、c 库我没明确升级过。VPS 较新,只装 oneinstack,不知道对 c 库有没有影响;
3、设置并保存 ~/.bashrc 后,可以了 😄
schema
2017-08-25 09:33:21 +08:00
schema
2017-08-25 09:36:22 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX