Visual studio unicode error python

VS + Python + кириллица, ошибка в консоли, как решить? Всем привет! Ради интереса поставил Python 3.5.1 -(решил посмотреть что это за язык, много слышал про него) Так вот, когда выводишь программу в консоли у меня возникает ошибка, как я понял из-за русского языка и из-за кодировки. Когда пишешь на инглише все норм — […]

Содержание

  1. VS + Python + кириллица, ошибка в консоли, как решить?
  2. Visual Studio Community 2022 — UTF-8 codec problem #6784
  3. Comments
  4. Original Comments
  5. Feedback Bot on 11/9/2021, 11:32 PM:
  6. Original Solutions
  7. Visual studio unicode error python
  8. Python print unicode generate error in output window #6269
  9. Comments
  10. Python-сообщество
  11. Уведомления
  12. #1 Март 1, 2016 09:58:59
  13. русский текст в консоли
  14. #2 Март 1, 2016 10:32:12
  15. русский текст в консоли
  16. #3 Март 1, 2016 10:55:43
  17. русский текст в консоли
  18. #4 Март 1, 2016 12:47:06
  19. русский текст в консоли
  20. #5 Март 1, 2016 18:04:37
  21. русский текст в консоли
  22. #6 Март 1, 2016 22:02:52
  23. русский текст в консоли
  24. #7 Март 1, 2016 22:05:16
  25. русский текст в консоли

VS + Python + кириллица, ошибка в консоли, как решить?

Всем привет!
Ради интереса поставил Python 3.5.1 -(решил посмотреть что это за язык, много слышал про него)
Так вот, когда выводишь программу в консоли у меня возникает ошибка, как я понял из-за русского языка и из-за кодировки. Когда пишешь на инглише все норм — конечно можно писать все на нем! и забить на проблему. Но, все-таки мы же русские ) и хочется сообщения писать на своем родном языке.
Погуглил данную тему, у многих людей на многих языках программирования возникает проблема именно из-за русских букв, все решают данную проблему по разному.

Господа! вопрос как решить мою проблему ?
Спасибо.

  • Вопрос задан более трёх лет назад
  • 34852 просмотра

Что удалось нарыть.
А.
если поставить в начале кода такую конструкцию:
# -*- coding: cp1251 -*-
То начинает все работать, как я понял это принудительное перекодирование файла — (буду благодарен если точнее объясните господа)

Б.
(как я понял)
Файл нужно создавать в нужной кодировке utf8
По умолчанию Visual Studio создает файлы в другой кодировки, надо понять где это поменять / проверить / потестить.

Да, все верно! в Visual Studio идем Файл — Дополнительные параметры сохранения
и ставим так(скрин) все начинает работать..

Но это не спасает от такой записи. (скрин) вопрос остается что делать ?

Ради теста, напрямую запустил консоль python — а ввел там нужную команду все норм отобразилось!
Да что не так с этой чертовой VS ?

Источник

[regression] [worked-in:Visual Studio Community 2019]
Today I have Visual Studio Community 2022 (64-bit) – Current Version 17.0.0 installed, including the Python extension.

When executing Python code that contains German special characters (ä, ö, ü), the debugger aborts with the following error message:
„SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xe4 in position 7: invalid continuation byte“

The problem is not related to the Python interpreter or the code. The code runs flawlessly with Visual Studio 2019 and VS Code. Debugging also works fine with Visual Studio 2019.

Is there a new UTF-8 encoding setting in Visual Studio 2022 that I missed?

I thank you for your help.

Feedback Bot on 11/9/2021, 11:32 PM:

We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.

Original Solutions

The text was updated successfully, but these errors were encountered:

Can you share the full traceback associated with the error message in the terminal?

For me is the same, if use ñ letter in Spanish in a variable name when execute it, says: SyntaxError: invalid character in identifier
And the ñ character has been substituted for a like-square character:

The original definition is:

In VS 2019 was ok and VS Code it’s OK too.

My version of VS 2022 is 17.0.1

In C# there is no problem using the ñ character. But in Python doesn’t work.

Same problem with Cyrillic symbols. Not just in «.py» files, but also in Flask «.html» templates

PythonEncodingDetector in this file does not get invoked when creating new python files. Might be a MEF issue.

I took a quick look at it from VS side of things, and when the file gets loaded and encoding detection kicks in, its ContentType is , so our detector isn’t considered at all. This is possibly something that has changed in VS 2022, since there are no obvious corresponding changes in PTVS.

Either way, further investigation needs to figure out why the content type is not assigned at the right time despite the .py extension.

Some updates to add based on conversations with Pavel and Oleg:

In VS 2019, the older version of PTVS used to explicitly set the encoding of the document before text document is loaded, but the current one does not. However, since the VS side knows the filename, they should to be able to determine the content type without us having to explicitly set it. So it’s a design bug as it wasn’t properly documented.

Have VS team use the content type registration info to set the appropriate content type for newly created document instances.

