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电子表格中的文本编码不同。 尝试使用相关的编码。