C#从Excel中读取数据时错误的文本格式
我有一个像这样的testing数据的Excel文件:HàThịminhThắngHàPhúcToàn
我正在从Excel文件中读取数据,如下所示:
OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == DialogResult.OK) { Excel.Application excelApp = new Excel.Application(); Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(openFileDialog.FileName); foreach (Excel.Worksheet sheet in excelWorkbook.Worksheets) { Excel.Range range = sheet.UsedRange; object[,] values = (object[,])range.Value2; for (int i = 1; i <= values.GetLength(0); i++) { Person p = new Person(); for (int j = 1; j <= values.GetLength(1); j++) { if (null != values[i, j]) { string s = values[i, j].ToString(); Console.WriteLine("xxxx values[" + i + "][" + j + "] = " + s); } } } } }
但不幸的是,这是我得到的:HàTh? minh Th?ngHàPhúcToàn
那么,谁能告诉我为什么以及如何解决这个问题?
Encoding enc = Encoding.GetEncoding("iso-8859-1");
这是西欧的字母编码。
在将string输出到控制台之前,您需要先设置控制台编码。
Console.OutputEncoding = System.Text.Encoding.UTF8;
代码中的代码片段之后就是一个好的地方:
Person p = new Person();
没有Console.OutputEncoding = System.Text.Encoding.UTF8
使用Console.OutputEncoding = System.Text.Encoding.UTF8
string s = values[i, j].ToString();
看起来像在Excel电子表格中的文本编码不同。 尝试使用相关的编码。