Have VS team default to UTF-8 in the absence of decoders, on the basis that it’s more likely to be a correct guess. But it doesn’t really help us, since we still need to handle Python «coding» comments — we need the detector to kick in.

Look up the method names in the stack that comes from the older version of PTVS, figure out where those lines of code should go in current source to reproduce the old behavior.

@int19h Pavel, is there anything else you’d like to add?

Источник

Visual studio unicode error python

Вообщем ситуация такая. Решил я поизучать Python. Посмотрел разные среды разработки, и решил остановиться на уже знакомой и уютненькой Visual Studio, тем более, что по работе в основном на C# писать приходится, установлена, удобная, привычная. Короче приступил к написанию своего первого Hello World-а.

Написал вот такое:

И вместо русских букв в консоли увидел кракозябры. 🙁

Покопав немного «интернеты», нашёл рекомендацию указывать кодировку в начале файла так:

Сделал, не помогло… 🙁
Стал копать дальше.
Студия фалы сохраняет по умолчанию в кодировке Win1251 — ага. подумал я.
Правим:
File -> Advanced Save Options

Это действие уже помогло, но лишь частично. По команде print русский текст стал выводиться корректно. А вот текст в команде input остался кракозябрами.

Но и этой проблеме решение есть:
Tools -> Options -> Pyton Tools -> Debugging

Убираем галочку «Tee program output to Debug Output window»

После этого действия всё работает корректно, буквы русские во всех случаях.
Мне помогло, надеюсь и вам поможет.

Источник

Python print unicode generate error in output window #6269

  • VSCode Version:1.1
  • OS Version:Win7 64bit, Python 2.7.8

Steps to Reproduce:
Source:

Output:
上海
Traceback (most recent call last):
File «d:Temptmp2.py», line 7, in
print(unicode_name) # This line generate error
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)

The text was updated successfully, but these errors were encountered:

@bpasero do you think this is the issue with our output decoding or the editor?

This sounds like an error in his python program.

@sun1991 Do you get the same error if you run your python program outside of vscode?

@isidorn Tried the same code in IDLE, no error happen. The way IDLE treated it is:

print(utf8_name) -> output utf-8 bytes interpreted by local non-unicode setting, althrough not useful (not human readable)
print(unicode_name) -> output correct characters, because it is unicode after all.

I think the way IDLE handle makes more sense. After all, for python 2.7, utf8_name is just byte array, if encoding is not know, then it is just some bytes. But unicode_name is. unicode code point, so it should always precisely know what its representation should be.

But VS Code output window did reverse, looks like it interpreted bytes as utf-8 bytes, but report error on unicode.

@sun1991 thanks for providing additional information. What happens when you execute your pything script in the command prompt?

@isidorn This is what looks like in console, the output is the same from what on IDLE.

C:Usersabc>python
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type «help», «copyright», «credits» or «license» for more information.
>>> unicode_name = u’上海’
>>> utf8_name = unicode_name.encode(‘utf-8’)
>>> print(utf8_name)
涓婃捣
>>> print(unicode_name)
上海

