UnicodeDecodeError: ‘charmap’ codec can’t decode byte 0x98 in position 2251: character maps to <undefined> · Issue #7266 · pypa/pip · GitHub

How to fix ”unicodedecodeerror: ‘charmap’ codec can’t decode byte 0x9d in position 29815: character maps to <undefined>”?

As you see from https://en.wikipedia.org/wiki/Windows-1252, the code 0x9D is not defined in CP1252.

The “error” is e.g. in your open function: you do not specify the encoding, so python (just in windows) will use some system encoding. In general, if you read a file that maybe was not create in the same machine, it is really better to specify the encoding.

I recommend to put also a coding also on your open for writing the csv. It is really better to be explicit.

I do no know the original file format, but adding to open , encoding='utf-8' is usually a good thing (and it is the default in Linux and MacOs).

Unicodedecodeerror: ‘charmap’ codec can’t decode byte 0x98 in position 2251: character maps to <undefined> · issue #7266 · pypa/pip

Environment

  • pip version: 19.3.1
  • Python version: 3.8.0 x64
  • OS: Windows 10 x64 10.0.17134 (system language Russian, cp1251)

Description
On same environment as from 2021 I still have this error on newer version python and pip when I try to install certain libraries on newer version (previous issue posted in comment of #4110 (comment) and i was manually fixed it by editing code (two posts below)). Now however all things changed and I don’t see solution for it, however take a look at output number 2.

Expected behavior
Install without error

How to Reproduce
Trying to install hiredis or libs it dependent on.

  1. Run in cmd: pip install hiredis
  2. An error occurs when it try to install it (check output number 1).
:/>  Как удалить приложение Xbox в Windows 10

Output

  1. When I use pypi
pip install hiredis
Collecting hiredis
  Using cached https://files.pythonhosted.org/packages/9e/e0/c160dbdff032ffe68e4b3c576cba3db22d8ceffc9513ae63368296d1bcc8/hiredis-1.0.0.tar.gz
    ERROR: Command errored out with exit status 1:
     command: 'c:pythonpython38python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'G:\AppData\Local\Temp\pip-install-7t5ulr6t\hiredis\setup.py'"'"'; __file__='"'"'G:\AppData\Local\Temp\pip-install-7t5ulr6t\hiredis\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'G:AppDataLocalTemppip-install-7t5ulr6thiredispip-egg-info'
         cwd: G:AppDataLocalTemppip-install-7t5ulr6thiredis
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "G:AppDataLocalTemppip-install-7t5ulr6thiredissetup.py", line 22, in <module>
        long_description=open('README.md', 'r').read(),
      File "c:pythonpython38libencodingscp1251.py", line 23, in decode
        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 2251: character maps to <undefined>
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

However after some tests I tried to do that:
2. Install from github repository

pip install git https://github.com/redis/hiredis-py
Collecting git https://github.com/redis/hiredis-py
  Cloning https://github.com/redis/hiredis-py to g:appdatalocaltemppip-req-build-m7i4cung
  Running command git clone -q https://github.com/redis/hiredis-py 'G:AppDataLocalTemppip-req-build-m7i4cung'
  Running command git submodule update --init --recursive -q
Installing collected packages: hiredis
    Running setup.py install for hiredis ... done
Successfully installed hiredis-1.0.0

Note: I don’t know why it still erroring on pypi package, but it may look, what old error return again? During this installation it looks like I can’t edit pip-install-7t5ulr6thiredissetup.py", line 22 to at least trying to fix it if it would happen to any other lib.

Получаю ошибки в коде(unicodedecodeerror: ‘charmap’ codec can’t decode byte 0x98 in position 320: character maps to <undefined>

Операционка: windows 10

python 3.8

библеотека:

atomicwrites==1.4.0

attrs==19.3.0

colorama==0.4.3

cycler==0.10.0

demjson==2.2.4

kiwisolver==1.2.0

matplotlib==3.2.2

more-itertools==8.4.0

nose==1.3.7

numpy==1.18.5

packaging==20.4

pandas==1.0.4

pluggy==0.13.1

py==1.8.2

pyparsing==2.4.7

pytest==5.4.3

python-dateutil==2.8.1

pytz==2020.1

six==1.15.0

wcwidth==0.2.4

xlrd==1.2.0

xmltodict==0.12.0

csv поставлен через pycharm

Суть программы
Необходимо реализовать функцию get_books.

:/>  При запуске винды спрашивает с какого тома запускать. Как это убрать?

Функция должна принимать имя файла для чтения

Функция должна возвращать данные из файла в виде списка списков как:

[ [‘номер’, ‘название’, ‘автор’, количество, цена], […], … ]

  • первую строку из файла ‘номер|название|автор|количество|цена’ возвращать не надо.
  • количество возвращается как int
  • цена возвращается как float

Сам код

import csv
# создаю функцию которая принимает параметр file_name
def get_books(file_name):
# заношу в переменную csv обьект
books = csv.reader(open(file_name))
# cоздаю переменную count
count = 0
# создаю books_array куда будем добавлять книги
books_array = []# делаю цикл
for i in books:
# условие, выполняем код если count > 0
if count > 0:

# добавляем в массив books_array книгу где books_array.append([
i[0].split(‘|’)[0],
i[0].split(‘|’)[1],
i[0].split(‘|’)[2],
int(i[0].split(‘|’)[3]),
float(i[0].split(‘|’)[4])

# прибавляем к count единицу
count = count 1
# возвращаю books_array
return books_array

# вывожу функцию get_books() и передаю туда название файла из которого читаю данные
print(get_books(‘books.txt’))

Помогите исправить код)

§

Операционка: windows 10

python 3.8

библеотека:

atomicwrites==1.4.0

attrs==19.3.0

colorama==0.4.3

cycler==0.10.0

demjson==2.2.4

kiwisolver==1.2.0

matplotlib==3.2.2

more-itertools==8.4.0

nose==1.3.7

numpy==1.18.5

packaging==20.4

pandas==1.0.4

pluggy==0.13.1

py==1.8.2

pyparsing==2.4.7

pytest==5.4.3

python-dateutil==2.8.1

pytz==2020.1

six==1.15.0

wcwidth==0.2.4

xlrd==1.2.0

xmltodict==0.12.0

csv поставлен через pycharm

Суть программы
Необходимо реализовать функцию get_books.

Функция должна принимать имя файла для чтения

Функция должна возвращать данные из файла в виде списка списков как:

[ [‘номер’, ‘название’, ‘автор’, количество, цена], […], … ]

  • первую строку из файла ‘номер|название|автор|количество|цена’ возвращать не надо.
  • количество возвращается как int
  • цена возвращается как float

Сам код

import csv
# создаю функцию которая принимает параметр file_name
def get_books(file_name):
# заношу в переменную csv обьект
books = csv.reader(open(file_name))
# cоздаю переменную count
count = 0
# создаю books_array куда будем добавлять книги
books_array = []# делаю цикл
for i in books:
# условие, выполняем код если count > 0
if count > 0:

:/>  System.exit(). Какой код выхода использовать?

# добавляем в массив books_array книгу где books_array.append([
i[0].split(‘|’)[0],
i[0].split(‘|’)[1],
i[0].split(‘|’)[2],
int(i[0].split(‘|’)[3]),
float(i[0].split(‘|’)[4])

# прибавляем к count единицу
count = count 1
# возвращаю books_array
return books_array

# вывожу функцию get_books() и передаю туда название файла из которого читаю данные
print(get_books(‘books.txt’))

Помогите исправить код)

Оставьте комментарий