Domanda

Ho un programma che inserisce testo e ordina attraverso di esso usando una serie di funzioni e il testo dovrebbe essere leggibile indipendentemente dal formato, tuttavia, quando viene importato un file salvato nella codifica ASCII estesa, vengono ignorati tutti i caratteri superiori a 127. Guardandomi intorno, non riesco a vedere come superare questo. I file vengono letti bene in UTF-8 e Unicode. Ho provato a convertire le corde in UTF-8, ma le lettere in questione si presentano ancora come un punto di riferimento come forme. Vedo che i valori sono corretti: 0xBF per û, ma non vengono interpretati come valore.

Qualcuno può aiutarmi qui, non ho già fatto molto lavoro con questo genere di cose prima. Sto lavorando in C# se questo aiuta.

Il mio codice attuale per la conversione sembra così:

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding();
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd);
sd = u.GetString(asciiBytes);

Dove sd è la stringa. Quando importo questa stringa, non specifico la codifica del testo:

string input = File.ReadAllText(fname);
...
parser(input);
È stato utile?

Soluzione

Vedo che i valori sono corretti: 0xbf per û

Questa non è la codifica UTF-8 per û, che sarebbe una sequenza a due byte, 0xc3 + 0xBB. Chiaramente hai indovinato il file che codifica male. La codifica per quel carattere nel codice di Windows Page 1252, comune in Europa occidentale e nelle Americhe è 0xFB. Comune anche nel Regno Unito, il tuo paese di residenza. Hai invertito le cifre?

Usa invece encoding.default.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top