Форум сайта python.su
Здравствуйте! Не могу победить проблему с кодировкой.
Читаю данные с хед хантера, пишу их в файл. Все хорошо. Когда пытаюсь принтануть - получаю трейсбэк:
данные сохранены
Traceback (most recent call last):
File “D:\py_projects\job-parsing-k4\src\tmp.py”, line 25, in <module>
print(res)
File “C:\python 3.11.2\Lib\encodings\cp1251.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\u0138’ in position 147082: character maps to <undefined>
Process finished with exit code 1
Собственно, сам код.
import requests import json FileName = 'test.json' def get_data(): params = {'area': 113, 'currency': 'RUR', 'page': 0, 'per_page': 100, 'only_with_salary': True, 'search_field': 'name', 'text': 'python', 'salary': 200000} req = requests.get('https://api.hh.ru/vacancies', params) data = req.content.decode('utf-8') req.close() return data def json_load(): with open(FileName, encoding='utf-8') as f: j = json.load(f) return j jsObj = json.loads(get_data()) with open(FileName, 'w', encoding='utf-8') as f: f.write(json.dumps(jsObj, ensure_ascii=False, indent=2)) print('данные сохранены') res = json_load() print(res)
Отредактировано alex77bel (Апрель 3, 2023 20:13:11)
Офлайн
alex77belwiki. буква кра
а конкретно, из-за букв “ĸ” в словах “ĸаĸ” и “знаĸомство”, потому что это странные буквы с кодом ‘\u0138’, который дает ошибку.
Офлайн
там же могут и другие сюрпризы быть подошли кодировки cp866 и ISO-8859-5 в формате
print(i.encode(encoding=“cp866”, errors=“replace”).decode(encoding=“cp866”))
Офлайн
И что, это похоже на букву к?
>>> text = 'abc \u0138 def' >>> >>> text.encode(encoding='cp866', errors='replace').decode(encoding='cp866') 'abc ? def' >>>
>>> text = 'abc \u0138 def' >>> >>> textout = text.replace('\u0138', 'к') >>> textout.encode(encoding='cp866', errors='replace').decode(encoding='cp866') 'abc к def' >>>
alex77belЭто вручную проставлено. И твоя задача - это всё обратить. Дебилоидов много в сети.
там же могут и другие сюрпризы быть
Офлайн