Autore Topic: Codifica file  (Letto 940 volte)

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 266
    • Mostra profilo
Codifica file
« il: 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..

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Codifica file
« Risposta #1 il: 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.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 266
    • Mostra profilo
Re: Codifica file
« Risposta #2 il: 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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Codifica file
« Risposta #3 il: 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.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Codifica file
« Risposta #4 il: 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"))
« Ultima modifica: 06 Dicembre 2013, 10:58:03 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Codifica file
« Risposta #5 il: 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.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 266
    • Mostra profilo
Re: Codifica file
« Risposta #6 il: 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...

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Codifica file
« Risposta #7 il: 29 Maggio 2013, 22:50:29 »
Quello per ora rimane un mistero... :-\
Ma qui abbiamo un prode AMBASCIATORE che potrebbe chiedere nella MLI... :-[
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Codifica file
« Risposta #8 il: 30 Maggio 2013, 03:02:21 »
Ma qui abbiamo un prode AMBASCIATORE che potrebbe chiedere nella MLI... :-[

...forse appena un fantasma !
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »