对于Web开发,我相对较新,而在前端方面则不那么熟悉。我在编码方面遇到了问题。
我正在将json数据发送到这样的服务器。
@app.route("/test")
def test():
data = json.dumps({"name": "홍길동", "id": "gildong1"}, ensure_ascii=False)
return render_template("testpage.html", data=data)
我在服务器端打印了数据,并打印出韩文字符。
但是每当我在javascript中收到这样的数据时:
var t_data = JSON.parse({{data}});
控制台中的结果如下:
var t_data = JSON.parse({"name": "홍길동", "id": "gildong1"});
更新
我对内容类型标题感到怀疑。通过调试器对其进行检查时,发现 Content-Type 标头为 u'text / html'。 因此,我试图像这样更改代码,但它仍会打印unicode:
@app.route("/test")
def test():
data = json.dumps({"name":"홍길동", "id": "gildong1"}, ensure_ascii=False).encode("utf8")
resp = make_response(render_template("TestPage.html", data=data))
resp.headers['Content-Type'] = 'text/html'
return resp
答案 0 :(得分:0)
您可以在服务器端将响应编码为
转换您的行
`data = json.dumps({"name": "홍길동", "id": "gildong1"}, ensure_ascii=False)`
到
`data = json.dumps({"name": "홍길동", "id": "gildong1"}, ensure_ascii=False).encode('utf8')`
OR
使用正则表达式在客户端处理此问题,以将所有出现的"
替换为"
var input = '{"name": "홍길동", "id": "gildong1"}'
input = input.replace(/(")/g,'"');
console.log(input); // {"name": "홍길동", "id": "gildong1"}
答案 1 :(得分:0)
您是否尝试过jsonify()
而不是json.dumps()
?
参见here和这段小代码
from flask import Flask, jsonify, json
app = Flask(__name__)
data = json.dumps({"name":"홍길동", "id": "gildong1"})
with app.app_context():
data2 = jsonify(name="홍길동", id= "gildong1")
print (data)
print(data2.get_json())
# output
# {"id": "gildong1", "name": "\ud64d\uae38\ub3d9"}
# {'id': 'gildong1', 'name': '홍길동'}