我将UTF-8数据添加到Django中的数据库。
当数据进入数据库时,一切看起来都很好 - 字符(例如):“Hello”是UTF-8编码的。
我的MySQL数据库是UTF-8编码的。当我通过选择来检查数据库中的数据时,我的示例字符串如下所示:?Hello?。我假设这是将字符显示为UTF-8编码。
当我从终端中的数据库中选择数据或导出为Web服务时,我的字符串如下所示:\ u201cHello World \ u201d。
有谁知道如何正确显示我的角色?
我是否需要在某处执行一些额外的UTF-8编码?
谢谢, 尼克。
答案 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()
。