【发布时间】:2011-08-23 08:32:39
【问题描述】:
我已经使用 UTF8 编码将一些数据上传到 MySQL(对于 osx10.6 为 5.5.15)数据库,但由于某种原因,我在加载它时必须将其编码指定为 latin1。
我认为这部分很好,因为当我写入 OUTFILE 时,我的 unicode 'nu' 字符在终端和 Vim 中都可以正常显示。
但是,当我在 MySQL 会话中查看它们时,并且当我尝试从 Django admin 编辑字段时,我得到了错位字符(latin1?)。
所以,我的问题是:如何告诉 MySQL 客户端和(尤其是)Django 以 UTF-8 格式读取我的数据库,它应该采用的方式?
在命令行,我试过了
--default_character_set=utf8
还有
'SET NAMES UTF8;'
在 MySQL 提示符下,但它们不起作用。
当我查看 VARIABLES LIKE 'char%' 时,除了 latin1 的 character_set_server 之外,它们都设置为 utf8。如果我将它设置为 utf8.... 那也不起作用。
如果有人能在这里给我一些指点,我将不胜感激,尤其是关于如何配置 Django 以正确地与我的数据库对话。
谢谢!
【问题讨论】:
-
加载时必须指定 latin1 是什么意思?通常,您应该在创建数据库时指定 UTF-8:“CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;”
-
数据库本身是 utf-8,排序规则 utf_unicode_ci,但是如果我 LOAD DATA LOCAL INFILE '
' INTO TABLE CHARACTER SET utf8 我得到问号,并且根据其他地方的各种帖子在互联网上,如果我指定(不正确的)'CHARACTER SET latin1',它似乎只使用正确的编码上传。非常混乱。
标签: mysql django unicode utf-8