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

Nic*_*ght 1 python django utf-8

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

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

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

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

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

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

谢谢,尼克.

bob*_*nce 6

u'\u201cHello World\u201d'
Run Code Online (Sandbox Code Playgroud)

是Unicode文本的正确Python表示形式“Hello World”.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
Run Code Online (Sandbox Code Playgroud)

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

>>> '\x61'=='a'
True
Run Code Online (Sandbox Code Playgroud)

现在,如果您已经获得\u\x序列转义Python并进入导出文件,那么您在导出时出错了.也许你repr()误用了某个地方.