Найти - Пользователи
Полная версия: UnicodeDecodeError: 'utf-8' Flask
Начало » Web » UnicodeDecodeError: 'utf-8' Flask
1
mik555
Помогите решить проблему. Обычная программа для отображения текста:

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
AD0DE412
.
D7size
# -*- coding: utf-8 -*- - попробуй в начале файла
py.user.next
D7size
# -*- coding: utf-8 -*- - попробуй в начале файла
У него третий питон. А в третьем питоне это сделали по умолчанию. Если кодировка не указана, то предполагается utf-8. Во втором питоне была ascii, поэтому там надо ставить utf-8 всегда.
D7size
Хз у меня 3,6 на разных машинах работает по разному почему-то, друг если можешь поомги мне в моем посте, там вопрос тупой, но с подковыркой.

К это посту еще попробуй строчки кодириовать декодировать в ручную через функцию пример :
  f = open('user_tmp.txt', 'r', encoding='utf-8')
py.user.next
D7size
Хз у меня 3,6 на разных машинах работает по разному почему-то
Это давно уже введено
https://peps.python.org/pep-3120/
Поэтому кодировку и не пишут уже давно, только если она специфическая какая-то. Просто не пиши кодировку и сам файл должен быть записан в кодировке utf-8. Для этого можешь поставить себе Notepad++ или Sublime Text и там смотреть кодировку файла и менять её.

А вот при открытии файла на чтение или запись кодировку нужно всегда указывать, так как это разные вещи “кодировка исходника” и “кодировка открытого файла”.
D7size
Да вот друг я так и делаю, а файлы которые пишутсяь на лету имеют cp-1251 так как под виндой, на ноуте проблем нету с этим, а на пк полноценном приходиться устраивает такой геморой, может винда работает не правильно, но это не беда, encod decod выручиает, я питоном три недели занимаюсь, пока еще пробка)))
py.user.next
D7size
может винда работает не правильно
Да Windows - это система для бухгалтерш и подростков, играющих в игры. Поэтому там эта кодировка из прошлого века, которая не покрывает все языки мира даже. Полноценная кодировка - это utf-8. Чтобы в винде на ней писать, поставь нормальный текстовый редактор. Не надо там нигде ставить кодировку в исходниках, надо просто нормальный редактор кода поставить, раз ты решил в этой убогой системе заниматься программированием. На самом деле, ты теряешь ещё больше всего, но даже не знаешь об этом. Так что ставь себе Linux, так как там ты вообще не столкнёшься даже с такими проблемами. В Linux есть программы sed, awk, grep, компиляторы и всё бесплатно. В винде нет нихера и каждая прожка, которая делает хоть что-то более менее, выдаётся как откровение века. Причина указана выше: это система для ничего не знающих и ничего не понимающих; а сделана она для того, чтобы собирать с них деньги.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB