我的UTF8字符串中的Django \ u字符

时间:2010-07-07 12:54:24

标签: python django utf-8

我将UTF-8数据添加到Django中的数据库。

当数据进入数据库时​​,一切看起来都很好 - 字符(例如):“Hello”是UTF-8编码的。

我的MySQL数据库是UTF-8编码的。当我通过选择来检查数据库中的数据时,我的示例字符串如下所示:?Hello?。我假设这是将字符显示为UTF-8编码。

当我从终端中的数据库中选择数据或导出为Web服务时,我的字符串如下所示:\ u201cHello World \ u201d。

有谁知道如何正确显示我的角色?

我是否需要在某处执行一些额外的UTF-8编码?

谢谢, 尼克。

1 个答案:

答案 0 :(得分:6)

u'\u201cHello World\u201d'

是Unicode文本“Hello World”的正确Python表示形式。 smartquote字符使用\uXXXX十六进制转义而不是逐字显示,因为将Unicode字符写入终端时经常出现问题,特别是在Windows上。 (看起来MySQL试图将它们写入终端但失败了,导致?占位符。)

在设法正确输入和输出Unicode字符的终端上,您可以确认它们是相同的:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u'\u201cHello World\u201d'==u'“Hello World”'
True

就像字节字符串一样,\x序列与字符相同:

>>> '\x61'=='a'
True

现在,如果您有\u\x个序列转义Python并进入导出文件,那么您在导出时出错了。也许您错误地在某处使用了repr()