Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   XMLHttpRequest не видит русские буквы (https://javascript.ru/forum/misc/78138-xmlhttprequest-ne-vidit-russkie-bukvy.html)

dmitri22 31.07.2019 19:04

XMLHttpRequest не видит русские буквы
 
Подскажите, отправляю XMLHttpRequest и не видит русский текст. Скрипт добавляет текст в Гугл Таблицу
obj = {'B3':'Тест'};
var str = "m=put&a=";
var data = JSON.stringify(obj);
data = str+data;

var link = "https://script.google.com/macros/s/XXXXXXXXXXXXX/exec"; // линк на Google Script
const XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var xhr = XMLHttpRequest();
xhr.open('POST', link, false);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send(data);

А если отправить через браузер, то всё нормально
https://script.google.com/macros/s/XXXXXXXXXXXXXX/exec?m=put&a={"B3":"тест"}

Как побороть кодировку исходящего текста?

ksa 01.08.2019 07:58

Цитата:

Сообщение от dmitri22
отправляю XMLHttpRequest и не видит русский текст

Возможно эта статейка поможет...
https://habr.com/ru/post/17640/

dmitri22 01.08.2019 09:44

Цитата:

Сообщение от ksa (Сообщение 511041)
Возможно эта статейка поможет...
https://habr.com/ru/post/17640/

Спасибо большое за наводку. Покопавшись в интернете нашёл простой способ. Достаточно каждый параметр конвертировать так

data = encodeURIComponent(data);


В итоге код выглядит так
obj = {'B3':'Тест'};
var str = "m=put&a=";
var data = JSON.stringify(obj);
data = encodeURIComponent(data)
data = str+data;

var link = "https://script.google.com/macros/s/XXXXXXXXXXXXX/exec"; // линк на Google Script
const XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var xhr = XMLHttpRequest();
xhr.open('POST', link, false);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send(data);


Часовой пояс GMT +3, время: 16:38.