che sto cercando di sostituire alcuni caratteri indesiderati in una stringa ricavato da un foglio di calcolo Excel. Il motivo è che il nostro database Oracle sta usando il set di caratteri WE8ISO8859P1, che non definisce diversi personaggi che Excel "utilmente" Inserti per voi nel testo (virgolette curve, em e en trattini, etc.) Dal momento che non ho alcun controllo sul database o come vengono creati i fogli di calcolo Excel Ho bisogno di sostituire i caratteri con qualcos'altro.Sostituzione caratteri Unicode specifiche nelle stringhe lette da Excel
a recuperare il contenuto della cella in una stringa così:
string s = xlRange.get_Range("A1", Missing.Value).Value2.ToString().Trim();
Visualizzazione della stringa nel Visualizzatore di testo di Visual Studio mostra il testo per essere completa e correttamente recuperato. Avanti provo e sostituire uno dei personaggi indesiderati (in questo caso il simbolo citazione riccio di destra):
s = Regex.Replace(s, "\u0094", "\u0022");
Ma non fa nulla (Visualiser Testo dimostra ancora di essere lì). Per provare e verificare che il carattere che voglio sostituire sia effettivamente lì, ho provato:
bool a = s.Contains("\u0094");
ma restituisce falso. Tuttavia:
bool b = s.Contains("”");
restituisce true.
mia (un po 'carente) comprensione delle stringhe in .NET è che sono codificati in UTF-16, mentre Excel sarebbe probabilmente usando ANSI. Quindi vuol dire che ho bisogno di cambiare la codifica del testo mentre esce da Excel? O sto facendo qualcos'altro di sbagliato qui? Qualsiasi consiglio sarebbe molto apprezzato. Ho letto e riletto tutti gli articoli che posso trovare su Unicode e la codifica, ma non ne ho ancora la più saggia.
Sì, hai perfettamente ragione, i miei valori esadecimali erano lontani. Risulta che stavo usando punti codice per il set di caratteri WIN1252 invece di UTF-16. Un giorno capirò tutto questo (sul quale sarà sostituito da qualcosa di molto più complicato in incomprensibile). Grazie per la risposta. –