Рельсы как реагировать JSON в ISO-8859-1 - PullRequest
1 голос
/ 05 апреля 2020

Я хочу, чтобы мое приложение отвечало телом utf-8 и iso-8859-1, закодированным для запросов с Accept-Charset = "utf-8" или Accept-Charset = "iso-8859-1". Тело ответа всегда JSON.

В моем контроллере, когда я делаю это,

render(json: data, status: :created)

Это ответ с Content-Type = "application / json; charset = utf-8" а также.

Но как сделать ответ с телом iso-8859-1, закодированным, когда запрос Accept-Charset = "iso-8859-1"?

1 Ответ

1 голос
/ 05 апреля 2020

Чтобы сделать это, вы можете использовать метод force_encoding и encoding, например

data = {'name'=>'raghav'}.to_json
data.encoding  #This would return what encoding the value as #<Encoding:UTF-8>
new_data = data.force_encoding('ISO-8859-1') #This would force the encoding
new_data.encoding  #<Encoding:ISO-8859-1>

Также для этого в конкретном случае c вы всегда можете прочитать request.headers ha sh для определения кодировки.

Существует также другой метод, называемый encode, основным отличием которого является force_encoding, изменяющий способ чтения строки из байтов, а encode изменяет способ записи строки без изменения вывода (если возможно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...