作者walelile (wakaka)
看板Python
标题Fw: [问题] systemd python stdout encode变成ANSI
时间Sun Nov 26 23:26:16 2017
※ [本文转录自 Linux 看板 #1Q6jQtYu ]
作者: walelile (wakaka) 看板: Linux
标题: [问题] systemd python stdout encode变成ANSI
时间: Sun Nov 26 22:59:00 2017
在尝试用systemd来挂载python3 script
碰到systemd会使python3 sys.stdout.encode变成ANSI
当有中文的时候就会出现fail
请问是否可以让sys.stdout.encode保持utf-8?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.160.122
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1511708343.A.8B8.html
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: walelile (1.171.160.122), 11/26/2017 23:26:16
1F:→ uranusjr: 猜测是你的 locale 设定有问题, LC_* 环境变数没设好 11/26 23:28
3F:→ uranusjr: 可能和这个 bug 有关 11/26 23:29
感谢u大!
以下是我目前的locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
机器是Debian 9.2,我有尝试用dkpg-reconfigure locales去安装中文,但没效果。
如果用以下修改sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
stdout的部分不会跳Exception,但依然无法中文
而且读中文档案依然会挂...
※ 编辑: walelile (1.171.160.122), 11/26/2017 23:49:53
4F:→ uranusjr: 这是你 user session 的环境还是 systemd process 的? 11/27 00:01
5F:→ uranusjr: 我没仔细研究, 不过感觉问题在 systemd 没办法正确把你 11/27 00:01
6F:→ uranusjr: 的环境套用到 process 上面; 老实说我对这个也不熟... 11/27 00:02
这是我的user session,原来systemd有自己的session!
有空再研究一下,今天一整个晚上都在弄systemd,最後还是只能回去nohup QQ
※ 编辑: walelile (1.171.160.122), 11/27/2017 00:19:08
7F:→ agogoman: 试试看挂environmentfile 11/27 01:32
8F:→ walelile: 感谢A大!! 11/27 02:22
解法:
https://i.imgur.com/YmcGRk2.png
结果:
https://i.imgur.com/bRPLWKW.png
现在可以print 中文 & 读写中文档案
※ 编辑: walelile (1.171.160.122), 11/27/2017 03:23:16
※ 编辑: walelile (1.171.160.122), 11/27/2017 03:23:45