win8.1/ VSC1.1/python3.5 — bug is reproduced
IDLE — all correct
But VSC is not IDE or сompiler, what are extension for python debugging you use?
Bug perhaps between VSC & extension or extension & python, if first — MS, we need solve 🙂
If you use ext by Don Jayamanne, he is having not closed issue about that [iss#102]

Hi, I have updated the original issue #102 with some additional information. I believe this is a problem lies with how the default encoding is picked up by Python when launched from NodeJs.

I’m closing this issue as this was an issue with the Python extension itself and the issue has now been resolved #102.
If the issue still persists, please re-open the issue in Python repo

Источник

Python-сообщество

Уведомления

#1 Март 1, 2016 09:58:59

русский текст в консоли

Здравствуйте. Я только начинаю изучать Phyton. Возникли трудности при выводе простеньких команд на консоль. В одной строке вылазят крякозябры, тогда как в остальных всё нормально. Работаю в Visual Studio 2015 Community, так как привык к этой IDE. Ниже сам код с проблемой:

# -*- coding: utf-8 -*-
a = 70;
b = int (input (‘введите целое число:’))
if b == a:
print (‘поздравляю, вы угадали!’ , ‘Хотя и не получили никакого приза за это’)
elif b a:
print (‘Нет, введённое число меньше’)

Собственно крякозябры выходят в строке ВВЕДИТЕ ЦЕЛОЕ ЧИСЛО, символы в ней кодируются непонятно в
чём. Я целых два дня искал решение этой проблемы в интернете, но так и не нашёл. Никакие .encode(‘utf-8’) подставляемые в конце строки с разными кодировками не помогают, меняются только крякозябры, но русские буквы упорно не желают выдаваться консолью.
Есть ли вообще решение этой проблемы под Windows? Если кто знает, подскажите пожалуйста начинающему питонисту.

#2 Март 1, 2016 10:32:12

русский текст в консоли

Версия питона 3?
Сам файл с исходным кодом точно кодирован в заявленные UTF-8 ?

_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

#3 Март 1, 2016 10:55:43

русский текст в консоли

JOHN_16
Версия питона 3?Сам файл с исходным кодом точно кодирован в заявленные UTF-8 ?

#4 Март 1, 2016 12:47:06

русский текст в консоли

Пока что делайте перед input отдельный print с приглашением ввести число. А я посмотрю попозже откуда такая проблема.

_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

#5 Март 1, 2016 18:04:37

русский текст в консоли

JOHN_16
Пока что делайте перед input отдельный print с приглашением ввести число. А я посмотрю попозже откуда такая проблема.

Отредактировано Leon0x1 (Март 1, 2016 18:05:41)

#6 Март 1, 2016 22:02:52

русский текст в консоли

ну так показывайте код и ошибку. Это же вы ошиблись, а не попытка сделать невозможное

_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

#7 Март 1, 2016 22:05:16

русский текст в консоли

Leon0x1
К сожалению интерпретатор не позволяет этого сделать, выдаёт синтаксическую ошибку.

Отредактировано doza_and (Март 1, 2016 22:05:59)

Источник

-19 / 0 / 0

Регистрация: 13.04.2013

Сообщений: 26

1

13.02.2022, 22:31. Показов 7216. Ответов 9


Питон в Visual-studio 2022 не признаёт кирилицу даже внутри кавычек. Можно ли его уговорить этого не делать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



16 / 16 / 2

Регистрация: 23.02.2012

Сообщений: 132

14.02.2022, 12:52

2

Попробуй в начале файла написать:
# coding=windows-1251



0



-19 / 0 / 0

Регистрация: 13.04.2013

Сообщений: 26

14.02.2022, 18:04

 [ТС]

3

SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xea in position 0: invalid continuation byte
вот что пишет



0



16 / 16 / 2

Регистрация: 23.02.2012

Сообщений: 132

14.02.2022, 20:27

4

У меня во всех исходниках в проекте первой строкой прописано
# coding=windows-1251

И все ошибки исчезли. Нужно, что бы эта строка была во всех файлах проекта.



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

14.02.2022, 20:37

5

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

# coding=windows-1251

Эта декларация давно уже не нужна.
По умолчанию исходники должны быть в utf-8. Или ты ССЗБ.
У топикстартера,очевидно, что исходники в локальной кодировке и это приводит к ошибке.
Либо что-то подобное.

Степень подробности с какой топикстартер объясняет свою проблему просто впечатляет.



1



16 / 16 / 2

Регистрация: 23.02.2012

Сообщений: 132

14.02.2022, 21:23

6

Давай тогда свое решение, как VS 2022 заставить работать без этой декларации. По умолчанию VS работает в win 1251. Дал простое решение проблемы. Чем понты кидать — дай простое решение проблемы. Или ума не хватит?

Добавлено через 8 минут
Можно заморочится и пересохранить все файлы проекта в utf-8. Нажимаешь сохранить как… На кнопке Сохранить есть стрелочка. Если ее нажать, то можно сохранить в другой кодировке. Но если файлов много — проще прописать кодировку, чем все пересохранять.



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

14.02.2022, 22:58

7

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

Или ума не хватит?

Я не знаю о чьем уме ты говоришь. Вероятно, что о своем.
Но у вменяемых программистов все файлы проекта в utf-8.

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

По умолчанию VS работает в win 1251

Что такое VS? VS Code или MSVS?

В любом случае это ложь:
Про MSVS:
«по умолчанию Visual Studio использует текущую кодовую страницу в качестве исходной кодировки, используемой для интерпретации исходного кода для выходных данных. «
Про win1251 в документации ни слова.

Также в документации MSVS написано:
«Можно использовать параметр /utf-8 чтобы указать кодировку исходного кода и кодировки выполнения как закодированные с помощью параметра UTF -8. Он эквивалентен указанию /source-charset:utf-8 /execution-charset:utf-8 в командной строке. «

Про VS Code:»Кодировка VS Code по умолчанию — UTF-8 без метки порядка байтов.«

P.S. C тех пор как в Python официальная кодировка исходников объявлена как utf-8, использование локальных кодовых страниц для кодирования исходников считается bad practice.
Но если есть очень сильное желание идти против течения, то продолжайте использовать локальные кодировки и помечайте каждый ваш файл устаревшей декларацией # coding.



0



16 / 16 / 2

Регистрация: 23.02.2012

Сообщений: 132

15.02.2022, 07:16

8

Ты запусти MSVS 2022 и создай проект из нескольких исходников. А потом пиши тут свои догадки. Я перед тем, как ответить челу с его проблемой, которая прекрасно описана, но некоторым особам тяжело вникать, пока им по полочкам не разложишь, проверил. Файлы создаются в 1251 кодировке.

Добавлено через 10 минут

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

Также в документации MSVS написано:
«Можно использовать параметр /utf-8 чтобы указать кодировку исходного кода и кодировки выполнения как закодированные с помощью параметра UTF -8. Он эквивалентен указанию /source-charset:utf-8 /execution-charset:utf-8 в командной строке. «

Не каждый начинающий знает, где прописывать параметры MSVS. Был дан наипростейший способ обойти проблему.

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

P.S. C тех пор как в Python официальная кодировка исходников объявлена как utf-8, использование локальных кодовых страниц для кодирования исходников считается bad practice.
Но если есть очень сильное желание идти против течения, то продолжайте использовать локальные кодировки и помечайте каждый ваш файл устаревшей декларацией # coding.

А вот тут я тебя забыл спросить.

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

Я не знаю о чьем уме ты говоришь. Вероятно, что о своем.
Но у вменяемых программистов все файлы проекта в utf-8.

Ты видимо зациклен на своем utf-8. Флаг тебе в руки.

p.s. Как вы задолбали, диванные спецы. Стырят старый API, под себя сделают и звезды. Можно сказать, сами все сделали.



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

15.02.2022, 14:20

9

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

Ты видимо зациклен на своем utf-8.

Он не мой. Его придумал Роб Пайк. И теперь его использует весь мир. Но, ты, видимо не в курсе.

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

Не каждый начинающий знает, где прописывать параметры MSVS.

Не смеши меня. Таким начинающим сначала нужно батники писать научиться прежде чем в программирование лезть.

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

А вот тут я тебя забыл спросить.

В следующий раз не забудь. ОК?

Добавлено через 1 минуту

Цитата
Сообщение от Wurgengel
Посмотреть сообщение

диванные спецы. С

Ты опять про себя дорогой? Не слишком ли часто?



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

15.02.2022, 15:37

10

Цитата
Сообщение от Игорь138800
Посмотреть сообщение

Питон в Visual-studio 2022 не признаёт кирилицу даже внутри кавычек

Признает.

Питон в Visual-studio 2022 не признаёт кирилицу даже внутри кавычек

И не надо людям голову морочить.
Если вы не разбираетесь в кодировках — это повод начать разбираться.

Visual Studio создает файлы исходного кода в кодировке локали текущего пользователя. Это не есть хорошо, ну да ладно.
Плохо что MSVS не дает в собственных конфиг. настройках установить пользовательскую кодировку по умолчанию для файлов исходного кода (кроме как через опции cmdline).
Но идиотизм отдельных решений microsoft — тема отдельного разговора.

К тому же файл всегда можно пересохранить на utf-8 (меню сохранить как -> сохранить с кодировкой-> выбрать utf-8 без BOM). И тогда никаких проблем с не ASCII символами не будет.



0



import traceback


class TestRunner(object):
    def __init__(self, name):
        self.name = name
        self.testNo = 1

    def expectTrue(self, cond):
        try:
            if cond():
                self._pass()
            else:
                self._fail()
        except Exception as e:
            self._fail(e)

    def expectFalse(self, cond):
        self.expectTrue(lambda: not cond())

    def expectException(self, block):
        try:
            block()
            self._fail()
        except:
            self._pass()

    def _fail(self, e=None):
        print(f'FAILED: Test  # {self.testNo} of {self.name}')
        self.testNo += 1
        if e is not None:
            traceback.print_tb(e.__traceback__)

    def _pass(self):
        print(f'PASSED: Test  # {self.testNo} of {self.name}')
        self.testNo += 1


def match(string, pattern):
    if [type(string),type(pattern)]!=[str]*2:raise TypeError
    if len(string)!=len(pattern)or set(pattern)-set('ad* '):raise ValueError
    m,r=[0]*len(string),1
    for i in range(len(string)):m[i]=bool((pattern[i]=='a'and string[i]in[chr(i)for i in range(97,123)])or(pattern[i]=='d'and string[i]in[chr(i)for i in range(48,58)])or(pattern[i]==string[i]==' ')or(pattern[i]=='*'and string[i]in([' ']+[chr(i)for i in range(48,58)]+[chr(i)for i in range(97,123)])))
    for i in m:r*=i
    return bool(r)


def testMatch():
    runner = TestRunner('match')

    runner.expectFalse(lambda: match('xy', 'a'))
    runner.expectFalse(lambda: match('x', 'd'))
    runner.expectFalse(lambda: match('0', 'a'))
    runner.expectFalse(lambda: match('*', ' '))
    runner.expectFalse(lambda: match(' ',  'a'))

    runner.expectTrue(lambda:  match('01 xy', 'dd aa'))
    runner.expectTrue(lambda: match('1x', '**'))

    runner.expectException(lambda:  match('x', 'w'))


tasks = {
    'id': 0,
    'name': 'Все задачи',
    'children': [
        {
            'id': 1,
            'name': 'Разработка',
            'children': [
                {'id': 2, 'name': 'Планирование разработок', 'priority': 1},
                {'id': 3, 'name': 'Подготовка релиза', 'priority': 4},
                {'id': 4, 'name': 'Оптимизация', 'priority': 2},
            ],
        },
        {
            'id': 5,
            'name': 'Тестирование',
            'children': [
                {
                    'id': 6,
                    'name': 'Ручное тестирование',
                    'children': [
                        {'id': 7, 'name': 'Составление тест-планов', 'priority': 3},
                        {'id': 8, 'name': 'Выполнение тестов', 'priority': 6},
                    ],
                },
                {
                    'id': 9,
                    'name': 'Автоматическое тестирование',
                    'children': [
                        {'id': 10, 'name': 'Составление тест-планов', 'priority': 3},
                        {'id': 11, 'name': 'Написание тестов', 'priority': 3},
                    ],
                },
            ],
        },
        {'id': 12, 'name': 'Аналитика', 'children': []},
    ],
}


def findTaskHavingMaxPriorityInGroup(tasks, groupId):
# ------------------------------------------------------------------------------------------------
    def search_group(id, tasks):
        if tasks['id'] == id:
            search_max(tasks)
            return 1
        search_group2(id, tasks)

    def search_group2(id, tasks):
        if 'children' in tasks:
            _ = tasks['children']
            for pot in _:
                if pot['id'] == id:
                    search_max(pot)
                    return 0
                if 'children' in pot:
                    search_group2(id, pot)

    def search_max(tasks):
        global flag
        if 'priority' in tasks:
            raise Exception("not a group")
        if tasks['children'] == []:
            flag = None
            return 0
        search_max2(tasks)

    def search_max2(tasks):
        if 'children' in tasks:
            _ = tasks['children']
            for pot in _:
                if 'priority' in pot:
                    if pot['priority'] > max['priority']:
                        max['priority'] = pot['priority']
                        max['name'] = pot['name']
                        max['id'] = pot['id']
                if 'children' in pot:
                    search_max2(pot)

    max = {'id': 0, 'name':'', 'priority':0,}
    global flag
    flag = 1
    search_group(groupId, tasks)
    if flag == None:
        return None
    if max['name'] == '':
        raise Exception("not a group")
    return max

# ------------------------------------------------------------------------------------------------


def taskEquals(a, b):
    return (
        not 'children' in a and
        not 'children' in b and
        a['id'] == b['id'] and
        a['name'] == b['name'] and
        a['priority'] == b['priority']
    )


def testFindTaskHavingMaxPriorityInGroup():
    runner = TestRunner('findTaskHavingMaxPriorityInGroup')

    runner.expectException(lambda: findTaskHavingMaxPriorityInGroup(tasks, 13))
    runner.expectException(lambda: findTaskHavingMaxPriorityInGroup(tasks, 2))

    runner.expectTrue(lambda: findTaskHavingMaxPriorityInGroup(tasks, 12) is None)

    runner.expectTrue(lambda: taskEquals(findTaskHavingMaxPriorityInGroup(tasks, 0), {
        'id': 8,
        'name': 'Выполнение тестов',
        'priority': 6,
    }))
    runner.expectTrue(lambda: taskEquals(findTaskHavingMaxPriorityInGroup(tasks, 1), {
        'id': 3,
        'name': 'Подготовка релиза',
        'priority': 4,
    }))

    runner.expectTrue(lambda: findTaskHavingMaxPriorityInGroup(tasks, 9)['priority'] == 3)


testMatch()
testFindTaskHavingMaxPriorityInGroup()

Thread Rating:

  • 2 Vote(s) — 3.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5

UnicodeEncodeError using Windows and IDE-Visual Studio

Oct-25-2017, 03:06 PM
(This post was last modified: Oct-25-2017, 03:06 PM by Yaya33.)

I am new to Python and excited to learn and just hit the ground.
I have Windows and use Visual Studio as IDE. I have got everything set and started to practice with few lines of code. I have now hit a stumbled block.
I have got these few lines from a web site.
import requests
result= requests.get(‘https://www.nytimes.com/interactive/2017/06/23/opinion/trumps-lies.html’)
print(len(result))
print(result [0:3] )
print(result)
The first line works- print(len(result)), but I keep getting an error on the other two lines.
I have done lots of search on-line, but I could not resolve this issue.
The issue seems to be arisen from windows, not Python as Windows does not support Unicode.
There are many suggestions on how to resolve the issue, but all seem to be a short cut or short-term solutions. Others suggested I should upgrade to Python 3.6 (I have 3.5).
https://groups.google.com/forum/#!topic/…0J2X-dHb8k

I really have no idea how to correct this error and my enthusiasm for Python might be short lived.
Please help.

Posts: 101

Threads: 7

Joined: Aug 2017

Reputation:
5

Use BBCode to post.

Heres my code (python 3.6):

>>> import requests
>>> result= requests.get('https://www.nytimes.com/interactive/2017/06/23/opinion/trumps-lies.html')
>>> print(result.text)

It works fine when I use text attribute of Response Object.

T get an error when I try to use Response object as the content of the request.

>>> print(result)
<Response [200]>
>>> print(len(result))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'Response' has no len()

but the length of the content works fine.

>>> print(len(result.text))
161117

Posts: 11,568

Threads: 446

Joined: Sep 2016

Reputation:
444

Please post your error traceback (all of it) as it contains valuable information
also, change:

print(result)
# to
print (result.text)

finally, when posting code use code tags. See BBCODE
and use shift-ctrl-v when pasting code to preserve indentation

Yaya33

Programmer named Tim


Posts: 8

Threads: 2

Joined: Oct 2017

Reputation:
0

Oct-25-2017, 07:12 PM
(This post was last modified: Oct-25-2017, 07:21 PM by Yaya33.)

Hi hbknjr,
Thanks for the reply!
Sorry! I do not seem to see the BB code. I though it is the Python symbol. Please show me which button is.
Yes, both length and response methods work, but not text. I have got the text property from the website.
http://www.dataschool.io/python-web-scra…umps-lies/
Although, it does not appear as properties in the auto- completion, I do not get a syntax error.
I have also got these properties work.

print(result.cookies)
print(result.headers)
print(result.elapsed)
print(result.history)
print(result.json)
print(result._next)

So, I am wondering if the error is the text property or windows console does not have Unicode characters.


Hi Larz60+,
Thanks for the reply!
The error does not appear to be consistent. The only line which appears on all errors is:

 File "C:UsersNameAppDataLocalProgramsPythonPython35-32libencodingscp850.py", line 19, in encode

The above line looks like a library.

 return codecs.charmap_encode(input,self.errors,encoding_map)[0]
#UnicodeEncodeError: 'charmap' codec can't encode characters in position 63893-63896: character maps to <undefined>

Another error

   return codecs.charmap_encode(input,self.errors,encoding_map)[0]
#UnicodeEncodeError: 'charmap' codec can't encode character 'u2014' in position 282: character maps to <undefined>

Posts: 1,298

Threads: 38

Joined: Sep 2016

Reputation:
30

A couple of things and questions. First thing is post the entire error code between tags (the red X next to the Python icon on the editor bar), posting one line is not helpful. Question, as a new Python user, why are you not using the latest Python version (currently 3.6.3). Those responses you got from from your search are correct, upgrading Python will eliminate that problem.

My advice is to uninstall your v3.5 and install the latest version. Follow our tutorial here https://python-forum.io/Thread-Basic-Par…er-Windows, make sure you obtain the correct file to match your machine, i.e.: 32 or 64 bit.

If it ain’t broke, I just haven’t gotten to it yet.
OS: Windows 10, openSuse 42.3, freeBSD 11, Raspian «Stretch»
Python 3.6.5, IDE: PyCharm 2018 Community Edition

Yaya33

Programmer named Tim


Posts: 8

Threads: 2

Joined: Oct 2017

Reputation:
0

sparkz_a lot,
I thought I used the BB code. My code appears to be the same as the others. If not, I apologise and will do it right next time.
Well, my code is 2 lines only. I am stuck on the second line. I have posted the code from this site.

http://www.dataschool.io/python-web-scraping-of-president-trumps-lies/

Posts: 1,298

Threads: 38

Joined: Sep 2016

Reputation:
30

This is the Python tags for your code. The Python icon

Error:

This is errors. The Red X

Output:

This is the output for your code. The black bar with the arrow above it

Your errors are referring to unicode errors, which Windows does not support. Windows uses ‘code pages’, in your case it is code page 850 (cp850). Python got tired of waiting for Windows to get on the utf-8 train and fixed it themselves
with version 3.6. This only affects Python. If you use the command terminal for other purposes, it will still use the default code page. So to resolve your problem with Python (regarding utf) upgrade your version.

If it ain’t broke, I just haven’t gotten to it yet.
OS: Windows 10, openSuse 42.3, freeBSD 11, Raspian «Stretch»
Python 3.6.5, IDE: PyCharm 2018 Community Edition

Yaya33

Programmer named Tim


Posts: 8

Threads: 2

Joined: Oct 2017

Reputation:
0

sparkz_a lot,
Thanks again!
So, the Python symbol is the «BB code»
Okay, I will do as per you suggestion- uninstall 3.5 and install the latest version.

Posts: 1,298

Threads: 38

Joined: Sep 2016

Reputation:
30

It is one of the icons.

If you follow the tutorial link I posted, you won’t end up with that horrendous installation directory, an added bonus :-)

If it ain’t broke, I just haven’t gotten to it yet.
OS: Windows 10, openSuse 42.3, freeBSD 11, Raspian «Stretch»
Python 3.6.5, IDE: PyCharm 2018 Community Edition

Yaya33

Programmer named Tim


Posts: 8

Threads: 2

Joined: Oct 2017

Reputation:
0

Oct-27-2017, 02:09 PM
(This post was last modified: Oct-27-2017, 02:10 PM by Yaya33.)

sparkz_a lot,
I followed the instructions and you are spot on. Installing it on top directory was a surprise and bonus. I had struggled with directory paths and names and not sure what directory was. I can now easily find Python and install Lib using pip. No more worries about paths and directories.
I think installing Python on some other root directory should be banned- well at least for beginners Smile . We have already got enough problems at hand- learning the language.

Thanks again for the all the help!

Possibly Related Threads…
Thread Author Replies Views Last Post
  [SOLVED] [Debian] UnicodeEncodeError: ‘ascii’ codec Winfried 1 299 Nov-16-2022, 11:41 AM
Last Post: Winfried
  Visual Studio Code venv ibm_db error mesi1000 7 597 Nov-13-2022, 12:36 AM
Last Post: snippsat
  debugging help on Visual Studio Code mg24 12 607 Oct-02-2022, 12:18 AM
Last Post: mg24
  UnicodeEncodeError — Dealing with Japanese Characters fioranosnake 2 486 Jul-07-2022, 08:43 PM
Last Post: fioranosnake
  Problem with importing Python file in Visual Studio Code DXav 7 1,396 Jun-15-2022, 12:54 PM
Last Post: snippsat
  UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘xfd’ in position 14: ordin Armandito 6 1,192 Apr-29-2022, 12:36 PM
Last Post: Armandito
  Visual Studio Code Intellisense for Imported Modules Not Working hockinsk 1 1,321 Apr-23-2022, 04:41 PM
Last Post: deanhystad
Photo Visual studio code unable to color syntax on python interpreter tomtom 4 1,587 Mar-02-2022, 01:23 AM
Last Post: tomtom
  compile error Visual Studio Code jamie_01 2 934 Jan-25-2022, 09:36 AM
Last Post: Larz60+
  UnicodeEncodeError caused by print when program runs from Popen SheeppOSU 5 1,371 Jan-13-2022, 08:11 AM
Last Post: SheeppOSU

Framework Python Flask

Каркас Flask — программная конструкция на языке Python для быстрого создания классических веб-приложений. Фреймворк Flask представляет собой основу для быстрого и легкого запуска разработки сайта с возможностью масштабирования до сложного приложения.

Исходник веб-приложения прикрепленный к данной статье содержит все необходимые пакеты и виртуальную среду, но можно самостоятельно создать веб-проект и от исходника использовать только файлы запуска: app.py и app2.py. Как создать веб-проект Python Flask в Visual Studio читайте на странице Создание веб-проекта приложения Flask.

Простейшее веб-приложение Flask

Минимальное рабочее веб-приложение Flask состоит из небольшого количество кода. Каждое веб-приложение описываемого фреймворка должно иметь объект класса Flask. Встроенный шаблон в Visual Studio создает файл приложения с именем app.py, но можно переименовать файл в любое другое название (кроме flask.py), более подходящее для вашего проекта.

Веб-приложение Flask получает в Visual Studio локальный адрес localhost, установленный в операционной системе Windows по умолчанию. Причем, для автоматического запуска браузера, локальный адрес должен быть установлен в свойствах проекта веб-приложения — вкладка Отладка. Незанятый порт для доступа к веб-приложению выбирается операционной системой случайным образом.

Свойства проекта Flask, URL-адрес и порт При разработке веб-приложения может быть более удобным другой локальный адрес с постоянным портом. Для такой возможности необходимо щелкнуть правой кнопкой мыши на названии проекта и в контекстном меню выбрать Свойства, в открывшемся окне активировать вкладку Отладка и указать желаемый локальный адрес и порт. После этого приложение будет запускаться только по указанному адресу и номеру порта.

Можно использовать любые локальные адреса зарегистрированные в операционной системы Windows. Как регистрировать локальные URL-адреса можно прочитать на странице Веб сервер IIS Windows, настройки для тестирования сайтов на компьютере. Запуск приложения в отладочном режиме: app.run(HOST, PORT, True) дает возможность редактировать код без перезапуска сервера разработки Flask.

# ===== Запуск Flask веб-приложения с помощью сервера разработки =====

# Доступ к определению класса Flask
from flask import Flask

# Каждое веб-приложение создает экземпляр класса Flask
app = Flask(__name__)

# Маршрутизатор на основе декоратора запускает функцию hello() по адресу "/"
# Маршрутизатор может запустить любую функцию или даже несколько
@app.route('/')
def hello():
    # Вывод html-кода в браузер по указанному 
    # в маршрутизаторе адресу
    return "<h1>Hello World! Привет Мир!</h1>"


if __name__ == '__main__':
    import os
    # Получение имени хоста для запуска веб-приложения.
    # Настраивается в свойствах проекта.
    HOST = os.environ.get('SERVER_HOST', 'localhost')

    # Если раскомментировать строки ниже
    # в окне интерпретатора распечатается список
    # переменных среды со значениями.
    #print("===== Переменнные среды =====")
    #for key in os.environ.keys() :
    #    print("{0}: {1}".format(key, os.environ[key]), end="n")
    #print("===== /Переменнные среды ===== n")

    try:
        # Номер порта доступа к запущенному веб-приложению.
        # Выбирается системой случайным образом.
        PORT = int(os.environ.get('SERVER_PORT', '5789'))
    except ValueError:
        # При ошибке получения порта доступа к веб-приложению
        # определяется порт по умолчанию
        PORT = 5789
    # Запуск сервера разработки в отладочном режиме
    app.run(HOST, PORT, True)

Настройка Unicode

Хотя поддержка UTF-8 установлена в фреймворке Flask по умолчанию, запустив приложение с html-кодом содержащим кириллицу или спецсимволы, вместо успешного запуска, в окне интерпретатора можно увидеть подобную ошибку:
File «…FlaskWebProjectEmpty app.py», line 14
return «<h1>Hello World! ������ ���!</h1>»
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xcf in position 17: invalid continuation byte

Синтаксическая ошибка:(ошибка юникода) Кодек utf-8 не может декодировать байт 0xcf в позиции 17: недопустимый байт продолжения).
Это значит, что кодек Python не смог сопоставить байту 0xcf ни один символ кодировки UTF-8.

