2013-04-24 39 views
0

我有一個產生CSV報告的應用程序。這可以在本地正常工作,並且CSV通常在Excel中打開...此文件是ANSI編碼的。當部署到一個(不是全部)我的服務器時,相同的代碼會生成相同的文件,但使用Unicode ...,在Excel中不能很好地打開(每行的數據都在第一列)。這是相同的代碼,所以我假設這是一個IIS設置,但我找不到任何東西。有人有任何想法嗎?一個服務器輸出Unicode和另一個ANSI

更新:應用程序使用一個StreamWriter創建一個文本文件,然後如下文本文件發送到響應流:

Response.Clear(); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "application/octet-stream"; 
Response.WriteFile(file.FullName); 
Response.End(); 
+0

您的應用程序創建和寫入CSV文件的準確程度如何? – 2013-04-24 17:26:56

+0

該應用程序使用StreamWriter創建文本文件,然後將文本文件發送到響應流,如下所示: Response.Clear(); Response.AddHeader(「Content-Disposition」,「attachment; filename =」+ file.Name); Response.AddHeader(「Content-Length」,file.Length.ToString()); Response.ContentType =「application/octet-stream」; Response.WriteFile(file.FullName); Response.End(); – user470249 2013-04-25 11:22:31

+0

'StreamWriter'有一個構造函數,可以讓你指定用於編寫文本的'Encoding'。它默認爲UTF-8。 'WriteFile()'按原樣傳輸文件。因此,如果文件在不同服務器上的編碼方式不同,那麼寫入文件時不得使用相同的'Encoding'。你能顯示實際創建文件的代碼嗎? – 2013-04-25 15:24:08

回答

0

IIS不具有這樣的功能,除非它是創建。很可能,這是由正在使用的MSSQL實例引起的。

http://msdn.microsoft.com/en-us/library/aa237861%28v=sql.80%29.aspx

瀏覽表在表編輯器,並期待在設置什麼類型的默認編碼。

+0

兩臺服務器上的數據庫(和表)都使用相同的排序規則和相同的數據類型使用相同的腳本進行設置,所以我不明白它們會有什麼不同。上面的鏈接引用了一個註冊表項,我似乎無法與我的註冊表匹配。 – user470249 2013-04-25 08:13:55

+0

您是否在SQL服務器上驗證了您的數據類型?看看這個:[link](http://stackoverflow.com/questions/12512687/sql-server-utf8-howto) – 2013-05-17 19:29:54

相關問題