python flask кодирование данных - PullRequest
0 голосов
/ 07 марта 2020

У меня есть метод flask, который будет принимать данные постов и делать запросы, код, подобный этому

@app.route('/register/search', methods=['POST'])
@cross_origin(origin='*')
def register_search():
    json_data = request.get_json()
    param = {}
    if 'startrow' in request.json:
        param['startrow'] = request.json['startrow']
    if 'endrow' in request.json:
        param['endrow'] = request.json['endrow']
    if 'company_name' in request.json:
        param['company_name'] = request.json['company_name']

Я использую angular, чтобы сделать запрос, а company_name - это 2 китайских символа, но param [ 'company_name'] получить строку вроде этой '\ xe4 \ xb8 \ xad \ xe6 \ x96 \ x87', как я могу получить оригинальный китайский символ из param ['company_name']

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Я думаю, что у меня есть решение для этого:

Неверно Я получил опубликованную проблему, если я использую строку concat для запроса, подобного этому:

sql = "select * from company where name like " + param['company_name']
cursor.execute(sql)

Исправить

sql = "select * from company where name like %s"
cursor.execute(sql,("%"+param['company_name']+"%"))

использовать подготовленную оценку, она будет работать

Надеюсь, это поможет

0 голосов
/ 07 марта 2020

'\ xe4 \ xb8 \ xad \ xe6 \ x96 \ x87` выглядит как кодировка utf8 в юникоде. Попробуйте это преобразовать обратно в Unicode:

param['company_name'] = request.json['company_name'].decode('utf-8')
...