Ich bekomme einen Python3 UnicodeEncodeError, wenn ich mein Skript über den Synology Task Scheduler ausführe. Ich erhalte diesen Fehler nicht, wenn ich das Skript über die Kommandozeile (mit PuTTY) ausführe. Warum ist das und wie kann ich es lösen?Python3 UnicodeEncodeError bei Ausführung über Synology Task Scheduler
Einfache Testskript:
import sys
print (sys.version) # to confirm the correct Python version
print("Fichier non trouvé♠ #M–Nein") # to test non ascii characters
test = "Fichier non trouvé♠ #M–Nein"
print ("test is " + test)
test2 = str(test) # to test if the string function causes and issue
print ("test2 is " + test2)
Commandline-Ausgang:
[email protected]:/volume1/@appstore/py3k/usr/local/bin$ /volume1/@appstore/py3k/usr/local/bin/python3 /volume1/Documenten/MyPythonScripts/Test.py
3.5.1 (default, Feb 23 2016, 17:46:04)
[GCC 4.9.3 20150311 (prerelease)]
Fichier non trouvé♠ #M–Nein
test is Fichier non trouvé♠ #M–Nein
test2 is Fichier non trouvé♠ #M–Nein
Task-Scheduler Ausgabe:
3.5.1 (default, Feb 23 2016, 17:46:04)
[GCC 4.9.3 20150311 (prerelease)]
Traceback (most recent call last):
File "/volume1/Documenten/MyPythonScripts/Test.py", line 3, in <module>
print("Fichier non trouv\xe9\u2660 #M\u2013Nein") # to test non ascii characters
UnicodeEncodeError: 'ascii' codec can't encode characters in position 17-18: ordinal not in range(128)
Hinweis: Die gleiche Python-Version und Skript laufen mit
/volume1/@appstore/py3k/usr/local/bin/python3
/volume1/Documenten/MyPythonScripts/Test.py
in beiden Situationen.
Hinweis 2: Eine frühere (Linie 1) Unicode-Fehler treten auf, wenn ich das Skript über die Kommandozeile, aber mit python2.7 laufen: (FYI unten, Python 3 vs Python 2)
[email protected]:/volume1/Documenten/MyPythonScripts$ **python3** Test.py
Fichier non trouvé♠ #M–Nein
test is Fichier non trouvé♠ #M–Nein
test2 is Fichier non trouvé♠ #M–Nein
[email protected]:/volume1/Documenten/MyPythonScripts$ **python** Test.py
File "Test.py", line 1
SyntaxError: Non-ASCII character '\xc3' in file Test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Diese Unicode-Ausgabe kann
# -*- coding: UTF-8 -*-
Dann wird das Skript läuft gut von der Kommandozeile: indem Sie die folgende als 1. oder 2. Zeile, um das Skript in python2.7 gelöst werden.
Aber Addiert man diese UTF-8 Linie löst nicht das Problem mit dem Skript aus dem Synology Taskplaner ausgeführt wird, dann wird der Fehler noch erhöht:?!
3.5.1 (default, Feb 23 2016, 17:46:04)
[GCC 4.9.3 20150311 (prerelease)]
Traceback (most recent call last):
File "/volume1/Documenten/MyPythonScripts/Test.py", line 4, in <module>
print("Fichier non trouv\xe9\u2660 #M\u2013Nein") # to test non ascii characters
UnicodeEncodeError: 'ascii' codec can't encode characters in position 17-18: ordinal not in range(128)