Попытавшись найти какое-то время, я считаю, что моя проблема не может быть напрямую связана с тем, что у других было. Я использую символы 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’);});
И символ “σ” становится “Ο” на сервере. Кто может помочь?
Таким образом, я решил base64.encode все строки на стороне клиента перед отправкой на сервер (nodejs/express4).
На самом деле нет необходимости. Вероятно, то, что вы делали неправильно с utf-8 json, также не так. Попробуйте отладить это.
заметил, что строки UTF8 не отображаются в журналах сервера должным образом.
Что они отображают? И на какой ОС ты? Вы смотрели журналы с шестнадцатеричным зрителем?
Для меня это выглядит как типичный “У меня проблема X, я решил свое решение на полпути, но я застрял с суб-проблемой Y”. Вернитесь к X и нарисуйте его правильным способом (без base64).