Как я могу указать кодировку строки, которая поступает со стороны сервера? - PullRequest
0 голосов
/ 04 ноября 2018

Я относительно новичок в веб-разработке и еще менее знаком, когда дело доходит до внешнего интерфейса. У меня проблема с кодировкой.

  • среда: Python 2.7, Flask

Я отправляю данные 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

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вы пробовали jsonify() вместо json.dumps()? Смотрите здесь и этот маленький кусочек кода

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': '홍길동'}
0 голосов
/ 04 ноября 2018

Вы можете закодировать ответ на стороне сервера в

конвертируй свою линию

`data = json.dumps({"name": "홍길동", "id": "gildong1"}, ensure_ascii=False)` 

до

`data = json.dumps({"name": "홍길동", "id": "gildong1"}, ensure_ascii=False).encode('utf8')`

ИЛИ

Обработайте это на стороне клиента с помощью регулярных выражений, чтобы заменить все вхождения от " до "

var input = '{"name": "홍길동", "id": "gildong1"}'
input = input.replace(/(")/g,'"');
console.log(input); // {"name": "홍길동", "id": "gildong1"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...