У меня проблема с отправкой символов UTF-8 в HTTP-запросе. В основном, когда я посылаю китайские / японские символы, текст становится гиббери sh. Текст прошел, и я получил ответ. То же самое происходит, если я вставил несколько смайликов. Я публикую это на каком-то веб-сайте.
Я использую библиотеку http по умолчанию и проверяю на соответствие этому тексту:
卯 鵜 は ご い ま ま す が
Ожидание:
卯 鵜 は ご ざ い ま す 100
Что показано на сайте:
ã¯éµœã¯ã ”ã – ã„ ã¾ã ™ ãŒ
Когда я отправляю тот же текст через веб-сайт, по-видимому, он кодирует символы utf8 перед отправкой на сервер. Не уверен, что мне придется сначала его кодировать, но потом я не знаю, как этого добиться.
Вот как это выглядит:
0A% u536F% u9D5C% u306F% u3054% u3056% u3044% u307E% u3059% u304C% 0A% 0A
Мой код:
Map<String, String> requestHeaders = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
};
Map<String, String> body = {
'message': '卯鵜はございますが',
'securitytoken': someSecurityToken,
'do':'updatepost'
};
var response = await http.post(someURL, headers: requestHeaders, body: body, encoding: Encoding.getByName("UTF-8"));