2009-12-17 12 views
1

J'essaye de faire un petit outil pour aider certains types convertissant des données entre une installation de SAP et une installation d'Axapta.Streamwriter: les caractères polonais sont ignorés?

Je reçois un fichier texte en codage Western European (Windows) (1252). Ils ont mis des caractères spéciaux pour remplacer certains caractères polonais. Maintenant, mon travail consiste à remplacer ces caractères spéciaux par les caractères polonais corrects.

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(); 

Si je déboguer l'application et définir un point d'arrêt sur la "objTemp2.WriteLine (strLineText);" ligne. Ensuite, je peux voir que la valeur dans la variable strLineText est parfaite. Le caractère spécial est remplacé par le caractère polonais correct.

Si j'ouvre le fichier écrit par la suite, je ne trouve pas les caractères polonais corrects. Je travaille avec "¶" & "Ś", les deux sont juste enregistrés comme "s" & "S" dans le fichier.

Ai-je raté quelque chose ou ai-je négligé quelque chose de très important?

Répondre

3

Je pense que le problème est que les caractères polonais concernés n'existent pas dans la page de codes de Windows-1252.

Pouvez-vous confirmer s'ils sont sur le this grid? Ma suggestion serait d'ouvrir le flux de sortie (écrivain de flux) avec un encodage UTF-8 ou quelque chose, qui prendra en charge tous les caractères dont vous avez besoin.

+0

Merci pour la réponse rob. Non - les caractères ne sont pas listés sur la page que vous liez. Je leur ai dit que je pense qu'ils utilisent le mauvais encodage, mais ils ne vont pas écouter. Maintenant j'ai quelque chose à leur donner et ensuite ils peuvent voir pour eux-mêmes. Merci beaucoup! –