【问题标题】:Unicode Error in Django while loading in data加载数据时Django中的Unicode错误
【发布时间】:2013-10-20 06:14:37
【问题描述】:

所以我试图将这一行作为模型的名称加载:

"Auf der grünen Wiese (1953)"

但我得到了错误

UnicodeDecodeError: 'utf8' codec can't decode byte 0xfc in position 70: invalid start byte

我在看:http://docs.python.org/2/howto/unicode.html#the-unicode-type 但我仍然不确定如何解决这个问题。我可以将其转换为带有替换/忽略错误选项的 unicode,但我认为这不是最理想的解决方案?

我还看到 django 提供了一些函数来帮助解决这些问题:https://docs.djangoproject.com/en/dev/ref/unicode/ 但我仍然不太确定如何处理它。

【问题讨论】:

    标签: python django unicode encoding utf-8


    【解决方案1】:

    该行使用latin1 编码。正确解码 你应该这样做(假设 Python 2.x):

    line = 'Auf der gr\xfcnen Wiese (1953)'
    name = line.decode('latin1')
    

    如果你是从文件中读取这个,你也可以这样做:

    f = codecs.open(path, 'r', 'latin1')
    name = f.readline().strip()
    

    【讨论】:

    • 一般来说,大多数具有不同语言符号的字符串是否编码为 latin1?我的意思是与英语有相似字符的语言。
    • 这是一个复杂的问题。这取决于您的数据源。 UTF-8 现在通常比 latin-1 更常见,至少根据我的经验,但在没有上下文的情况下进行概括是很危险的。 joelonsoftware.com/articles/Unicode.html 是对字符集、Unicode 和不同编码的基础知识的一个非常好的和正当流行的解释,如果您还没有在这方面有很好的基础,应该有助于使 Python 工具更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2015-12-30
    • 2010-12-26
    • 2011-08-11
    • 2013-08-30
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多