вам нужна правильная кодировка для получения консоли / терминала командной строки (которая поддерживает и настроена для utf-8) для отображения правильных символов
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
PEP 263 -- Defining Python Source Code Encodings: https://www.python.org/dev/peps/pep-0263/
/3782668/oshibka-kodirovaniya-v-python-s-kitaiskimi-ieroglifami#3782687
"""
from urllib.parse import unquote
urlencoded = '%ed%a1%85%ed%b7%97'
char = unquote(urlencoded, encoding='gbk')
char1 = unquote(urlencoded, encoding='big5_hkscs')
char2 = unquote(urlencoded, encoding='gb18030')
print(char)
print(char1)
print(char2)
# 怼 呿 窏
#100 � 窾 �
# 怼 呿 窏
это довольно экзотический символ юникода, и я ошибся в кодировке, это не упрощенный китайский символ, это традиционный и довольнотакже далеко в отображении \U215D7
- CJK UNIFIED IDEOGRAPHS EXTENSION B .
, но перечисленная кодовая точка и другие значения вызывали у меня подозрение, что это был плохо закодированный код, поэтому мне потребовалось некоторое время.
кто-то помог мне понять, как кодировка попала в эту форму.вам нужно выполнить несколько преобразований кодирования, чтобы вернуть его к исходному значению.
cjk = unquote_to_bytes(urlencoded).decode('utf-8', 'surrogatepass').encode('utf-16', 'surrogatepass').decode('utf-16')
print(cjk)