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

问题描述 投票:0回答:0

我正在使用由 Xtreamedia 源代码和数据库创建的数据库,大多数字段字符都有排序规则是 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中实现?

python mysql django utf-8 tastypie
© www.soinside.com 2019 - 2024. All rights reserved.