StreamWriter: caratteri polacchi vengono ignorati?
-
20-09-2019 - |
Domanda
Sto cercando di fare un piccolo strumento per aiutare alcuni ragazzi conversione dei dati tra un'installazione di SAP e un'installazione Axapta.
ho un file di testo i (Windows) codifica dell'Europa occidentale (1252). Hanno messo in alcuni caratteri speciali per sostituire alcuni caratteri polacchi. Ora è il mio lavoro per sostituire quei caratteri speciali con i personaggi polacchi corretti.
FileStream objFile = new FileStream(FilePath, FileMode.Open, FileAccess.Read,FileShare.Read);
StreamReader objTemp = new StreamReader(objFile, Encoding.GetEncoding(1252));
FileStream objFile2 = new FileStream(FilePath + "_new", FileMode.OpenOrCreate,FileAccess.Write);
StreamWriter objTemp2 = new StreamWriter(objFile2, Encoding.GetEncoding(1252));
while ((strLineText = objTemp.ReadLine()) != null)
{
for (int i = 0; i < strOuterArray.Length; i++)
{
string[] strInnerArray = strOuterArray[i].Split(new char[]{';'});
strLineText = strLineText.Replace(strInnerArray[0], strInnerArray[1]);
}
objTemp2.WriteLine(strLineText);
}
objTemp.Close();
objTemp.Dispose();
objFile.Close();
objFile.Dispose();
objTemp2.Flush();
objTemp2.Close();
Se il debug l'applicazione e impostare un punto di interruzione sul "objTemp2.WriteLine (strLineText);" linea. Poi posso SE che il valore all'interno della variabile strLineText è perfetta. Il carattere speciale viene sostituito dal carattere polacco corretta.
Se apro il file scritto in seguito, allora non riesco a trovare i caratteri polacchi corretti. Sto lavorando con "S" e "S", entrambi è appena salvato come "s" e "S" nel file.
Mi sono perso qualcosa o hanno ho trascurato qualcosa di molto importante?
Soluzione
Credo che il problema è che i personaggi polacchi in questione non esistono nella tabella codici di Windows-1252.
Si può confermare se sono sulla questa griglia ?
Il mio suggerimento sarebbe quello di aprire il flusso di uscita (flusso scrittore) con una codifica UTF-8 o somesuch, che sosterrà tutti i caratteri necessari.