Комментарии 21
а надо-то было — всего одну строку в документации посмотреть.
https://nodejs.org/dist/latest-v6.x/docs/api/http.html#http_response_write_chunk_encoding_callback
https://nodejs.org/dist/latest-v6.x/docs/api/http.html#http_response_write_chunk_encoding_callback
By default the encoding is 'utf8'
+10
Ну да, обычная история. А воплей-то сразу сколько, какая нода плохая, в utf работает!
+10
если бы ты подписал договор, в котором мелким шрифтом нечно написано… тоже бы небось
вопли потому, что вот такие умолчания — это не тру.
Ладно бы заставили меня каждый раз указывать в явном виде кодировку, раз она все равно будет работать.
Тогда я бы знал, что она работает и ее нужно поменять
вопли потому, что вот такие умолчания — это не тру.
Ладно бы заставили меня каждый раз указывать в явном виде кодировку, раз она все равно будет работать.
Тогда я бы знал, что она работает и ее нужно поменять
0
История стандартная, но и автору спасибо, кому-нибудь пригодится. Единственно — это статься скорее для stackoverflow, а не для хабра
0
совет читать документацию понятный, но здравый смысл никто не отменял!
и это ОЧЕНЬ НЕОЧЕВИДНО, что мои, мои данные — кто-то там в промежутке перекодирует
зло, натурально
и это ОЧЕНЬ НЕОЧЕВИДНО, что мои, мои данные — кто-то там в промежутке перекодирует
зло, натурально
0
здравый смысл как раз состоит в том, чтобы обратиться к документации в самом начале, а не бездумно копипастить с просторов и потом безуспешно искать ответы на стековерфлоу…
+1
нуу… я не бездумно, но первое по времени сильно быстрее. И результат быстро, хоть и проблемы есть.
но вы сами лично считаете нормальным такие умолчания?
мне кажется, такие умолчания = зло
но вы сами лично считаете нормальным такие умолчания?
мне кажется, такие умолчания = зло
0
умолчания во фреймворках/либах/сдк подразумевают принятие и следование разработчиком (пользователем этих фреймворков/либ/сдк) некоторых конвенций.
Когда он даже не в курсе этого — «ой, я всё» :)
Когда он даже не в курсе этого — «ой, я всё» :)
0
это как /в договоре мелким шрифтом/
есть очевидные вещи = я кодировку и перекодирование не заказывал использовать, вот и не надо.
А мне в ответ ссылки на доки ) да, формально вы правы, но это дико неправильно так делать
есть очевидные вещи = я кодировку и перекодирование не заказывал использовать, вот и не надо.
А мне в ответ ссылки на доки ) да, формально вы правы, но это дико неправильно так делать
0
а по мне так здравый смысл состоит не в изучении доков годами, а чтобы сделал и работало.
-4
Достаточно потратить пару часов на вдумчивое чтение доков, после чего, чтобы ты не сделал оно будет работать.
Это очень большое заблуждение, которое с опытом исчезает. Проще, дешевле и быстрее 1 раз вычитать какую-нибудь 100 страничную спецификацию потратив на нее рабочий день и не сталкиваться в будущем с проблемами практически никогда, чем постоянно гуглить стековерфлов и бегло глядеть в доки и костылить годами.
нуу… я не бездумно, но первое по времени сильно быстрее. И результат быстро, хоть и проблемы есть.
Это очень большое заблуждение, которое с опытом исчезает. Проще, дешевле и быстрее 1 раз вычитать какую-нибудь 100 страничную спецификацию потратив на нее рабочий день и не сталкиваться в будущем с проблемами практически никогда, чем постоянно гуглить стековерфлов и бегло глядеть в доки и костылить годами.
+3
Мне повезло с преподавателем, и он на первом занятии сказал, что в js дефолтная кодировка utf-8, в других яп она может быть другой. И в курсе по ноде я тоже это слышал… Но спасибо, что заострили внимание, т.к. мелочей не бывает и на таких моментах иногда уходит очень много времени.
-1
Есть такая парадигма ххвп-программирования. Она, конечно, эффективна — быстро, гибко, все дела. Но до первого эпикфейла с намертво лежащим продом, который и поднять-то уже нереально, ибо сделано все не по докам и спекам, а чтобы «сделал и работало».
0
Стандартная проблема для человека, который не читает доки...
+2
Простое правило дабы на такое не натыкаться. Все функции работы с сетью/файлами/прочим по умолчанию выдают строку (не самое лучшее решение, но так получилось). Бинарные данные должны быть в буфере т.к. javascript не может их нормально представлять в строке (много срача, гуглится). Потому первым делом, если нужно получить бинарные данные, то сразу лезть в доку и смотреть какой педалью это включается.
Некоторые библиотеки идут дальше и выдают буфер сразу (и иногда даже не имеют опции кодировки), который нужно еще преобразовать в строку через toString. Это чуть более интуитивно, но менее производительно т.к. больше памяти и лишнее копирование. Но да, так проще программисту. Ты сначала выстреливаешь себе в ногу (если хочешь строку), и сразу фиксишь, не лазя в документацию.
API node.js сделано всё-таки с упором на производительность, потому вот так.
Некоторые библиотеки идут дальше и выдают буфер сразу (и иногда даже не имеют опции кодировки), который нужно еще преобразовать в строку через toString. Это чуть более интуитивно, но менее производительно т.к. больше памяти и лишнее копирование. Но да, так проще программисту. Ты сначала выстреливаешь себе в ногу (если хочешь строку), и сразу фиксишь, не лазя в документацию.
API node.js сделано всё-таки с упором на производительность, потому вот так.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
node.js бьет бинарные данные при работе по http из-за кодировки по умолчанию — лечим и ненавидим