Автор Тема: Ubuntu 20.04 изчезващи файлове и папки от home директорият  (Прочетена 6330 пъти)

spec1a

  • Напреднали
  • *****
  • Публикации: 3852
    • Профил
   Не е само cp1251/win1251 при бозата .
Има и т.нар, "ДОС кирилица".
И двете са 8 битови,разликата е,че "ДОС кирилица" -та е с кодове от
128 до 191, а cp1251/win1251 - от 192 до 255.
   В зависимост от един куп фактори,вместо кирилица понякога се вижда
"псевдографика",навремето съм брал ядове с това,но беше отдавна ...
Е,сега бих се справил с това за минути.
« Последна редакция: May 28, 2021, 09:28 от spec1a »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Има и т.нар, "ДОС кирилица".

Всеки път се чудя кои е стандарта или на коя code page мяза най-много. Май е cp866 ??? или пък някакъв IBM code page май беше.

Имам една екзотична книжка на матричен принтер и там най отзад са само такива таблици с екзотични кодировки. Но си спомням, че на една от тях съвпадаше.

Имаше и две досовки програмки за кирилизация CYR и BDS. Те освен че кирилизираха клавитурата, кирилизираха екрана. Та въпросната
"ДОС кирилица" кодировка е тази която използват. И все си мисля, че имаше някаква малка разлика между програмките CYR и BDS. Може би в "псевдографиката"?
« Последна редакция: May 28, 2021, 10:18 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
В ДОС нещата са доста на ниско ниво. Там се работи на ниво растеризиране. Фактически не просто казваш, като се натисне това копче да се появи този знак, ами и какъв точно е този знак. Един вид пренаписваш част от самата операционна система.

Кирилизаторите за ДОС са поне пет-шест. Толкова ми беше дал DDantgwyn (странно за втори път тази седмица го споменавам). А може да има и още някоя. Две бяха най-масовите. И до днес на страницата на НАП може да бъде открит (стар!) софтуер за ДОС, който съдържа едната. Даже не знам колко е законно да го съдържа, защото това се плащаше и беше дело на частни производители. Друг е въпроса, че не познавам някой, който да е платил.

Този софтуер за ДОС все още се ползва понякога и ще се ползва в следващите двадесетина години. Все по-рядко е, но се налага.

По принцип не съм го питал за разрешение и вероятно няма да е доволен, че го споменавам. Но, колкото и да е скромен Ремо, той заслужава дълбока благодарност и похвала от мен. На последната ми месторабота, той изцяло доброволно ми помогна да решавам големи проблеми с точно една такава досовска история. Специалист от Америка помагаше на една мижитурка-писарушка от малко градче на края на географията. Това се случи само преди три години. Излишно е да споменавам, че с тогавашните ми доходи, по никакъв начин нямаше да мога да си платя за помощ на професионалист от подобен ранг. Нещо повече, дори работодателя ми тогава да беше обърнал внимание на проблемите ми, той също нямаше да може да си го позволи.

=*=

Ако говорим за Мик 86, то кодировката от която произлиза, наистина е IBM 866. Но тук въпроса всъщност е доста комплициран. Пак по обяснения от Ремо, Мик не се е появил изведнъж. Имал е версии и варианти преди да стигне до окончателния си вид от средата на деветдесетте. Съответно са се създали още куп проблеми.

Но за крайния вариант да кажа. За друг работодател от единадесета година ми се наложи да напиша прост макрос за M$ Word. Имахме ежедневна справка, вадена от стара система, но нямахме възможност да печатаме под ДОС и изобщо да инсталираме, какво да е на компютрите. Беше си корпоративна мрежа. Съответно единствено можехме да отваряме документчето в М$ Word да го оправим на външен вид и да го отпечатаме. Съответно на ръка трябваше да заменяме нечетимите букви.

За тази цел, изцяло ръчно трябваше да намеря, коя буква на кой знак съответства. Не бях успял да намеря някаква документация. И след като приключих, разбрах, какво са направили. Подменили са един ред със знаци от кодировката с малки, кирилски букви. Може би доста хора помнят, че съвсем в началото (още преди ДОС) всички букви бяха главни.
« Последна редакция: May 28, 2021, 10:55 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Лично аз щях да обработя всички накуп с iconv, както каза Ремо. Ако те е страх от iconv, то може да работиш върху копия. Но определено няма по-бърз начин, а поне аз не съм чувал iconv да се е дънил някога.


