Python: 运行 我在 synology nas 上的程序作为任务抛出 UnicodeEncodeError
Python: Running my program on synology nas as a task throws UnicodeEncodeError
我刚刚开发了一个小型服务器,用于 Spotify-API 的一些测试。
它应该在 synology nas 上 运行。
由于我不希望应用程序 运行 使用管理员帐户,因此我创建了一个新用户。
然后我在 synology DSM 中创建了一个任务,并将其用于 运行 我的应用程序作为新创建的用户。
起初我遇到了错误的编码错误,但我在我的文件 # -*- coding: utf-8 -*-
的 headers 中添加了编码,之后它起作用了。
直到我找到包含 UTF-8 编码的“ä”的行。
Traceback (most recent call last):
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/volume1/Programmieren/Python/SpotifyToExcel/spotifyAuth.py", line 73, in spotify
log("Token erhalten, Server f\xe4hrt herunter")
File "/volume1/Programmieren/Python/SpotifyToExcel/spotifyAuth.py", line 24, in log
logFile.write("{}: {}\n".format(datetime.datetime.now(), text))
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 52: ordinal not in range(128)
然后我将 export PYTHONTEXTENCODING=utf-8
添加到启动程序的脚本中。也不行。
现在是奇怪的部分:
运行以我的普通用户身份在 ssh shell 上按预期工作。甚至 运行 使用 sudo -H -u svc_spotify python3 spotifytoexcel.py
也能按预期工作。
有没有其他方法可以强制编码,或者也许有人知道 synology 运行 的任务以及为什么这会更改 python.
的默认编码
Visual Studio 代码显示 UTF-8 作为我所有文件的编码。
提高我的 google 搜索技能后,我找到了另一个答案 结果证明,我需要在我的任务脚本中设置我的语言 export LANG=en_US.utf8
现在一切正常。
我的脚本现在是这样开始的:
export PYTHONIOENCODING=utf8
export PYTHONTEXTENCODING=utf8
export LANG=en_US.utf8
我刚刚开发了一个小型服务器,用于 Spotify-API 的一些测试。
它应该在 synology nas 上 运行。
由于我不希望应用程序 运行 使用管理员帐户,因此我创建了一个新用户。
然后我在 synology DSM 中创建了一个任务,并将其用于 运行 我的应用程序作为新创建的用户。
起初我遇到了错误的编码错误,但我在我的文件 # -*- coding: utf-8 -*-
的 headers 中添加了编码,之后它起作用了。
直到我找到包含 UTF-8 编码的“ä”的行。
Traceback (most recent call last):
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/var/services/homes/svc_spotify/.local/lib/python3.5/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/volume1/Programmieren/Python/SpotifyToExcel/spotifyAuth.py", line 73, in spotify
log("Token erhalten, Server f\xe4hrt herunter")
File "/volume1/Programmieren/Python/SpotifyToExcel/spotifyAuth.py", line 24, in log
logFile.write("{}: {}\n".format(datetime.datetime.now(), text))
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 52: ordinal not in range(128)
然后我将 export PYTHONTEXTENCODING=utf-8
添加到启动程序的脚本中。也不行。
现在是奇怪的部分:
运行以我的普通用户身份在 ssh shell 上按预期工作。甚至 运行 使用 sudo -H -u svc_spotify python3 spotifytoexcel.py
也能按预期工作。
有没有其他方法可以强制编码,或者也许有人知道 synology 运行 的任务以及为什么这会更改 python.
的默认编码Visual Studio 代码显示 UTF-8 作为我所有文件的编码。
提高我的 google 搜索技能后,我找到了另一个答案 export LANG=en_US.utf8
现在一切正常。
我的脚本现在是这样开始的:
export PYTHONIOENCODING=utf8
export PYTHONTEXTENCODING=utf8
export LANG=en_US.utf8