Node.js неверное представление строки UTF8, хотя байт-коды кажутся правильными

Вопрос:

Попытавшись найти какое-то время, я считаю, что моя проблема не может быть напрямую связана с тем, что у других было. Я использую символы unicode в формах (используя angularjs для клиентской стороны) и заметил, что строки UTF8 не отображались на журналах сервера должным образом. Таким образом, я решил base64.encode все строки на стороне клиента перед отправкой на сервер (nodejs/express4). Данные JSON поступают правильно на сервер, но когда я пытаюсь преобразовать его из base64 в UTF8, используя буфер, я получаю разные символы. Я тестировал строки на http://www.base64decode.org/, и они отлично декодируют. Может ли кто-нибудь предположить, что я могу делать неправильно?

Пример char: σ, base64 = “z4M =”. На сервере эта строка декодирует все значения JSON до UTF8:

Object.keys(req.body).forEach(function (key) {req.body [key] = new Buffer (req.body [key], ‘base64’). ToString (‘utf8’);});

И символ “σ” становится “Ο” на сервере. Кто может помочь?

Ответ №1

Таким образом, я решил base64.encode все строки на стороне клиента перед отправкой на сервер (nodejs/express4).

На самом деле нет необходимости. Вероятно, то, что вы делали неправильно с utf-8 json, также не так. Попробуйте отладить это.

заметил, что строки UTF8 не отображаются в журналах сервера должным образом.

Что они отображают? И на какой ОС ты? Вы смотрели журналы с шестнадцатеричным зрителем?

Для меня это выглядит как типичный “У меня проблема X, я решил свое решение на полпути, но я застрял с суб-проблемой Y”. Вернитесь к X и нарисуйте его правильным способом (без base64).

Оцените статью
TechArks.Ru
Добавить комментарий