簡體   English   中英

UnicodeEncodeError:'charmap'編解碼器無法編碼字符...問題

[英]UnicodeEncodeError: 'charmap' codec can't encode character… problems

在有人給我幾十億次這個問題的廢話之前,請注意我已經在很多線程中嘗試了幾個答案但是它們似乎都沒有適合我的問題。

import json
def parse(fn):
    results = []
    with open(fn) as f:
        json_obj = json.loads(open(fn).read())
        for r in json_obj["result"]:
            print(r["name"])

parse("wine.json")

我基本上只是打開一個json文件並迭代一些值。 顯然,每當我讀取一個包含unicode的值時,我就會收到此錯誤。

Traceback (most recent call last):
  File "json_test.py", line 9, in <module>
    parse("wine.json")
  File "json_test.py", line 7, in parse
    print(r["name"])
  File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u201c' in position
15: character maps to <undefined>

正如人們在其他線程中所說的那樣,我試圖對它進行編碼等等,但無論我如何編碼和/或解碼,我都會遇到類似的錯誤。 請幫忙。

一切都很好,直到你嘗試打印字符串。 要打印字符串,必須先將其從純Unicode轉換為輸出設備支持的字節序列。 這需要encode正確的字符集encode ,Python已將其識別為cp850 - Windows控制台默認值。

從Python 3.4開始,您可以將Windows控制台設置為使用UTF-8,並在命令提示符處發出以下命令:

chcp 65001

這應該可以解決您的問題,只要您已將窗口配置為使用包含該字符的字體即可。

Python 3.6開始,這不再是必需的 - Windows總是有一個完整的Unicode接口用於控制台,Python現在使用它代替原始代碼頁I / O. Unicode到控制台就可以了

我最終做的一個可能的臨時修復(取決於是否有人有更好的答案)是使用Unidecode 不幸的是,我失去了所有的口音,但也許有人有一個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM