[英]JSON printed to console shows wrong encoding
我試圖從一些JSON文件中讀取西里爾字符,然后在Windows上使用Python 3.4.3將其輸出到控制台。 普通打印('Russiansmthбуквы')按預期工作。
但是當我打印JSON內容時,它似乎在Windows-1251中打印 - “СЂСѓСЃСЃРєРёРμР±СѓРєРІС<”(雖然我的控制台,我的JSON文件和我的.py(帶編碼注釋)都是UTF-8)。
我已經嘗試將其重新編碼為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:字符映射到) 。 如果我刪除這一個字母,它沒有顯示異常,但上面的問題仍然存在。
“ 但是當我打印JSON內容...... ”
如果您在使用打印type
的命令,那么你得到變為亂碼 СЂСѓСЃСЃРєРёРµ …
而不是русские …
下CHCP 1251
范圍。
嘗試在CHCP 65001
(即UTF-8
)范圍內type
。
按照nauer的建議 ,使用open(DictionaryName, encoding="utf8")
。
示例 ( 39755662.json
以UTF-8
編碼保存):
==> chcp 866
Active code page: 866
==> type 39755662.json
{
"╤А╤Г╤Б╤Б╨║╨╕╨╡ ╨▒╤Г╨║╨▓╤Л": "╤З╤В╨╛-╤В╨╛ ╨╡╤Й╤С ╨╜╨░ ╤А╤Г╤Б╤Б╨║╨╛╨╝",
"rly": "╤А╤Г╤Б╤Б╨║╨╕╨╣"
}
==> chcp 1251
Active code page: 1251
==> type 39755662.json
{
"русские буквы": "что-то ещё на русском",
"rly": "СЂСѓСЃСЃРєРёР№"
}
==> chcp 65001
Active code page: 65001
==> type 39755662.json
{
"русские буквы": "что-то ещё на русском",
"rly": "русский"
}
==>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.