Вероятнее всего необходимо изменить кодировку файла app.py на UTF-8. Изменить кодировку текущего файла можно в диалоговом окне из главного меню Visual Studio командами Файл->Сохранить app.py как…. В диалоговом окне нажать на треугольник кнопки сохранения и выбрать Сохранить с кодировкой… и в открывающимся списке выбрать кодировку Юникод(UTF-8, с сигнатурой), кодовая страница 65001. После пересохранения файла в указанной кодировке запуск веб-приложения будет успешным.

Рисунки ниже поясняют как пересохранить файл app.py в кодировке UTF-8.

Диалоговое окно Сохранить как
Диалоговое окно замены файла
Диалоговое окно выбора кодировки

Простое приложение Flask №2

Назначение файла запуска приложения Python

Для экспериментальной работы с приложением Flask, в прикрепленном исходнике проекта имеются два потенциальных файла запуска. Какой конкретно запускается в текущий момент указывается в свойствах проекта на вкладке Общее

Писать html-код в текстовой строке не очень удобно, поэтому во втором приложении облегчим себе работу по написанию html кода. Для этого будем использовать мощности текстового редактора интегрированной среды Visual Studio. Создадим три html файла, каждый из которых будет представлять отдельную страничку в браузере. Декораторы маршрутизации каркаса Flask минимальным кодом создают человеко-понятные URL адреса веб-страницам. Наполняя html файлы тегами с текстом легко создается примитивный сайт из трех страничек.

