Newsgroup: it.comp.lang.visual-basic
Titolo: Vb.net MAC e codifica caratteri

Beh vi voglio aggiornare sulle mie peripezie "cross.SO"
Sto trasportando degli archivi da Filemaker Mac a mysql (sotto linux) in mezzo il filtro di conversione in XP+Net fw4 (non è solo un filtro di importazione...fà anche delle complicazioni...insomma va bene farlo come "programmillo" sviluppato ad hoc!)
Il filemaker alla fine abbiamo visto che la cosa più indolore che riesce a fare è esportare i dati in formato delimitato (csv o tab)...alla fine per come sono stati caricati a cane...il csv si incasinava...abbiamo scelto il tab!
Solo che sorge un problema....sto Tab in che codifica è? Proviene da un Mac....sarà utf-8? Unicode? boh!
Intanto nello sterminato mare del FW 4.0 trovo un namespace che ti consente di fare filtri di importazione con 2 righe di codice: TextParser (sta nel namespace VisualBasic)
con questo si fa un "mangia file tab delimited" in pochissime righe
Dim SplitChar As Char = vbTab
Using Fo As New FileIO.TextFieldParser(Fop)'qui non va bene!
            'file delimitato da tab
            Fo.TextFieldType = FieldType.Delimited
            Fo.SetDelimiters(SplitChar)
            While Not Fo.EndOfData
                'riga
                riga = Fo.ReadFields()
                For Each campo In riga
                    console.writeline campo
                Next
            End While
            Fo.Close()
End Using
in realtà non stampo sulla console ma popolo una dataTable e da li visualizzo una griglia!
Il problema....il solito carattere ? in mezzo al testo!
Quindi un problema di codifica!
Ammetto la mia limitazione sul casino che c'è intorno alla codifica dei caratteri: mi fà incazzare! Come cavolo è codificato questo file?
Setto psPad per trovare da se l'encoding....mi dichiara UTF-8
bene
imposto
 Using Fo As New FileIO.TextFieldParser(Fop, Encoding.UTF8)
lancio e PRRRRRRRRRRRRRRRRRRRRRRRRR!!!! sempre la ? nel mezzo!
Cavolo!
Apro psPad in modalità esadecimale
mi dichiara E9 e accentata con accento verso destra : é questa (chissà con che codifica la vedrete)la frase era:
 Aucun ont trouvé chant par usage (anche qui chissà cosa vedrete)
Ma come....perchè la datagridview mi fà vedere caratteri sbagliati???
Insomma la faccio breve cari miei....m'è toccato andare a tentativi...
la codifica che fa apparire correttamente la maledetta é :
 Using Fo As New FileIO.TextFieldParser(Fop, Encoding.UTF7)
Possibile che non ci sia modo far trovare da se la codifica giusta?
Il terzo flag di TextFieldParser recita: detect encoding
ma non "detecta" una mazza perchè metteva sempre la ? al posto della é
Ho visto per Java una libreria universal encoding detector....probabilmente ci sarà da qualche parte in Net...ma dove? 
probabilmente è impossibile...il file tab di filemaker non ha nessun marker (ho guardato con l'editor esadecimale)...sono byte di dati sin dall'inizio...e quindi è un tirare ad indovinare!

....ma non va bene....sigh....ogni tanto sporca con caratteri strani!
Che palle!

Ho trovato il modo di impostare la codifica da filemaker....tutto ok!
Ora però esplode quando trova un campo che contiene le virgolette....strano perchè ho messo come delimitatore solo il tab!
Bah vediamo se il forum M$ serve a qualcosa........

Risolto...in maniera grezzissima
http://social.msdn.microsoft.com/Forums/it-IT/visualbasicit/thread/633a91e8-6f10-4ab1-b7f3-08c85a1032b0