У меня есть простое приложение, которое использует запрос jjery ajax для отправки данных формы на сервер узлов, который, в свою очередь, отправляет стороннему api, используя модуль Request для узла js.Кодирование символов UTF8 с использованием узла Модуль запроса
Проблема, с которой я сталкиваюсь, заключается в том, что акцентированные (и другие подобные) символы не кодируются правильно, когда они достигают стороннего сервера. Например é записывается как Ã ©
Я довольно уверен, что это связано с настройками для запроса, как я получить те же результаты, когда я обхожу вызов AJAX.
Вот настройки, которые я использую:
HTML: настройки Ajax
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
JQuery:
type : 'POST',
url : '/api',
data : formData, // A json object
dataType : 'json',
ContentType : 'text/html; charset=utf-8'
настройки запроса модуля в узле (там ничего не происходит в виде данных между сообщением ajax и отправкой по запросу):
request.post({
url: "https://testurl.com/api/",
form: formData,
headers: {'Content-Type': 'application/json; charset=utf-8'}
} ...
Я прочитал различные решения SO, но не имел успеха, поэтому любые предложения были высоко оценены.
Вы пробовали установить «кодировку» - вариант запроса специально для «utf-8»? У вас есть тело-парсер в стеке приложений? (так ли formData фактически анализируется как JSON, прежде чем назначать его «запросу» или это еще строка?). Что происходит, когда вы 'console.log (formData)' на вашем Node-сервере? – Charminbear
Да, я пробовал «кодирование:« utf-8'', тот же результат. Im, использующий Body Parser: 'app.use (bodyParser.urlencoded ({extended: false}));' и 'app.use (bodyParser.json());' Когда я регистрирую форму Data перед отправкой запроса, я получаю то, что выглядит как объект javascript '{first_name: 'é'}' – gethyn1
Вы сказали, что получаете «те же результаты», когда обходите вызов ajax? Вы хотите напрямую отправить данные третьей стороне? Тогда это работает? – Charminbear