2012-02-22 64 views
4

我有一個腳本,通過我的網頁上的GridView循環,並生成一個CSV文件的值。英鎊符號顯示爲£時生成CSV

一個問題報告與此其中正在顯示的符號編碼,例如:

Lorem & Ipsum 
£100 

我用Server.HtmlDecode(),這已固定的解碼值,固定符號,但是英鎊符號是現在顯示一個不同的符號:

Lorem & Ipsum 
£100 

這是爲什麼,我怎麼能解決這個問題,以便Â字符不會出現?


的代碼我使用,預備在CSV使用初始值是:

Dim Str As String = String.Format("{0}", Server.HtmlDecode(value).Replace(",", "").Replace(Environment.NewLine, " ").Replace(Chr(10), " ").Replace(Chr(13), " ")) 

這解碼HTML,替換任何逗號和換行符。

+0

你的應用程序和消費客戶端的編碼是否一致?即如果你的客戶在Excel中打開這個CSV文件 - 他們是否選擇了你給的相同編碼?我記得(德語)Excel在ISO-8895-1中打開一個CSV作爲標準,這將顯示一個UTF-8磅符號。 – 2012-02-22 10:54:52

+0

看起來像一個編碼問題。查看http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx如何在整個應用程序中進行更改 - 您還可以在編寫CSV時將其更改。 – dash 2012-02-22 10:55:24

+0

我通過在記事本中打開它來查看CSV文件,並顯示爲100英鎊!沒有'Â'。我可以通過編碼做些什麼,然後在Excel中顯示相同的內容? – Curt 2012-02-22 10:59:25

回答

10

您的源字符串編碼很可能與輸出編碼不匹配。在寫出客戶端之前設置內容編碼,以避免產生您觀察結果的編碼更改。

您可以通過設置Response.ContentEncoding;例如:

Response.ContentEncoding = System.Text.Encoding.GetEncoding(1252); 

會給你Windows 1252代碼頁。您也可以使用UTF-8和ISO 8559-1,或者其他任何您想要的編碼。

您還可以通過在你的web.config使用globalization元素在你的應用程序中設置此一致。