Внимателно с този iconv. Имам съмнения. Ползвал съм го от само от PHP страната, което е обръщане към системното iconv() и забелязах, че като срещне непознат символ (или развален utf8 символ) прекъсва по средата - не го скипва и не продължава.
Ако конвентираш от 1251->utf8 теоретично не може да има проблеми, но ако е utf8->1251 ето какво съм си записал.

// !!! не може да се използва iconv('UTF-8', 'windows-1251', $q_string); защото ако види някой знак който iconv() не
// разбира - тя прекъсва стринга до там!!! и се губи информация. iconv() има за тази цел опции //IGNORE но тя работи
// чак при php 5.4.0 Освен това няма опция с какъв символ да се замени '?' неопознатият знак.
//
// !!! Затова са ползва mb_convert_encoding()
//
// Забележи ! посоката на кодирането, е различна при двете функции:
//      utf8 ----> 1251
// iconv('UTF-8', 'windows-1251', $q_string)
//
//               1251 <---- utf8
// mb_convert_encoding($q_string, 'Windows-1251', 'UTF-8')


Пак повртарям това съм го забелязал от към php страната. В конзолното може да го има а може да го няма този проблем. Но трябва да се провери. Нали не искате заради един 'грешен' символ в средата да се отзовете с файл наполовина.




« Последна редакция: May 28, 2021, 11:10 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Значи досовската кодировка въобще НЕ е cp866 а е MIK_(character_set)

Много са различни р,с..ю,я са на друго място.
Чекай с iconv() да я конвентираш. Трябва да си пишеш MIK кодова страница.
Активен

Perl - the only language that looks the same before and after encryption.

spec1a

  • Напреднали
  • *****
  • Публикации: 3852
    • Профил
   Един съвет,който,надявам се,да е полезен.
По-добре е да се напише програма на С/С++ която просто отваря
файл,чете байт по байт,променя каквото трябва и после записва в
друг файл (или в някой поток ,или директно в стринг).
   Разбира се,може това да се направи и на PHP.
След като има проблеми с разните там iconv(),това е решение.
Да,трябва да се напише повечко код,но резултата ще е 100% гарантиран.
И няма да има грешки.

   Като имам повече време,ще спретна една примерна програмка.
« Последна редакция: May 28, 2021, 13:08 от spec1a »
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Значи досовската кодировка въобще НЕ е cp866  а е MIK_(character_set)

Промених в цитата на мнението ти 866 да го направя на връзка, която е дадена пак от теб.

За времето, което говоря тези страници във Википедия (или поне за Мик) не съществуваха. По принцип може да се провери. Сега погледнах историята, още две и шеста е създадена тази за Мик. Имало я е. Не мога да се сетя дали не е била толкова подробна или аз някак си не съм успял тогава да стигна до нея, въпреки, че все още съм ползвал Гългъл. Все тая.

А и мен са ме интересували само букви.

Сега като се сложат една до друга, ясно се виждат разликите. Реда означен с „Е“ е отишъл на мястото на „Б“, а трите реда с псевдографични знаци са сведени до два. Това е позволило последните два реда единия напълно да се заменят разни ударени букви с гръцки такива (ползвани у нас в математиката), а на другия да се сложат знаци широко ползвани у нас като например „номер“ (№).

Да така погледната почти половината знаци са подменени в крайния вариант, но все така е видна връзката с оригиналната cp866.

доп.
===

