我正在尝试制作一个小工具来帮助一些人在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”。
我是否遗漏了某些内容或忽略了一些非常重要的内容?
答案 0 :(得分:3)
我认为问题是在Windows-1252代码页中不存在相关的波兰字符。
您能否确认他们是否在this grid?
我的建议是使用UTF-8编码打开输出流(流编写器),或者某些,这将支持您需要的所有字符。