我正在尝试在 Ubuntu 中保存 python-docx 文档,但出现此错误:'ascii' codec can't encode character '\xed' in position 65: ordinal not in range(128)
。我尝试应用this solution,但遇到另一个错误:AttributeError: 'bytes' object has no attribute 'write'
。
这是引发第一个错误的代码:
current_directory = settings.MEDIA_DIR
file_name = "Rooming {} {}-{}.docx".format(hotel, start_date, end_date)
document.save(current_directory + file_name)
这是引发最新错误的代码:
current_directory = settings.MEDIA_DIR
file_name = "Rooming {} {}-{}.docx".format(hotel, start_date, end_date)
document.save((current_directory + file_name).encode('utf-8'))
我知道文件名将以非标准的ascii字符结尾,但是我希望能够使用所有这些字符来保存文件。
答案 0 :(得分:0)
之所以出现此问题,是因为在西班牙语中,我们使用了一些非标准的字符修饰符(áéíóúüñ),并且我试图用一些包含此类字符的数据来形成文件名。我想一定有一种配置服务器的方法,这样就不会有问题,但是我走了短路,并更改了标准字符的特殊字符:
current_directory = settings.MEDIA_DIR
file_name = "Rooming {} {}-{}.docx".format(unicodedata.normalize('NFKD', hotel).encode('ascii', 'ignore').decode('ascii'), start_date, end_date)
document.save(current_directory + file_name)
此方法替换以下字符:áéíóúüñÁÉÍÓÚÜÑ -> aeiouunAEIOUUN
。
错误消失。