Я пытаюсь сделать небольшой инструмент, чтобы помочь некоторым ребятам конвертировать данные между установкой SAP и установкой Axapta.
Я получаю текстовый файл в западноевропейской (Windows) кодировке (1252). Они вставили некоторые специальные символы, чтобы заменить некоторые польские символы. Теперь моя задача заменить эти специальные символы правильными польскими символами.
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();
If I debug the application and set a breakpoint on the "objTemp2.WriteLine(strLineText);" line. Then I can se that the value inside the strLineText variable is perfect. The special char is replaced by the correct Polish character.
Если я потом открою записанный файл, я не смогу найти правильные польские символы. Я работаю с «ś» и «Ś», оба просто сохраняются как «s» и «S» в файле.
Я что-то упустил или пропустил что-то очень важное?