django rest_framework中将json输出字符强制为utf-8编码

最近在和日本外包合作开发JIRA对接发布系统的版本单时,

遇到这个问题。

就是我们这边的输出浏览器显示为中文,而到了JIRA端就出现乱码。

查了文档,原来django rest_framework的默认json是没指定编码的,

需要随接收方的环境编码来显示。

于是,因为项目进度,我们对了强制编码操作。

查看rest framework的源代码:

class JSONRenderer(BaseRenderer):
    """
    Renderer which serializes to JSON.
    """

    media_type = 'application/json'
    format = 'json'
    encoder_class = encoders.JSONEncoder
    ensure_ascii = not api_settings.UNICODE_JSON
    compact = api_settings.COMPACT_JSON

    # We don't set a charset because JSON is a binary encoding,
    # that can be encoded as utf-8, utf-16 or utf-32.
    # See: http://www.ietf.org/rfc/rfc4627.txt
    # Also: http://lucumr.pocoo.org/2013/7/19/application-mimetypes-and-encodings/
    charset = None

  于是,我们重写了一个继承自JSONRenderer的Utf8JSONRenderer。然后,指定一个renderer_classes属性值即可。

from rest_framework.renderers import JSONRenderer

class Utf8JSONRenderer(JSONRenderer):
    charset = 'utf-8'

  

class DeployPoolViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.

    Additionally we also provide an extra `highlight` action.
    """
    serializer_class = DeployPoolSerializer
    authentication_classes = (TokenAuthentication,)
    renderer_classes = (Utf8JSONRenderer,)

  

时间: 2024-08-06 19:41:56

django rest_framework中将json输出字符强制为utf-8编码的相关文章

在JS中将JSON的字符串解析成JSON数据格式一般有两种方式

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用jQuery的each方法来遍历 用jQuery解析JSON数据的方法,作为jQuery异步请求的传输对象,jQuery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先

java-字符数组输出字符还是地址的问题

问题描述 字符数组输出字符还是地址的问题 为什么char[] c=new char[]{'a','b','c'};System.out.println(c);输出的不是地址,而是abc 解决方案 这是println方法重载.java打印输出System.out.println会调用输入参数的toString方法,输出内容是toString方法的返回值 println的参数分基本类型,String和Object类型 解决方案二: System.out 是一个 PrintStream 对象,你看看文

php-删除Json输出的引号

问题描述 删除Json输出的引号 删除json输出的双引号:[{"id":"1","nom":"Magasin Jardins 2","ville":"Paris","latlng":["36.85715,10.127245"]} latlng值:[36.85715,10.127245] 代码: $qry = "SELECT *FROM

用Jersey构建RESTful服务3--JAVA对象转成JSON输出

一. 总体说明 XML和JSON 是最为常用的数据交换格式.本例子演示如何将java对象,转成JSON输出. 二.流程 1.在上文项目中, 在"com.waylau.rest.resources.UserResource"中增加代码,代码如下: @GET @Path("/getUserJson") @Produces(MediaType.APPLICATION_JSON) public User getUserJson() { User user = new Use

什么时候用INT 10H 的0E 号功能输出字符,而不是用INT 21H的2号功能输出?

问题描述 什么时候用INT 10H 的0E 号功能输出字符,而不是用INT 21H的2号功能输出? 什么时候用INT 10H 的0E 号功能输出字符,而不是用INT 21H的2号功能输出? 解决方案 INT10h是BIOS功能调用.INT21H是DOS功能调用. 换句话说,即使没有操作系统在,INT10H仍可以使用,而只有DOS(WINDOWS)启动了之后,才能使用INT21H

查看Json输出的*最方便*的方法 (转)_实用技巧

不用耗费额外的精力随时查看Json输出       "不用耗费额外的精力"指的是:当需要查看Json输出时,只要转转眼球(可能至少还需要点两下鼠标,恐怕)就能很快找到想看的结果.      查看Json输出的方法很多,我们所能找的最接近这个目标的方案是"Fiddler2+JsonViewer插件+自定义Fiddler2过滤条件".想要查看Json输出时,只要先将Fiddler运行起来,然后在浏览器里正常操作Web页面,就可以在Fiddler里面看到截获的Json输出

python django 返回 return json遇到的问题

问题描述 python django 返回 return json遇到的问题 我用django模型查询了一条数据返回为json格式 android端解析遇到了一些问题 以下是服务器返回的json格式 用List才能解析 { "obj":[ { "failureDate":1459782820, "token":"iosjdsjfijioeru", "userId":123213213, "acco

输出字符缓冲区太小,无法包含解码后的字符,编码 Unicode (UTF-8) 的操作回退

问题描述 调试程序时,出现异常:输出字符缓冲区太小,无法包含解码后的字符,编码Unicode(UTF-8)的操作回退,一头雾水.代码如下FileStreamfsread=newFileStream("123.dat",FileMode.Open,FileAccess.Read);System.Text.Encodingencoding=System.Text.Encoding.UTF8;BinaryReaderbinReader=newBinaryReader(fsread,encod

php5.2 Json不能正确处理中文、GB编码的解决方法

 json_encode对中文的处理是有问题,不能处理GB编码,所有的GB编码都会替换成空字符,下面有个不错的解决方法,大家可以参考下 php5.2新增的json功能是非常受欢迎的,但是经过测试发现,  json_encode对中文的处理是有问题的,  1.不能处理GB编码,所有的GB编码都会替换成空字符.  2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.  代码如下: /*    为了能正确使用json,首先我们就应该在编码上采用ut