mik555
Март 31, 2021 15:55:17
Помогите решить проблему. Обычная программа для отображения текста:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return ‘<h1>Hello world!</h1>’
@app.route('/user/<name>')
def user(name):
return ‘<h1>Hi, %s!</h1>’ % name
if __name__=='__main__':
app.run(debug=True)
При запуске, которой выдается ошибка:
* Serving Flask app “flask2” (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 720-831-746
Exception in thread Thread-1:
Traceback (most recent call last):
File “C:\\Python38\lib\threading.py”, line 932, in _bootstrap_inner
self.run()
File “C:\\Python38\lib\threading.py”, line 870, in run
self._target(*self._args, **self._kwargs)
File “C:\\Roaming\Python\Python38\site-packages\werkzeug\serving.py”, line 996, in inner
srv = make_server(
File “C:\\Roaming\Python\Python38\site-packages\werkzeug\serving.py”, line 847, in make_server
return ThreadedWSGIServer(
File “C:\\Roaming\Python\Python38\site-packages\werkzeug\serving.py”, line 740, in __init__
HTTPServer.__init__(self, server_address, handler)
File “C:\\Python38\lib\socketserver.py”, line 452, in __init__
self.server_bind()
File “C:\\Python38\lib\http\server.py”, line 140, in server_bind
self.server_name = socket.getfqdn(host)
File “C:\\Python38\lib\socket.py”, line 756, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: ‘utf-8’ codec can't decode byte 0xcc in position 0: invalid continuation byte
Process finished with exit code -1
D7size
Март 22, 2022 12:03:47
# -*- coding: utf-8 -*- - попробуй в начале файла
py.user.next
Март 22, 2022 12:52:41
D7size
# -*- coding: utf-8 -*- - попробуй в начале файла
У него третий питон. А в третьем питоне это сделали по умолчанию. Если кодировка не указана, то предполагается utf-8. Во втором питоне была ascii, поэтому там надо ставить utf-8 всегда.
D7size
Март 22, 2022 13:54:20
Хз у меня 3,6 на разных машинах работает по разному почему-то, друг если можешь поомги мне в моем посте, там вопрос тупой, но с подковыркой.
К это посту еще попробуй строчки кодириовать декодировать в ручную через функцию пример :
f = open('user_tmp.txt', 'r', encoding='utf-8')
py.user.next
Март 22, 2022 21:22:19
D7size
Хз у меня 3,6 на разных машинах работает по разному почему-то
Это давно уже введено
https://peps.python.org/pep-3120/Поэтому кодировку и не пишут уже давно, только если она специфическая какая-то. Просто не пиши кодировку и сам файл должен быть записан в кодировке utf-8. Для этого можешь поставить себе Notepad++ или Sublime Text и там смотреть кодировку файла и менять её.
А вот при открытии файла на чтение или запись кодировку нужно
всегда указывать, так как это разные вещи “кодировка исходника” и “кодировка открытого файла”.
D7size
Март 23, 2022 11:03:08
Да вот друг я так и делаю, а файлы которые пишутсяь на лету имеют cp-1251 так как под виндой, на ноуте проблем нету с этим, а на пк полноценном приходиться устраивает такой геморой, может винда работает не правильно, но это не беда, encod decod выручиает, я питоном три недели занимаюсь, пока еще пробка)))
py.user.next
Март 23, 2022 12:59:56
D7size
может винда работает не правильно
Да Windows - это система для бухгалтерш и подростков, играющих в игры. Поэтому там эта кодировка из прошлого века, которая не покрывает все языки мира даже. Полноценная кодировка - это utf-8. Чтобы в винде на ней писать, поставь
нормальный текстовый редактор. Не надо там нигде ставить кодировку в исходниках, надо просто нормальный редактор кода поставить, раз ты решил в этой убогой системе заниматься программированием. На самом деле, ты теряешь ещё больше всего, но даже не знаешь об этом. Так что ставь себе Linux, так как там ты вообще не столкнёшься даже с такими проблемами. В Linux есть программы sed, awk, grep, компиляторы и всё бесплатно. В винде нет нихера и каждая прожка, которая делает хоть что-то более менее, выдаётся как откровение века. Причина указана выше: это система для ничего не знающих и ничего не понимающих; а сделана она для того, чтобы собирать с них деньги.