Уф, много съм тъп. Не казваш, че Мик не е версия на 866, а уточняваш, че у нас ДОС преимуществено е нагласян на Мик. Чукча писател :(
« Последна редакция: May 28, 2021, 12:32 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Народното творчество тогава много добре си е свършило работата с МИК. Жалко, че не е влязла в никакви стандарти.

Сетили са се да сложат Э, ы, №, най-често използваните гръчки букви, махнали са ненужните графични символи. Много хубава таблица.

А виж за € евро знака не са се сетили :D Трябвало е да се допитат до Ванга. Обаче майкрософт са се сетили и са го турили в 1251 :D

« Последна редакция: May 28, 2021, 13:14 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

remotexx

  • Напреднали
  • *****
  • Публикации: 3210
    • Профил
@Спецназа: задочният ни спор с Гогата беше колко от ползваните от Уин/М$ кодировки поддържащи кирилица са изобретение на М$, а не колко общо кодироки с кирилица поддържа ОС включвайки и разните му там от IBM, ISO etc.

а сега към колегата
 - (не съм експерт но) на Гедит (след отваряне - 1251) търси опция в SaveAs (with NEW encoding)
Re: Change Encoding of a Text File
    Open the file in Gedit and select 'Save As' from the file menu. You can save it in different character encoding from 'Character Coding' menu.

- ако някой ти предлага програма на С/С++ внимавай - най-вероятно ще ти даде изпълним файл който може и да ти криптира целия диск и после да ти иска откуп  ???

- а защо С ++ програмка а не напр. ПХП или Питон ще спести някоко стотин реда код - даже ще се хване на едно екранче.. аз затова много си тача Щирлиц-а там даже не трябва и да се пише код (върви и под WINE)

- късметлия е колегата.. явно никой не обърна внимание но той каза че като ги отвори с 1251 и всичко му се чете значи са 1251, аз отворих дума за другите кодировки ако.. случайно има некой файл "конвертиран" от ДОС кирлица щото па те там "старите майстори" слагаха и едни криви шрифтове (завъшващи на xxCyr) ама да не подфащаме  сега и темата за шрифтовете (написахме вече Cyr - време е да приключим и да си ходим както се казва в народното творчество)
« Последна редакция: May 28, 2021, 20:41 от remotexx »
Активен

spec1a

  • Напреднали
  • *****
  • Публикации: 3852
    • Профил
@Спецназа: задочният ни спор с Гогата беше колко от ползваните от Уин/М$ кодировки поддържащи кирилица са изобретение на М$, а не колко общо кодироки с кирилица поддържа ОС включвайки и разните му там от IBM, ISO etc.

а сега към колегата
 - (не съм експерт но) на Гедит (след отваряне - 1251) търси опция в SaveAs (with NEW encoding)
Re: Change Encoding of a Text File
    Open the file in Gedit and select 'Save As' from the file menu. You can save it in different character encoding from 'Character Coding' menu.

- ако някой ти предлага програма на С/С++ внимавай - най-вероятно ще ти даде изпълним файл който може и да ти криптира целия диск и после да ти иска откуп  ???

- а защо С ++ програмка а не напр. ПХП или Питон ще спести някоко стотин реда код - даже ще се хване на едно екранче.. аз затова много си тача Щирлиц-а там даже не трябва и да се пише код (върви и под WINE)
...

   Споменаването на  "ДОС кирилица" -та не е заяждане от моя страна,
просто е важно; ако някой се сблъска с такъв "енкодинг", да знае
за какво иде реч, и как да работи с него.

---

   Какви изпълними файлове, какъв откуп !?!

Ето примерна програма,която конвертира  "ДОС кирилица"  към 1251

//------------------------------------- convert.c-----------------------------------
 #include <stdio.h>
#include <stdlib.h>

void main(){
  FILE *f,*f2; int i,sz; unsigned char *ms,*uk;

  f=fopen("dos.txt","r");
  if (f==NULL){ printf("error"); exit(0); }
  fseek(f, 0L, SEEK_END); sz = ftell(f);
  printf("size: %d",sz);
  ms=malloc(sz);
  fseek(f, 0, SEEK_SET);
  fread(ms,sz,1,f); fclose(f);

  uk=ms;
  for (i=0;i<sz;i++){
    if (*uk>(unsigned char)127 && *uk<(unsigned char)192) *uk=*uk+64;
    uk++;
  }

  f2=fopen("win.txt","w");
  fwrite(ms,sz,1,f2); fclose(f2);
}
//----------------------------------------------------------------------------------------

Компилиране:
gcc -o convert convert.c

Програмата отваря "dos.txt" (ако не съществува,извежда грешка).
Заделя памет (malloc),чете файла (fread). После обхожда масива
и конвертира символите, създава "win.txt" и записва в него.
Разбира се,програмата е съвсем семпла, и само илюстрира принципа.

Къде виждаш криптиране на диск или на файлове ?
И къде са някокостотинте реда код ?

И защо на С/С++ ли ?
Ами защото това са сериозни езици, все пак операционните с-ми се
пишат на  С/С++ и асемблер,няма как за тази цел да се използват
PHP , Python и други подобни.
Това,което може да се направи на PHP и Python, може да се направи на
С/С++, обратното не е вярно.








П.С. Днес съм в настроение,иначе бих написал, че
PHP,Perl,Python(нищо лично,4кб),basic,ruby и особено javascript са пародии
на езици за програмиране,както си е всъщност.
Разбира се има и още,но горните са най-известни ...
« Последна редакция: May 30, 2021, 10:14 от spec1a »
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Попрегледах цялата тема и препоръчвам да не се ползва notepadqq.
Ако все пак желанието за това е голямо... От всичко изглежда, че този редактор при опит за отваряне на файл, преглежда цялата папка. Та, какво би направил, ако не може да разчете имената на файловете коректно? Това си знаят само писачите му.
Може да се пробва да се зададат имената поне в utf-8, ако са на някаква друга кодировка. А, ако пък поради някаква причина се пробва да отваря файловете... Е, не бих ползвал такова нещо.

И като цяло се чудя, защо толкова години след налагането на utf'8 почти навсякъде, се налага да се говори за други кодировки.

@remotexx, изобщо не се засягам на тази тема. Надявам се, че някой ден ще разбера причините, поради които мислиш така
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

dimitar_trsw

  • Участници
  • ***
  • Публикации: 6
    • Профил
Още веднъж благодаря на всички които се отзоваха
Изненадан съм , не съм очаквал толкова съпорт   :)
Благодаря
Активен

