Показать сообщение отдельно
  #10 (permalink)  
Старый 03.06.2021, 00:21
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Действие нормальное но работает не так как ты ожидаешь.

Проблема не в nodeJS а в движке V8 и его реализации работы со строками.
В V8 символы в строке выравниваются по границе uint16_t для оптимизации работы со строками и кирилица во внутреннем представлении кодируется двумя байтами что бы работали сравнения регулярные выражение и прочее.

И в момент когда данные буфера (char*) преобразуются во внутренне представление движка (uint16_t*) они просто выравниваются по границе uint16_t для латиницы это нормально а для символов которые должны кодироваться двумя байтами это фатально и возникает ошибка с однобайтовыми национальными кодировками (например cp1251).

>> Такое вот сработало!
Потому что буфер не приводился к строке.
Ответить с цитированием