Вань ты чего то уже заговариваться начал. При выгрузке реестра в текст не utf8, а UTF16LE. utf8 более всратая кодировка. В ней нельзя точно сказать сколько байтов займет нужный символ. от 1 до 6. А utf16 и utf32 имеют фиксированную ширину. Для ASCII довольно избыточно иметь 4 байта на символ, как и для языков тех стран в которых уже были компутеры, потому поначалу и сделали wchar_t в 2 байта. Память экономили.
alt+1 = ☺ ps: пожертвуй каким-то символом и замени его на нужный. Я правда, не занимался этим вопросом, хз как сделать. Или с раскладками поиграйся, вплоть до сделать свою.
Да, я помню как ты от xml пылал аки доменная печь! То да, два лишних символа на поле жутчайший перерасход байтов... Но, я не понимаю, почему оно тебя волнует. У меня один софт прайсы перемалывает, то там тебе и xml, json, xls, xlsx и да, был csv но его выкинули нафиг так как в описании товаров попадаются и кавычки и запятые и еще фиг знает что от чего тот csv и вручную фиг распарсишь.
Правильный CSV, с escape символами надо уметь генерить и парсить. Если уметь - остальные форматы (кроме бинарника) по экономности выгрузки таблиц ему и в подметки не годятся.
ничего не заговариваюсь. я и говорю, что из реестра выгружается в чём-то двухбайтном. не уверен - wchar_t там или utf16le. просто раньше удивлялся, не особо акцентируясь. а теперь вот понятно стало с этими разъяснениями про то что раньше появилось - utf8 или wchar_t
Ты забыл от чего я "пылал". Там был апловский kext, написатый приблизительно в таком xml: <kext><param>PARAM1</param><value>VAL1</value> <param>PARAM2</param><value>VAL2</value> <param>PARAM3</param><value>VAL3</value> </kext> и менять местами теги, естественно, нельзя было. не удивлюсь, что там и пробелы лишние - тоже низзя. Я разорялся на предмет такого уёбищного использования возможностей XML - в стиле обычного текстового конфига, но нахера-то в xml-подобной обёртке. но самим аппловцам и программерам (rust'у например) было пофигу - "они просто юзали утилиту/либу - читающую и записывающую в kext". "они просто микроскопом забивали гвозди". а чо? вполне удобно же. А как ты в cvs будет сохранять поле, где нужно хранить кавычку? куотировать их все? а если там текст-диалог из какого-нить произведения? где сплошь кавычки? а вот "разделитель полей" вставлять в текстовое поле - не надо. или в ну очень редких случаях можно было б и закуотировать. вооо, об этом и говорю. а был бы спец.символ "разделитель полей" - очень много где стало бы жить сииильно проще.
Именно, и эскейпить саму кавычку в значениях. В качестве кавычки можно использовать другой символ. Малоиспользуемый. Если надо что-то необычное, я обычно использую символ |
value1☺value2☺bla "bla|" bla☺12345 value1☺value2☺bla "bla bla☺12345 value1☺value2"☺bla bla bla☺12345 нехай потом получатель иппется.
Парсить кастомные форматы руками - это интересное извращение. А программе пофигу какие там символы как делиметеры заданы. value1,value2,"bla ""bla|"" bla",12345 value1,value2,"bla ""bla bla",12345 value1,"value2""",bla bla bla,12345 Все прекрасно открывается экселем. Даже вот такое извращение: Code: value1,value2,"bla ""bla|"", bla",12345 value1,value2,"bla ""bla bla",12345 value1,"value2""",bla bla bla,12345 А теперь выгрузи это все в xml,json или что еще и сравним размеры. Не, CSV по объемам только бинарные форматы могут забороть.
Та кто ж спорит, что хороший формат если правильно записать. Хотя по инету, предпочитают гонять xml или json иногда пожатый gzip'ом.
utf8 потому и называется utf8 потому что кодируется в один байт. А Utf16 в два. Поэтому ты видишь "пробелы". А в utf8 для кириллицы будешь видеть кракозябры без пробелов. РІРѕС‚ такая РєРѕРґРёСЂРѕРІРєР°
UTF16 мне больше нравится тем что его и случайно не выйдет спутать с ASCII. Особенно если это UCS-2, где нету извращений с 4 байтовыми символами, в связи с чем размер текста и в символах и в байтах заранее известен. Но мечты мечты... (утирает скупую слезу по ламповому Win-1251).
" | " уже используется как pipe/пайпа. в ячейках таблицы можно располагать и шелловские команды а вот располагать в ячейках символы, обозначающие "разделитель полей" - вот не надо. по рукам бить. только в заквоченном виде. как вот только отображать "разделитель полей" в, например, браузере - не знаю. ну хоть бы и палками. только при копирвании - чтобы копировался не пайпа, а именно "разделитель полей/колонок".
У нас с внешними аудиторами соглашение использовать разделителем символ Æ Пока нигде ни с чем не пересеклось (за много лет уже). До этого разные символы периодически встречались в наименованиях чего-либо и ломали обмен.
Неправильный это подход, рассчитывать на то что некий символ прям никогда не попадется. Ненадежный. Но дело ваше, да.
Зато простой Они ни с чем кроме плоских таблиц не работают, хорошо хоть не в эксель грузят, MS Access используют Ну а мне проще из сиквела сохранить с настроенным разделителем да и всё.
я в линухе символ "bell" использую иногда который 0x07 https://ru.wikipedia.org/wiki/Управляющие_символы сколько лет оно уже нахрен не нужно? лет 30? 40? но, блять, надо сначала UTF-256 придумать и в стандарт внести, а потом уже озаботиться о нужности всякого говна мамонта в ASCII
мне начальничек сказанул как-то раз в дискуссионном запале - "а вот ты обрабатываешь список файлов по-строчно, а это неправильно! а вдруг мне захочется имя файла записать с символом \n ?" захотелось въебать. тому долбоёбу, кто повадится сделать такое и, сссука, сменить ему имя и фамилию в паспорте на слова, содержащие null, который \0 в ascii. чтоп, пидарасу, жилось краще... ну натуральное же вредительство!