Sto leggendo i file in vari formati e lingue e attualmente sto utilizzando una piccola libreria di codifica per tentare di rilevare la codifica corretta (http://www.codeproject.com/KB/recipes/DetectEncoding.aspx).C#: Cycle through encodings
È abbastanza buono, ma a volte manca ancora. (File multilingue)
La maggior parte dei miei potenziali utenti ha una comprensione molto limitata della codifica (il meglio che posso sperare è "ha qualcosa a che fare con i caratteri") ed è molto improbabile che sia in grado di scegliere la giusta codifica in una lista, quindi mi piacerebbe lasciarli scorrere attraverso diverse codifiche fino a trovare quello giusto semplicemente cliccando su un pulsante.
Problemi di visualizzazione? Clicca qui per provare una codifica diversa! (Beh, questo è comunque il concetto)
Quale sarebbe il modo migliore per implementare qualcosa del genere?
Modifica: Sembra che non mi sia espresso abbastanza chiaramente. "Ciclando attraverso la codifica", non intendo "come eseguire il loop delle codifiche?"
Quello che intendevo era "come consentire all'utente di provare diverse codifiche in sequenza senza ricaricare il file?"
L'idea è più simile a questa: diciamo che il file è caricato con la codifica errata. Vengono visualizzati alcuni caratteri strani. L'utente farebbe clic sul pulsante "Codifica successiva" o "codifica precedente" e la stringa verrebbe convertita in una codifica diversa. L'utente deve solo continuare a fare clic finché non viene trovata la codifica corretta. (qualunque codifica appaia valida per l'utente andrà bene). Finché l'utente può fare clic su "Avanti", ha una ragionevole possibilità di risolvere il suo problema.
Quello che ho trovato finora comporta la conversione della stringa in byte utilizzando la codifica corrente, quindi la conversione dei byte nella prossima codifica, la conversione di quei byte in caratteri, quindi la conversione del carattere in una stringa .... Doable, ma I mi chiedo se non c'è un modo più semplice per farlo.
Ad esempio, se esistesse un metodo che leggesse una stringa e la restituisse utilizzando una codifica diversa, qualcosa come "render (string, encoding)".
Grazie mille per le risposte!
Tecnicamente, un file con codifica UTF-8 non ha bisogno di un BOM. È persino scoraggiato, poiché interferirà con le applicazioni che prevedono che i dati ASCII inizino con determinati caratteri, come "#!" all'inizio degli script di shell Unix. –