[英]C# DataGrid character encoding
我的應用程序從文件中提取數據,將其拆分為幾個DataTable
,然后根據選擇在DataGrid
顯示數據。 問題是,當我告訴它在DataGrid中,特殊字符似乎使用了錯誤的編碼,我得到以下征兆:
這是我獲取文件數據的方式:
using (StreamReader reader = new StreamReader(@filename, true))
{
while (!reader.EndOfStream)
{
// split the data in the file on ;
var line = reader.ReadLine().Split(';');
// Put the data in an object for the datatable
object[] row = new object[] { line[0], line[1] };
// Data will be put in a DataTable without any other conversion
table.Rows.Add(row);
}
}
// Create reader from datatable
using (DataTableReader reader = table.CreateDataReader())
{
// Loop through the table
while (reader.Read())
{
// Create new object that will act as a row
object[] newrow = new object[] { reader[0], reader[1] };
// Add the row
dataGrid.Rows.Add(newrow);
}
}
上面的代碼可以完美地工作,並且得到了簡化。 顯然還有更多事情在進行,但沒有任何事情會影響任何編碼。 我進行了一些搜索,但似乎找不到針對此特定問題的解決方案。
注意:我不知道文件的編碼,並且每個文件的編碼可能有所不同。
在不事先知道文件編碼的情況下,最好的辦法就是猜測該編碼是什么。
我建議您閱讀這篇出色的文章: http : //www.joelonsoftware.com/articles/Unicode.html
閱讀很有趣,我個人在那里發現了一些有價值的信息/說明。
但是這篇文章的主要內容是:
不知道字符串使用什么編碼就沒有意義。
拋開理論,我知道在實踐中有時不可能問用戶他們剛提交/上傳的文件的編碼是什么。
因此,同樣,您能做的最好的就是猜測。
在我的職業生涯中,我已經處理過幾次這個問題,每次我都設法找到一個足夠好的編碼猜測算法,這取決於所開發系統的性質。
最好的辦法是獲取盡可能多的樣本文件,手動分析其編碼並查看是否可以找到模式,例如:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.