2012年5月21日 星期一

Asp 中強迫輸出 BOM 字元的方式

做了一個匯出資料的功能, 但產生出來的 Utf-8 編碼 csv 檔, 用 Excel 檔開啟都會是亂碼, 他應該是誤以為是 ANSI 格式, 這次的目的是要讓 Excel  正常開啟 Utf-8 編碼 csv 檔.


如果是 asp.net 的話可以透過:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF }); 
}


來產生, utf-8 識別用的(BOM)字元.


如果是  php 的話, 就是:
fwrite($fp, "\xEF\xBB\xBF".$output)


如果是 asp 的話, 可以透過下列的函數來丟出 BOM 字元,

sub SendHex(valHex)
    for cHex = 1 to Len(valHex) step 2
        Response.BinaryWrite ChrB(CByte("&H" & Mid(valHex,cHex,2)))
    next
end sub

我比較建議使用下面這個方法:

    Response.CodePage = 65001
    Response.BinaryWrite(chrb(239))
    Response.BinaryWrite(chrb(187))
    Response.BinaryWrite(chrb(191))



另一個解法是透過 Server.CreateObject("ADODB.Stream") 物件來增加(或移除) BOM 字元, 參考看看: http://www.andmm.cn/post/48.html


我是透過ADODB.Stream 來處理, 最後用 Excel 開啟 csv 檔就正常了.

沒有留言:

張貼留言

Facebook 留言板