encodeURIComponent и тип содержимого: 'charset: utf-8' - PullRequest
1 голос
/ 31 января 2020

Я создаю приложение react и использую Node (с Express) в качестве прокси-сервера. Я отправляю данные из приложения реагирования на узел- express, затем в Узле я использую эти данные для формирования URI и отправки запросов на другой сервер.

Мой вопрос такой: не должно быть 'content-type': 'charset: utf-8' когда я отправляю данные, включая греческие символы, в Node? Например, я делаю почтовый запрос (используя Fetch) на узел и отправляю код «ΠΕ0001», используя заголовок, который я уже упоминал. Почему я получаю сообщение об ошибке «Путь содержит неэкранированные символы»? Когда я использую encodeURIComponent, это работает, но почему «charset: utf-8» недостаточно?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Просто установить заголовок 'content-type': 'charset: utf-8' недостаточно. По сути, с этим заголовком вы просто сообщаете серверу (в данном случае Node), что отправляемые вами данные имеют формат utf-8, чего в любом случае следует ожидать.

Однако ваша строка в UTF -16, потому что букве Π требуется два байта для представления. .

Подробнее о кодировке символов можно прочитать здесь .

Следовательно, сначала вам нужно encodeURIComponent. В нашем случае Π тогда представляется как %CE%A0, которые являются представлениями его байтов в UTF-8.

0 голосов
/ 03 февраля 2020
  1. используйте этот метод JSON .stringify () для преобразования данных в json объект.
  2. , затем передайте этот json объект в encodeURIComponent ()
  3. , затем вызовите метод выборки
...