2013-04-24 40 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

相关问题