Streamwriter: пропускаются польские символы? - PullRequest
1 голос
/ 17 декабря 2009

Я пытаюсь создать небольшой инструмент, который поможет некоторым парням конвертировать данные между установкой 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();

Если я отлаживаю приложение и устанавливаю точку останова на "objTemp2.WriteLine (strLineText);" линия. Тогда я могу видеть, что значение внутри переменной strLineText является идеальным. Специальный символ заменен на правильный польский символ.

Если я потом открою записанный файл, то не смогу найти правильные польские символы. Я работаю с «ś» и «Ś», оба просто сохраняются как «s» и «S» в файле.

Я что-то пропустил или упустил из виду что-то очень важное?

1 Ответ

3 голосов
/ 17 декабря 2009

Я думаю, что проблема в том, что соответствующие польские символы не существуют в кодовой странице windows-1252.

Можете ли вы подтвердить, находятся ли они на этой сетке ?

Мое предложение состояло бы в том, чтобы открыть выходной поток (потоковую запись) с кодировкой UTF-8 или что-нибудь подобное, которое будет поддерживать все необходимые вам символы.

...