noseglid / atom-build

:hammer: Build your project directly from the Atom editor
https://atom.io/packages/build
MIT License
248 stars 97 forks source link

Unreadable error messages in console by non-Romanized text encoding locales #531

Open VadimDor opened 6 years ago

VadimDor commented 6 years ago

Error messages in console are not readable at some locales with non-Romanized text encoding. E.g. by russian locale on Windows we have following for "some-build-command not found" error: "some-build-command" �� ���� ����७��� ��� ���譥� ��������, �ᯮ��塞�� �ணࠬ��� ��� ������ 䠩���. instead of "some-build-command" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

The solution were to decode the message first in module sb-exec file index.js: reject(new Error((new TextDecoder('IBM866')).decode(data.stderr[0]).trim())); istead of (e.g. line 41) reject(new Error(data.stderr.join('').trim()));

The same probably is valid also for stdout (e.g. line 59 there).

To set valid encoding for TextDecoder() is either up to user and should be added to configuration of the package, or some package to guess encoding from buffer probably could be used (e.g. this one https://github.com/sonicdoe/detect-character-encoding )