Gambas-it

Gambas3 => Programmazione => Topic aperto da: pastrank - 11 Agosto 2012, 12:16:54

Titolo: Codifica file
Inserito da: pastrank - 11 Agosto 2012, 12:16:54
Ho due file di testp, con due differenti codifiche: il comando file, da terminale, risponde:

file a.txt
a.txt: UTF-8 Unicode text

file b.txt
b.txt: ISO-8859 text

Ma, senza shell, nativamente in Gambas, come si capisce? Una ricerca sul forum non mi trova niente... mi andrebbe bene anche trasformare quello che leggero' dai file con una codifica delle due, purche' lo sappia..
Titolo: Re: Codifica file
Inserito da: vuott - 11 Agosto 2012, 19:50:36
Ma, senza shell, nativamente in Gambas, come si capisce? Una ricerca sul forum non mi trova niente... mi andrebbe bene anche trasformare quello che leggero' dai file con una codifica delle due, purche' lo sappia..
Ho l'impressione  :-\ che non vi sia attualmente un comando Gambas che ti restituisce la codifica dei caratteri di un file.
Penso, però, che, se proprio hai necessità, potresti comunque imporre la trasformazione della codifica mediante le funzioni stringa di conversione.
Titolo: Re: Codifica file
Inserito da: pastrank - 12 Agosto 2012, 10:26:50
Penso, però, che, se proprio hai necessità, potresti comunque imporre la trasformazione della codifica mediante le funzioni stringa di conversione.

Non so se e' facile pure questo, dalle poche prove che ho fatto per ora: conv per esempio vorrebbe avere il charset di origine, che appunto non conosco, pero' potrei vedere se facendo la conversione, quando e' gia' utf-8, mi da' un errore (in quel caso, sarebbe segno che quel file non lo devo convertire, nell'altro dovrei prendere il risultato della conversione). Oppure ricreare comunque un nuovo file che so come e': inoltre, vedo che neanche file da terminale sarebbe adatto per vedere cosa fare, visto che nei file di prova che uso, ho una lista di risultati, da file, tipo

ASCII text
C++ source, ASCII text
ISO-8859 text
UTF-8 Unicode text
Non-ISO extended-ASCII text
assembler source, ISO-8859 text
Titolo: Re: Codifica file
Inserito da: vuott - 12 Agosto 2012, 16:33:41
... pero' potrei vedere se facendo la conversione, quando e' gia' utf-8, mi da' un errore (in quel caso, sarebbe segno che quel file non lo devo convertire, nell'altro dovrei prendere il risultato della conversione).
Appunto, così, dicevo. Credo sia più risolutivo.
Titolo: Re: Codifica file
Inserito da: vuott - 24 Maggio 2013, 18:20:53
Potresti dare uno sguardo alle "Funzioni di test sui caratteri".

Per esempio se un file è formato da caratteri ASCII:
Codice: gambas [Seleziona]
Print IsAscii(File.Load("/percorso/del/file"))
Titolo: Re: Codifica file
Inserito da: Top Fuel - 29 Maggio 2013, 12:03:35
C'è la funzione Conv$, che converte i caratteri da un set ad un altro.
Dall'help:

Citazione
Conv$
StringaConvertita = Conv$ ( Stringa AS String , CaratterePartenza AS String , CarattereDestinazione AS String ) AS String
StringaConvertita = Conv ( Stringa AS String , CaratterePartenza AS String , CarattereDestinazionet AS String ) AS String
Converte una stringa da un set di caratteri ad un'altro. Un set di caratteri è rappresentato da stringhe tipo "ASCII", "ISO-8859-1", o "UTF-8".
L'interprete Gambas usa internamente come predefinito il set di caratteri UTF-8.
Il set di caratteri usato dal sistema viene restituito da System.Charset. Esso è ISO-8859-15 su Mandriva 10.2, ma attualmente tutti i sistemi Linux sono per lo più basati su UTF-8.
Il set di caratteri usato dall'interfaccia grafica invece viene restituito da Desktop.Charset. Esso dovrebbe essere sempre UTF-8.
La conversione usa la funzione iconv() della libreria GNU e può convertire anche altri tipi di codifica tipo la codifica Turca (iso-8859-9), Koreana (EUC-KR), Cinese semplificato (GB2312), Arabo (windows-1256), Cyrillico (koi8-r) e giapponense (iso-2022-jp) all'interno dell' human-readable UTF-8. Per una lista completa di tutti i set di caratteri internazionali supportati, digitare iconv -l dalla linea di comando.
Notate che non tutte le combinazioni dei nomi di codifica possono essere usati per i parametri CaratterePartenza e CarattereDestinazione e che il codice del set di caratteri può avere un numero o un'alias.
Titolo: Re: Codifica file
Inserito da: pastrank - 29 Maggio 2013, 22:16:40
C'è la funzione Conv$, che converte i caratteri da un set ad un altro.

Ma prima, dovrei arrivare a capire quale sarebbe il set del file...
Titolo: Re: Codifica file
Inserito da: Top Fuel - 29 Maggio 2013, 22:50:29
Quello per ora rimane un mistero... :-\
Ma qui abbiamo un prode AMBASCIATORE che potrebbe chiedere nella MLI... :-[
Titolo: Re: Codifica file
Inserito da: vuott - 30 Maggio 2013, 03:02:21
Ma qui abbiamo un prode AMBASCIATORE che potrebbe chiedere nella MLI... :-[

...forse appena un fantasma !