Содержимые html файлов выводятся в поток с помощью встроенной функции open(...). Отметьте, что открытие файла в текстовом режиме обязательно предусматривает установку кодировки текста. В случае открытия файла в бинарном режиме, кодировка текста определяется соответственно кодировке самого файла.

Программный код второго приложения Python Flask:

# ===== Запуск Flask веб-приложения с помощью сервера разработки =====

# Доступ к определению класса Flask
from flask import Flask
app = Flask(__name__)

# ====== Маршрутизация на основе декораторов =====

# URL = '/'
@app.route('/')
def home():
    # Чтение файла в текстовом режиме только с указанием кодировки.
    # return open('home.html', 'rt', encoding="utf-8")

    # В бинарном режиме чтения можно не указывать кодировку текста.
    # Возращает байты, кодировка не указывается.
    # Кодировка текста распознается по кодировке файла.
    # Так как кодировка файла UTF-8,
    # то и байты будут восприняты как текст с символами UTF-8.
    return open('home.html', 'rb')

# URL = 'page1'
@app.route('/page1')
def page1():
    return open('page1.html', 'rt', encoding="utf-8")

# URL = 'page2'
@app.route('/page2')
def page2():
    return open('page2.html', 'rt', encoding="utf-8")

# ====== /Маршрутизация на основе декораторов =====

