Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: AlexLazarus - Dicembre 20, 2022, 11:28:16 am

Titolo: Lo strano caso delle vocali accentate
Inserito da: AlexLazarus - Dicembre 20, 2022, 11:28:16 am
Forse ho scoperto l'acqua calda, ma vorrei sottoporre ai più esperti una scoperta che ritengo interessante.

Dunque...
Nei miei Video Tutorial per principianti (N. 180 e 190) descrivo il funzionamento di un programma (ZIP liberamente scaricabile dal canale) che, per farla breve, compie le seguenti operazioni:
1) Carica un file (precedentemente suddiviso in tante righe quante sono le parole)
2) Da ogni singola parola elimina tutti i caratteri, ad eccezione di quelli alfabetici (comprese vocali accentate).
3) Elimina tutte le parole ripetute più di una volta.

Ora succede che (vedi figura 1) se le parole che contengono un accento sono scritte con BLOCCO NOTE (di Windows), le vocali accentate vengono riconosciute come caratteri validi e, come tali, accettati.

Se invece (vedi Figura 2) lo stesso testo lo scrivo in LibreOffice (e lo salvo ovviamente in formato TXT), le vocali accentate NON vengono riconosciute e quidi rimosse dalle parole.

Dopo aver fatto numerosi tentativi, ho trovato una soluzione (Figura 3) per ottenere - da LIBREOFFICE - un file TXT in cui è possibile individuare (e accettare) le vocali accentate:

A) Da LibreOffice salvare il file in formato HTML
B) Caricare in Chrome il file ottenuto
C) Selezionare l'intero testo e fare Copia con il solito Control + C
D) Aprire BloccoNote (cioè un file "vuoto"), incollare il testo con Control + V e salvarlo.
E) A questo punto il file è correttamente interpretato dal mio programma.

Conclusione(?):

Evidentemente il formato TXT che utilizza LibreOffice non è "universale" (a differenza di quello correttamente riconosciuto da NotePad e Chrome) e richiede quindi una conversione... già: ma quale conversione?
Oppure...?


P.S. I file non avevano ancora subito al conversione maiuscolo / minuscolo e quindi le maiuscole risultano soppresse. Inoltre non ho eliminato l'apostrofo... Va be', però il concetto è chiaro. 😉
Titolo: Re:Lo strano caso delle vocali accentate
Inserito da: DragoRosso - Dicembre 20, 2022, 12:09:45 pm
Su questo se cerchi ci sono diverse indicazioni e approfondimenti nei vari topic e discussioni del forum.

In breve (per non ritornare a ritrattare tutto), il formato TXT standard non può essere universale perchè genericamente dovrebbe contenere solo i caratteri  da 0 a 127 ASCII.

Se il TXT ha una BOM, allora è possibile riconoscere in automatico la codifica del testo.

In alternativa è necessario concordare tra chi scrive e chi legge il formato di codifica dei caratteri.

Normalmente per scrivere i caratteri diversi dai caratteri standard dell'alfabeto inglese (tipo lettere accentate italiane) viene usato il formato UTF-8.

Nel web, nel XML, ....., è tutto codificato UTF-8.

Cerca nel forum e vedi le discussioni, sono abbastanza esaurienti.

Ciao
Titolo: Re:Lo strano caso delle vocali accentate
Inserito da: nomorelogic - Dicembre 20, 2022, 12:25:24 pm
LibreOffice salva il testo in UTF-8 con BOM.
Per apprezzare le differenze dovresti aprire i 2 file di testo (quello creato con LibreOffice e quello creato con semplice editor di testi) con un editor esadecimale.

Vedrai che il contenuto in byte è diverso (soprattutto il primo byte).
Poi se vuoi approfondire, come dice DragoRosso, ci sono molti thread in giro.

nomorelogic
Titolo: Re:Lo strano caso delle vocali accentate
Inserito da: AlexLazarus - Dicembre 20, 2022, 05:17:38 pm
Avete (ovviamente) ragione.
Nel frattempo ho esaminato più a fondo (con un mio programma) la questione ed effettivamente le stringhe formate da caratteri accentati risultano lunghe DUE caratteri e non uno.
Comunque mi riprometto di studiare più a fondo ma nel frattempo la soluzione che ho trovato (LibreOffice > HTML > Chrome > Notepad) è più sbrigativa e - ciò che più conta - funziona senza creare particolari stress.
Grazie per i suggerimenti.