UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 49: character maps to <undefined>

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 49: character maps to <undefined>

我正在创建一个特定的函数,它可以给我有关 ISS(国际 Space 站)和给定位置(以十进制坐标表示)的信息,这些信息可以根据输入而变化。但是当我使用这个时:

print(ubicacion.raw['address']['country'],",",ubicacion.raw['address']['city'])

它有效,但对于某些国家/地区,例如当我尝试使用坐标堪培拉时,它会显示以下信息:

Corinna Street, Phillip, District of Woden Valley, Australian Capital Territory, 2606, Australia

并且因为它不提供城市,当我使用键 "city" 时,我显然得到了一个错误,因为它不存在于那个列表中。

所以我想到的一个解决方案是,因为至少我总是会得到国家,也许我可以使用另一个功能,基于国家,我可以获得首都,就是那个我需要并且它存在,我使用了 "CountryInfo" (from countryinfo import CountryInfo)。问题是,当我尝试使用它时,出现以下错误:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 49: character maps to

我已经搜索过类似的问题,很多人建议指定编码,但它似乎不适用于geopy。因为我试过这个:

countryinfo=CountryInfo(country,encoding="utf8") 

我收到了这个错误:

TypeError: init() got an unexpected keyword argument 'encoding'

from countryinfo import CountryInfo

country = CountryInfo('Singapore')
country.capital()
# returns string
'Singapore'

country.capital() 将为您提供字符串格式的资本

引用自:https://python-forum.io/Thread-Countryinfo-package-charmap-error

来自@snippsat 的回答,2018 年 9 月 14 日,11:37 AM

打开 ..Lib\site-packages\countryinfo 文件夹中的 countryinfo.py。 将行更改为:

country_info = json.load(open(file_path, encoding='utf-8'))

对我有用。