1

我正在尝试制作一个小工具来帮助一些人在 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”。

我错过了什么,还是忽略了一些非常重要的事情?

4

1 回答 1

3

我认为问题在于有关的波兰语字符在 windows-1252 代码页中不存在。

你能确认他们是否在这个网格上吗?

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

于 2009-12-17T16:48:41.127 回答