如何在tastypie中将latin1_swedish_ci解码为utf8_general_ci?

时间:2014-10-29 09:34:03

标签: python mysql django utf-8 tastypie

我正在使用Xtreamedia创建的数据库源代码和数据库大部分字段char有Collat​​ion是latin1_swedish_ci但是真的不知道它如何解码并且在php中使用头文件utf-8很好。

顺便说一句,我正在使用来自此数据库的 django tastypie 来建立api,我想保留数据库结构,并且在生成对客户端的响应时有问题要解码为utf-8。我已经写了一个CustomSerializer。

import json

from django.core.serializers.json import DjangoJSONEncoder
from tastypie.serializers import Serializer


class CustomJSONSerializer(Serializer):
    def to_json(self, data, options=None):
        options = options or {}

        data = self.to_simple(data, options)
        if data.get('objects'):
            res = []
            for i in data['objects']:
                if i.get('name_vn'):
                    k = i
                    try:
                        k['name_vn'] = i['name_vn'].encode('utf8').decode('latin1', errors='ignore')
                    except:
                        print i
                    res.append(k)
            data['object'] = res
        return json.dumps(data, cls=DjangoJSONEncoder, sort_keys=True)

但它有些解码不好但有些不能

这是mysql连接器中的任何技巧吗? 因为当我转换像http://www.bothernomore.com/2008/12/16/character-encoding-hell/这样的字段时 它运作良好。

ALTER TABLE `name` MODIFY COLUMN `title` VARCHAR(255) CHARACTER SET binary;
ALTER TABLE `name` MODIFY COLUMN `title` VARCHAR(255) CHARACTER SET utf8;

我认为是转换为utf-8的方法问题是如何在python中实现?

提前感谢!

0 个答案:

没有答案