尝试保存文件时出现unicode错误

时间:2018-12-27 23:26:36

标签: python python-docx

我正在尝试在 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字符结尾,但是我希望能够使用所有这些字符来保存文件。

1 个答案:

答案 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

错误消失。