¿Cómo establecer la encoding para las columnas de caracteres de las tablas en django?

Tengo un proyecto escrito en Django. Todos los campos que se supone que deben almacenar algunas cadenas deben estar en UTF-8, sin embargo, cuando ejecuto

manage.py syncdb 

todas las columnas respectivas se crean con el conjunto de caracteres cp1252 (¿de dónde lo sacó? No tengo idea) y tengo que actualizar manualmente cada columna …

¿Hay una manera de decirle a Django que cree todas esas columnas con encoding UTF-8 en primer lugar?

Por cierto, yo uso MySQL.

Django no especifica el conjunto de caracteres y la intercalación en las declaraciones CREATE TABLE . Todo está determinado por la base de datos charset. Haciendo ALTER DATABASE ... CHARACTER SET utf8 COLLATE utf8_general_ci antes de ejecutar syncdb debería ayudar.

Para la conexión, Django emite SET NAMES utf8 automáticamente, por lo que no tiene que preocuparse por la configuración predeterminada del conjunto de caracteres de la conexión.

Los backends de la base de datos de Django manejan automáticamente las cadenas Unicode en la encoding apropiada y se comunican con la base de datos. No es necesario que le diga a Django qué encoding utiliza su base de datos. Lo maneja bien, usando la encoding de tu base de datos.

No veo ninguna forma de decirle a Django que cree una columna, usando alguna encoding específica. Como me parece, hay absolutamente alguna configuración previa de MySQL que te afecta. Y a pesar de hacerlo manualmente para todas las columnas, usa estos.

 CREATE DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name] ALTER DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name] 

¿Cuál es su conjunto de encoding MySQL?

Por ejemplo, intente lo siguiente desde la línea de comando:

  mysqld --verbose --help | grep character-set 

Si no genera utf8, deberá configurar la salida en my.cnf:

 [mysqld] character-set-server=utf8 default-collation=utf8_unicode_ci [client] default-character-set=utf8 

Esta página tiene más información: