伊莉討論區
標題:
如何使用c#轉換csv檔案的編碼格式為utf 8
[打印本頁]
作者:
koala888
時間:
2017-7-12 11:11 AM
標題:
如何使用c#轉換csv檔案的編碼格式為utf 8
最近在用asp.net處理資料庫匯入,現在遇到csv檔案編碼的問題,要先用記事本打開csv檔案另存為編碼utf 8,然後再從網頁匯入到MS SQL資料庫,如果編碼不改的話中文字就會亂碼,對使用者來說這樣做實在是太麻煩了,我現在從網頁匯入csv檔案到資料庫已經做好了,就是直接匯入不改編碼會出現亂碼的問題,請問我要怎麼改呢?我的語言用c#,用以下的程式轉編碼為utf8結果還是失敗,仍出現亂碼
System.Text.Encoding utf_8 = System.Text.Encoding.UTF8;
string convertstr = cell.ToString();
// Convert a string to utf-8 bytes.
byte[] utf8Bytes = System.Text.Encoding.UTF8.GetBytes(convertstr);
// Convert utf-8 bytes to a string.
string s_unicode2 = System.Text.Encoding.UTF8.GetString(utf8Bytes);
dt.Rows[dt.Rows.Count - 1][i] = s_unicode2;
誰可以幫忙,感激不盡
作者:
Josie_2016
時間:
2017-7-12 03:17 PM
試試
//讀入資料
string source = File.ReadAllText(filename,System.Text.Encoding.GetEncoding("big5"));
//轉換編碼
byte[] buffer = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("big5"), System.Text.Encoding.UTF8, System.Text.Encoding.GetEncoding("big5").GetBytes(source));
//轉成字串
string target = System.Text.Encoding.UTF8.GetString(buffer);
複製代碼
作者:
sam30525sam
時間:
2017-7-12 08:56 PM
這實務上蠻常遇到的,先回答你的問題。
解法我推Josie_2016的,
但是還要注意一點,因為他只限定big5,所以這樣算是半hard code,
如果你是其他編碼,那一樣會亂碼。
這時候你可能又會上來抱怨說:「每次都要將檔案轉碼成big5」。
可以再多補個編碼判斷,自動轉碼,這可做大做小。
做大就是完全自動判斷,
做小就是有限制的自動判斷。
建議你看這兩篇文章,大致都有提到
https://social.msdn.microsoft.com/Forums/zh-TW/6c5ae56e-b7c2-418d-9ab8-b5e3d5d81f23?forum=233
https://dotblogs.com.tw/rainmaker/2013/05/20/104547
=====
在實務上,我認為你的要求只是在拖延,
除非你可以做到完全自動判斷,不然怎麼做都算hard code。
與其靠程式處理,其實建議檔案提供者一律改用utf8比較快,
或者你寫個.bat檔,一次處理所有檔案,也很實際,
因為這算是內部需求,大家遵守好就好,
如果是end user需求,那就鼻子摸一摸,寫全自動判斷最好。
歡迎光臨 伊莉討論區 (http://s03.p05.eyny.com/)
Powered by Discuz!