Streamwriter:跳过波兰语字符?

时间:2009-12-17 15:46:42

标签: c# encoding streamwriter windows-1252

我正在尝试制作一个小工具来帮助一些人在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变量中的值是完美的。特殊字符被正确的波兰字符替换。

如果我之后打开书面文件,那么我找不到正确的波兰语字符。我正在使用“ś”和&amp; “Ś”,两者都被保存为“s”&amp;文件中的“S”。

我是否遗漏了某些内容或忽略了一些非常重要的内容?

1 个答案:

答案 0 :(得分:3)

我认为问题是在Windows-1252代码页中不存在相关的波兰字符。

您能否确认他们是否在this grid

我的建议是使用UTF-8编码打开输出流(流编写器),或者某些,这将支持您需要的所有字符。