在C#中读取以[ANSI]编码的文本文件

时间:2012-04-23 15:25:29

标签: c# windows character-encoding

我的文本文件包含ö,ä,ü等字符,文件以ANSI编码。我想读它并将所有数据放在数据表中。我的代码是:

    private DataTable GetTextToTable(string path)
    {
        try
        {
            DataTable dataTable = new DataTable();
            int rowNo = 0;
            using (StreamReader sr = new StreamReader(path,Encoding.Default,true))
            {
                DataRow dr = null;
                String line;
                while ((line = sr.ReadLine()) != null)
                {
                    dr=dataTable.NewRow();
                    if (rowNo == 0)
                    {
                        string[] Columns = line.Split(new string[] { "\t" }, StringSplitOptions.None);
                        for (int i = 0; i != Columns.Length; i++)
                        {
                            DataColumn dc = new DataColumn();
                            dc.ColumnName = Convert.ToString(Columns[i]);
                            dataTable.Columns.Add(dc);
                        }
                        rowNo = rowNo + 1;
                    }
                    else
                    {

                        string[] ColumnsValue = line.Split(new string[] { "\t" }, StringSplitOptions.None);
                        for (int i = 0; i != ColumnsValue.Length; i++)
                        {
                            dr[i] = ColumnsValue[i];
                        }
                        dataTable.Rows.Add(dr);
                    }

                }
            }
            return dataTable;
        }
        catch (Exception e)
        {
              throw new Exception(e.Message);
        }

    }

我从这段代码得到的输出是:¿½用于ö并以同样的方式为其余的ä,ü类型字符获得任意组合字符。 所以帮助我! 在此先感谢!

1 个答案:

答案 0 :(得分:0)

我的建议是下载类似WinHex(免费)的内容,让您以十六进制格式查看文件,这可能有助于您找到问题。

这只是一个猜测,但听起来你的程序正在读取原始十六进制而不被告知将其转换为ASCII。 编辑或者您正在阅读的文件使用的任何编码格式。