jet

  • Напреднали
  • *****
  • Публикации: 3472
  • Distribution: debian
  • Window Manager: kde
    • Профил
Спеца:
https://medium.com/nerd-for-tech/linus-torvalds-c-is-really-a-terrible-language-2248b839bee3

Допотопния език С++ става само за гърмящи програми. Управлението на паметта и събирането на боклука (проблеми от 90-те) отдавна са решени в езиците от по-високо ниво (които ти си изброил). С++  е едно ниво над асемблера за сортиране на масиви (то затова и ти качваш целия файл в паметта - ако му подадеш файл от НАП лийкс - ще трябва да искаш от тате пари за още RAM). А операционните системи който са писани на негово подобие се казват Уиндоус.
« Последна редакция: Jun 01, 2021, 03:32 от jet »
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

spec1a

  • Напреднали
  • *****
  • Публикации: 3852
    • Профил
Спеца:
https://medium.com/nerd-for-tech/linus-torvalds-c-is-really-a-terrible-language-2248b839bee3

Допотопния език С++ става само за гърмящи програми. Управлението на паметта и събирането на боклука (проблеми от 90-те) отдавна са решени в езиците от по-високо ниво (които ти си изброил). С++  е едно ниво над асемблера за сортиране на масиви (то затова и ти качваш целия файл в паметта - ако му подадеш файл от НАП лийкс - ще трябва да искаш от тате пари за още RAM). А операционните системи който са писани на негово подобие се казват Уиндоус.

   Тъй като това е примерна програма, нямам претенции да може да
работи с наистина големи файлове. Затова зареждам директно файла
в паметта. За гигантски файлове: разбира се,няма да използвам
fopen,fread и т.н. (няма как да работят с над 4 ГБ файлове),щях да
използвам open(...) с опцията O_LARGEFILE, да
отворя 1-вия файл,да чета байт по байт,конвертирам (ако трябва)
и записвам (пак байт по байт) във 2-рия. Просто няма как да пльосна
целия файл в паметта (malloc при големи стойности ще избие грешка )...

   За сортиране на гигантски масиви бих използвал база данни
(MySQL или PostgreSQL) ,импортирам данните вътре в базата
и после съм цар (order by ... и т.н. и т.н.)
Не че няма други начини; според мен този е най-добрия.

   А какви други езици могат да се използват за системно програмиране (освен  С и асемблер) ?
Сорс-кодът на ядрото на Линукс също е на С и асемблер.
Новият език rust (любим на кашика) има сериозни проблеми,даже Линус Торвалдс писа за това.

   Продължавам да твърдя,че това,което може да се направи на PHP,Python и останалите пародии,
може да се направи и на С,,обратното не е вярно.
Няма как да се напише драйвер на PHP или Python,нали.
« Последна редакция: Jun 01, 2021, 10:05 от spec1a »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Допотопния език С++ става само за гърмящи програми.
Това ми оправи настроението тази сутрин :D

Имаче аз съм любител на php за конзолни програми. Много ефективно и подредено може да се пишат. Има си всичко необходимо за четене на опциите, може да се прихващат сигнали като SIGTERM, SIGHUP ... Обработката на текст (с утф8) също е на високо ниво. Има си разните мултибайт mb_* функции и pcre с всякакво мачване на кирилски utf знаци. просто е незаменимо.
« Последна редакция: Jun 01, 2021, 10:49 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.