# Sweep encoding — fisiere text FoxBin2Prg (.vc2/.sc2/.fr2/.mn2/.lb2/.pj2/.prg) Scop: cautare exhaustiva, pe octeti, a semnaturilor de stricare encoding (`EF BF BD` / U+FFFD, mojibake UTF-8 cu lead-byte `C3`/`C4`/`C5`/`C8`, BOM `EF BB BF` la inceput de fisier) in toate fisierele text urmarite de git, in ambele arbore-uri: - **`D:\ROA\ROAFACTURARE`** (repo principal, remote `gitea.romfast.ro:romfast/roafacturare.git`) - **`D:\ROA\ROAFACTURARE\COMUN`** (repo separat, `gitea.romfast.ro:romfast/comun.git`) ## Acoperire | Repo | Fisiere `.vc2/.sc2/.fr2/.mn2/.lb2/.pj2/.prg` scanate | |---|---| | ROAFACTURARE (principal) | 75 (case-insensitive, verificat separat ca nu exista variante `.PRG` majuscul scapate) | | COMUN | 631 (621 din glob case-sensitiv + 10 `.PRG` majuscul gasite separat: `programe/obj2arr.PRG`, `utile/hpdf/_libpdf.PRG`, `utile/hpdf/build_err_msgs.PRG`, `utile/nfXml/nfxmlCREATE.PRG`, `utile/nfXml/nfXmlMap.PRG`, `utile/nfXml/nfxmlread.PRG`, `utile/web/wwapi.PRG`, `utile/web/wwConfig.PRG`, `utile/web/wwHttp.PRG`, `utile/web/wwutils.PRG`) | Metoda: scan Perl byte-safe (`<:raw`, `LC_ALL=C`) pe continutul curent (working tree = HEAD, fara modificari necomise in niciunul din cele doua repo-uri la momentul scanarii). Niciun blob nu a fost extras cu `>` din PowerShell (doar Bash/`git cat-file`, cum s-a cerut). ## Rezultat: repo principal ROAFACTURARE **Zero fisiere afectate.** Nicio secventa `EF BF BD`, niciun mojibake `C3/C4/C5/C8` + continuare, niciun BOM, in niciunul din cele 75 de fisiere. ## Rezultat: COMUN 5 fisiere din 631 au declansat cel putin un semnal. Verificate individual, pe obiect/ context si istoric (`git log -L`), rezultatul e: | Fisier | Semnal | Nr. | Cauza reala | Commit | Verdict | |---|---|---|---|---|---| | `clase/ofacturare_comun.vc2` | `EF BF BD` (U+FFFD) | 12 | Stricare certa - diacritice cp1250 inlocuite cu U+FFFD (`Marcheazǎ`→`ďż˝`, etc.) | **`13b4f65`** | **Deja cunoscut si alocat** — restaurarea o face `s4fix-butoane`, care detine fisierul. Nu l-am atins (doi scriitori pe acelasi fisier ar fi produs conflict). | | `clase/ferestre_seturi_indicatori.vc2` | mojibake (fals-pozitiv) | 8 | Linia 5188, tag ``: text UTF-8 **legitim** ("Situaţiile financiare anuale încheiate...", pentru o declaratie ANAF/XML care cere UTF-8) inserat deliberat intr-un fisier altfel cp1250 — VFP nu impune o singura codare per fisier, doar stocheaza octetii asa cum au fost tastati/lipiti | `2f59024` (commit-ul initial care a adus fisierul in git) | **Fals pozitiv.** Neschimbat de la primul commit din git — nu e o regresie introdusa de vreun commit urmarit. | | `programe/oproceduri_comune.prg` | mojibake (fals-pozitiv) | 1 | Linia 5266: `STRTRAN(lcText, "Ă", "A")` — o functie de normalizare/eliminare diacritice care trateaza EXPLICIT mai multe variante de text deja-stricat primit din surse externe; litera UTF-8 `Ă` e parte din tabelul de inlocuiri, nu o stricare | `2f59024` | **Fals pozitiv.** Neschimbat de la primul commit; codul e literal despre curatarea altor stricari, nu e el insusi stricat. | | `utile/Menu/menutool.vc2` | mojibake (fals-pozitiv) | 162 (122 linii) | Clasa terta `_menuinfo`, comentarii in **chineza** (encoding GBK) — octetii GBK se suprapun coincidental peste tiparul `C3/C4/C5/C8 + continuare` cautat pentru cp1250/UTF-8; nu are nicio legatura cu diacritice romanesti | `2f59024` — fisierul are o **singura** intrare in tot istoricul git (import initial, niciodata modificat) | **Fals pozitiv / afara din scop.** Cod tert neatins vreodata. | | `utile/excel/ExcelXML.prg` | `EF BF BD` (U+FFFD) | 52 | Comentarii in **portugheza** intr-o biblioteca terta (`"Definição de bordas..."`, `"Não aplica os estilos..."`) — caracterele portugheze au fost inlocuite cu U+FFFD deja **inainte** de primul commit vizibil in git | `2f59024` (prezent inca de la import; nu exista commit anterior de investigat in acest istoric) | **Stricare pre-existenta, in afara ferestrei investigabile.** Nu provine dintr-un commit urmarit (SVN sau sursa originala, inainte de tracking-ul git). Doar comentarii, cod tert, fara text romanesc/UI. Nu am gasit un commit "vinovat" pentru ca nu exista unul in istoricul disponibil. | Nicio secventa BOM (`EF BB BF`) la inceputul vreunui fisier, in niciunul din cele 706 fisiere (75 + 631). ## Concluzie In afara de **`clase/ofacturare_comun.vc2`** (deja identificat si alocat lui `s4fix-butoane`), sweep-ul **nu a gasit nicio alta regresie de encoding introdusa de vreun commit** in istoricul git al celor doua repo-uri. Cele 4 fisiere ramase sunt fie fals-pozitive ale euristicii (text UTF-8 legitim/intentionat, cod care proceseaza explicit variante de mojibake, sau comentarii intr-o alta limba/encoding straina de cp1250-ul romanesc), fie o stricare deja prezenta la momentul primului commit care a adus fisierul in git (`2f59024`), deci in afara ferestrei pe care o putem bisecta. Raport gol pe restul arborelui = rezultat bun: nu s-a mai lovit acelasi bug (U+FFFD prin suprascriere cp1250) in alta parte. Fara nicio scriere in arbore, fara write-back, fara pornire VFP — doar investigatie read-only, conform cerintei.