Я хочу загрузить все фотографии с веб-сайта с помощью Python. У меня уже есть заголовок HTML-файла, поэтому я использую os.mkdir()
для создания папки, но название содержит китайский. Когда выполняется следующий код на Raspberry Pi (OS: Debian), есть исключение:Raspberry Pi с использованием Python для mkdir
UnicodeEncodeError: 'ascii' codec can't encode characters in position 20-38: ordinal not in range(128)
try:
os.mkdir(path)
except:
print "create folder failed"
continue
Все нормально, если я запускаю код на моем Mac.
Я искал проблему и пробовал код ниже, но он не работает.
reload(sys)
sys.setdefaultencoding('utf-8')
Update:
Я изменил мой код много, и читать статьи о юникода, UTF-8 .etc. Но каждый раз, когда я запускаю код на малине Pi, он раздавлен. Затем я установил ОС Debian (это то, что я установил на моем малине Pi) на ПК, запустил код на нем, все в порядке.
Таким образом, проблема на самом деле не вызвана кодом, а SSH.
Если я запускаю код непосредственно на компьютере Debian на рабочем столе, все в порядке. Если я войду в оболочку с моего Mac с помощью SSH и запустим код, появится исключение, которое говорит «Unicode ...» что-то вроде этого.
Я думаю, что это вызвано переменными окружения, я попытаюсь выяснить это завтра, и спасибо, ребята :-)
'setdefaultencoding' работает скорее с' print' или 'write' - try' os.mkdir (path.encode ('utf-8')) ' – furas
Ничего себе, это работает, спасибо. Но это так раздражает, чтобы изменить код. Есть ли способ заставить его работать, как на моем Mac? –
попробуйте 'print sys.getfilesystemencoding()', чтобы узнать, что вы получаете. Возможно, если вы установите переменную среды LANG в Debian, вам не нужно будет использовать 'encode()'. Проверьте также bash 'echo $ LANG'. – furas