我正在使用flask.ext.rest构建一个api。我想要返回一些中文字符串。但是,每次收到"\u7231"
时(这是一个长度为8的字符串)。我该怎么做才能收到爱
?
from flask import Flask
from flask.ext.restful import reqparse, abort, Api, Resource
class E2C(Resource): # English to Chinglish
def get(self):
chinese = u'爱'
type(chinese) # unicode
return chinese
答案 0 :(得分:3)
get
方法应该返回一个Response实例。请点击此处docs。
代码应为:
from flask import Flask, make_response
from flask.ext.restful import reqparse, abort, Api, Resource
class E2C(Resource): # English to Chinglish
def get(self):
chinese = u'爱'
type(chinese) # unicode
return make_response(chinese)
答案 1 :(得分:1)
'\ u7231'确实是您寻找的角色,问题在于您使用任何设备呈现该角色。
因此,您的浏览器页面可能需要包含meta
标记来呈现UTF-8
<head>
<meta charset="UTF-8">
</head>
另一方面,cURL,给你一个快速谷歌,听起来它默认收到unicode char ok所以这只是你用来存储/显示结果的问题......你需要防止终端或文件系统或程序,或任何你正在使用的,将unicode char转换回它的数字表示。因此,如果将其保存到文件,则需要确保该文件获得utf-8字符编码;如果将其渲染到屏幕,则需要确保您的屏幕能够并且期望它。
答案 2 :(得分:0)
make_response 实际上可以解决问题。
我的情况略有不同,因为我有一个字典对象,尚未编码为utf-8 。所以我修改@Xing Shi的解决方案,以防有其他人遇到类似的问题。
def get(self):
return make_response(
dumps({"similar": "爱“, "similar_norm": ”this-thing"},
ensure_ascii=False).decode('utf-8'))