2010-05-03 5 views
0

J'ai un petit problème avec l'encodage. Les données en db sont correctes, quand je sélectionne les données en php c'est ok. Le problème survient lorsque j'obtiens les données et j'essaie de les imprimer dans le modèle, je reçois - Å port au lieu de Šport, etc.Django db encoding

Tout est réglé sur utf-8 - dans settings.py, balises meta dans le template, db table et j'ai même unicode méthode spécifiée pour le modèle, mais rien ne semble fonctionner. Je reçois assez sans espoir ici ...

Voici un code:

class Category_info(models.Model): 
    objtree_label_id = models.AutoField(primary_key = True) 
    node_id = models.IntegerField(unique = True) 
    language_id = models.IntegerField() 
    label = models.CharField(max_length = 255) 
    type_id = models.IntegerField() 

class Meta: 
    db_table = 'objtree_labels' 

def __unicode__(self): 
    return self.label 

J'ai même essayé avec retour u "% s" % self.label.

Voici la vue:

def categories_list(request): 
    categories_list = Category.objects.filter(parent_id = 1, status = 1) 
    paginator = Paginator(categories_list, 10) 

try: 
    page = int(request.GET.get('page', 1)) 
except ValueError: 
    page = 1 

try: 
    categories = paginator.page(page) 
except (EmptyPage, InvalidPage): 
    categories = paginator.page(paginator.num_pages) 

return render_to_response('categories_list.html', {'categories': categories}) 

Peut-être que je suis juste aveugle et/ou stupide, mais il travail juste ne. Donc toute aide est appréciée, merci d'avance.

Cordialement

Répondre

0

Ce n'est définitivement pas un problème de Django. Pour autant que je comprenne, vous essayez d'introspecter DB existant (je suppose que c'est MySQL car il ressemble à un problème commun après une mise à jour incorrecte de 4.x à 5.x). Vous devriez trouver les options de connexion nécessaires et les fournir via le paramètre DATABASE_OPTIONS. Essayez quelque chose comme ceci:

DATABASE_OPTIONS = { 
    'use_unicode': True, 
    'charset': 'utf8' 
} 
+0

J'ai essayé votre suggestion et malheureusement rien n'a changé. Oui, c'est une base de données existante (Mysql 5.x pour un temps looong maintenant), il n'a pas été amélioré cependant. Avant d'avoir changé les options de base de données pour ce que vous avez recommandé, j'ai utilisé - "init_command": "SET NAMES 'utf8'". Est-ce que cela pourrait être le problème? Mais d'un autre coté j'utilise un db existant ... – realshadow

+0

Encore une chose - quand je mettrai à jour les données dans la base de données via django, l'encodage est ok. – realshadow