簡體   English   中英

UnicodeDecodeError:“ charmap”編解碼器無法解碼位置591處的字節0x8f:字符映射到<undefined>

[英]UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 591: character maps to <undefined>

我有一個將docx文件轉換為純文本的代碼:

import docx
import glob

def getText(filename):
    doc = docx.Document(filename)
    fullText = []
    for para in doc.paragraphs:
        fullText.append(para.text)
    return '\n'.join(fullText)

for file in glob.glob('*.docx'):
    outfile = open(file.replace('.docx', '-out.txt'), 'w', encoding='utf8')


for line in open(file):
    print(getText(filename), end='', file=outfile)
outfile.close()

但是,當我執行它時,出現以下錯誤:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\add spaces docx\converting docx to pure text.py", line 16, in <module>
    for line in open(file):
  File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 591: character maps to <undefined>

我正在使用Python 3.5.2。

誰能幫助解決這個問題?

提前致謝。

盡管我不太了解docx模塊,但我認為可以找到解決方案。

根據文件格式Unicode字符8f (charmap編解碼器無法解碼,導致UnicodeDecodeError )是控制字符

您應該意識到,在讀取文件時 (docx模塊正在做的事情就是這種情況),您應該知道控制字符,因為有時Python無法對其進行解碼。

解決方案是放棄docx模塊,了解.docx文件的工作方式和格式,並在讀取docx文件時使用open(filename, "rb")以便Python能夠對其進行解碼。

但是,這可能不是問題。 如您所見,在目錄編碼中,它使用cp1512作為其編碼(默認),而不是utf-8。 嘗試將其更改為utf_8.py(對我來說,它顯示為utf_8.pyc)。

注意:很抱歉缺少鏈接。 這是因為我的信譽不高於10(因為我是Stack Overflow的新手)。

暫無
暫無

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

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