修复由智能报价引起的UnicodeEncodeError

2024-09-25 00:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个涉及自动生成文档的项目(通过latex)。创建这些文档的人正在windows机器上工作(他使用microsoftword,但现在他正在记事本中编辑它们)。无论如何,我注意到有时候在他编辑文档之后,整个生成过程都会因为Python UnicodeEncodeError而失败。在

我把问题追查到他在文件中添加的一系列引文和使徒行文。 我已经读了很多关于这个错误的文章,但是我不确定在python中解决这个问题的最佳方法是什么。在

这是一个Django应用程序,所以我尝试使用force_unicode、smart_str等django.utils.encode,但这没用。我不知道为什么他添加的字符与我在不同操作系统上添加的字符不同。在

有人能请你吗

  1. 解释发生了什么事
  2. 提出问题的最佳解决方案

Tags: 文件项目文档机器编辑过程windows字符
2条回答

在没有看到代码的情况下不可能解决这个问题。但根据我的经验,Django中有十分之九的unicode错误是由一个实际上不返回unicode的__unicode__方法引起的。在

例如:

def __unicode__(self):
   return 'foo %s' % self.bar

因为字符串是一个bytestring,而不是unicode,所以每当bar字段包含来自外部ASCII的文本时,它就会崩溃。它应该是:

^{pr2}$

有问题的引号很有可能使用非标准的Windows-1252代码点赋值。尝试将django应用程序中“latin1”和/或“iso-8859-1”的所有实例更改为“windows-1252”。在

相关问题 更多 >