页面

2010年3月22日

如何改变ASP导出CSV的文件编码

整套程序都是utf-8编码
@ LANGUAGE = VBScript CodePage = 65001
Session.CodePage = 65001 
...

导出csv
Response.Buffer = true
response.contentType = "text/csv" 
response.addheader "Content-Disposition", "attachment; filename="& filename &".csv"

导出正常,且文件编码是utf-8

如果我想导出为unicode编码改如何操作,加了Response.charset = "utf-16" 也没有效果

原先UTF-8不能去掉,也就是我可以导出UTF-8格式,也可以导出Unicode格式




VBScript code

<%@ language="VBScript" codepage="65001" %>
<object progid="ADODB.Stream" id="s" runat="Server"></object>
<%
' Response.CodePage = 1200
' 本来尝试指定 Response.CodePage, 但发现不被 IIS 支持
' 故使用 ADODB.Stream 把字符串编成 byte() 后 BinaryWrite 出去


Response.CharSet  = "Unicode"

Response.Buffer = True 
Response.ContentType = "text/csv"
Response.AddHeader "Content-Disposition", "attachment; filename=abc.csv"

Sub Write(str)
    s.Type = 2
    s.Charset = "Unicode"
    s.Open
    s.WriteText str
    s.Position = 0
    s.Type = 1
    Response.BinaryWrite s.Read(-1)
    s.Close
End Sub

Write "A" & Chr(9) & "B" & Chr(9) & "C" & Chr(9) & "D" & Chr(9) & "E" & Chr(9) & "F" & vbCrLf
Write "文字" & Chr(9) & "汉字" & Chr(9) & "Character" & Chr(9) & "as!@##$$%^^&*" & Chr(9) & ""","""",abc""" & Chr(9) & "哈哈"

%>

没有评论: