5

私のコードでは、このエラーが発生し続けます...

UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 390: character maps to <undefined>

UnicodeErrorとUnicodeEncodeErrorを除いて入れようとしましたが、何も機能しません。問題は、ユーザーの入力であるため、ユーザーが入力する内容を制御できないため、プログラムをクラッシュさせるのではなく、エラーを示す印刷を表示するためにすべてのエンコードエラーが必要です。 。

try:
    argslistcheck = argslist[0]
    if argslistcheck[0:7] != "http://":
        argslist[0] = "http://" + argslist[0]
    with urllib.request.urlopen(argslist[0]) as url:
        source = url.read()
        source = str(source, "utf8")
    except urllib.error.URLError:
        print("Couln't connect")
        source = ""
    except UnicodeEncodeError:
        print("There was an error encrypting...")
        source = ""

トレースバック:

Traceback (most recent call last):
  ..... things leading up to error
  File "C:\path", line 99, in grab print(source)
  File "C:\Python33\lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 390: character maps to <undefined>
4

4 に答える 4

5

印刷に失敗しています。お使いのWindowsコンソールはUTF-8の印刷をサポートしていないため、コードページを変更する必要があります。

chcp 65001

これはWindowsコマンドであり、Pythonコマンドではありません。フォントを切り替える必要があるかもしれません。LucidaSansConsoleは、より多くのグリフを処理できるUnicodeフォントです。

于 2013-02-24T21:45:04.297 に答える
5

これを試してみてください:

source = str(source, encoding='utf-8', errors = 'ignore')

または、この投稿の質問をご覧ください。

于 2013-02-24T21:49:10.197 に答える
3

これを試してstr()を置き換えてください: source = source.encode('UTF-8')

于 2013-02-24T21:39:52.860 に答える
1
start_url="https://www.indeed.co.in/jobs?q=teacher&l=India"
page_data=requests.get(start_url)
soup=BeautifulSoup(page_data.text,"lxml")
fname='1download'
with open(fname,'w')as f:
    f.write(soup.prettify())
f.close()

return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 
235677: character maps to <undefined>

両方のエラーは、ファイルにエンコーディングとしてutf-8を追加することで解決できます。また、ファイルを開くにはopen()メソッドを使用する必要があることに注意してください。

f = open()もエラーになります

正しいコードは次のとおりです。

 start_url="https://www.indeed.co.in/jobs?q=teacher&l=India"
 page_data=requests.get(start_url)
 soup=BeautifulSoup(page_data.text,"lxml")
 fname='1download'
 with open(fname,'w',encoding="utf-8")as f:
     f.write(soup.prettify())
 f.close()
于 2020-08-02T16:54:28.820 に答える