我正在尝试从某些JSON文件中读取西里尔字符,然后使用在Windows上的Python 3.4.3 将其输出到控制台。普通打印('Russiansmthбуквы')按预期工作。
但是当我打印JSON内容时,它似乎在Windows-1251中打印 - “СЂСѓСЃСЃРєРёРμР±СѓРєРІС<”(虽然我的控制台,我的JSON文件和我的.py(带编码注释)都是UTF-8)。 / p>
我尝试将其重新编码为Win-1251并将控制台设置为Win-1251,但仍然没有运气。
我的JSON(以UTF-8编码):
{
"русские буквы": "что-то ещё на русском",
"english letters": "и что-то на великом"
}
我加载字典的代码:
def load_dictionary():
global Dictionary, isFatal
try:
with open(DictionaryName) as f:
Dictionary = json.load(f)
except Exception as e:
logging.critical('Error loading dictionary: ' + str(e))
isFatal = True
return
logging.info('Dictionary was loaded successfully')
我试图以两种方式输出它(两者都显示相同的乱码):
print(helper.Dictionary.get('rly'))
print(helper.Dictionary)
一个有趣的附加组件:我已将整个俄语字母添加到我的JSON文件中,似乎卡在“Сс”字母。 (错误加载字典:'charmap'编解码器无法解码位置X中的字节0x81:字符映射到)。如果我删除这一个字母,它没有显示异常,但上面的问题仍然存在。
答案 0 :(得分:0)
“但是当我打印JSON内容...... ”
如果您使用public boolean isDAGBasedVcs() {return true;}
命令进行打印,那么您会在type
范围内获得mojibake СЂСѓСЃСЃРєРёРµ …
而不是русские …
。
在CHCP 65001
(i.e. UTF-8
)范围内尝试CHCP 1251
。
关注nauer's advice,使用type
。
示例(使用open(DictionaryName, encoding="utf8")
编码保存39755662.json
):
UTF-8