if __name__ == '__main__':
    import os
    HOST = os.environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(os.environ.get('SERVER_PORT', '5789'))
    except ValueError:
        PORT = 5789
    app.run(HOST, PORT, True)

Исходник веб-приложения Flask

Архив исходника содержит все необходимые пакеты и виртуальную среду. Для возможности запуска приложения необходимо прописать путь к базовому интерпретатору Python версии от 3.9.7 до 3.10.7 установленный на ваш компьютер, на этих версиях исходник успешно протестирован.

Файл конфигурации виртуальной среды Python Путь к базовому интерпретатору прописывается в файле виртуальной среды проекта envpyvenv.cfg как показано на рисунке выше. Открыть для просмотра файлы виртуальной среды можно кнопкой на вкладке Обозреватель проектов->Показать все файлы. Получение путей инсталляций интерпретаторов и библиотек Python описано в статье Программирование на Python в Visual Studio.

Скачать исходник

  • FlaskWebProjectEmpty-python39_8.zip
  • Размер: 7934 Кбайт
  • Загрузки: 23

Понравилась статья? Поделить с друзьями:
  • Visual studio stack overflow error
  • Vipnet ошибка открытия почтовой базы c program files infotecs vipnet client msarch
  • Vipnet ошибка инициализации транспортного каталога
  • Vipnet ошибка 238
  • Vipnet выдает ошибку при установке